相信大家经常会遇到java_rmi反序列化,但使用MSF和attackRMI都无法验证漏洞的情况,本次就针对该种情况进行简单的讨论。
试用环境:vulhub
首先我们使用attackRMI,可见无法利用。
然后我们使用msf,依然没有复现。
Nmap提供给我们脚本,我们使用nmap进行检测。如下图所示,nmap检测出了漏洞,但这种办法没有一个直观的效果,所以需要进一步的研究。
下面我们用ysoserial进行测试,通过命令执行在tmp目录下创建一个文件。本次我们创建一个为123的文件。
此时我们进入docker进行检查是否成功创建,发现123已经被创建了。
故即使MSF和attackRMi无法检测出存在反序列化,nmap可以检测出反序列化,我们仍可以通过该种方式进行利用。但我们在检查的过程中是无法登入其主机去查看是否创建文件成功的,所以我们需要换一种方式进行检测。
我们可以通过让其执行ping命令来检测。此时我们使用CECY的DNS Query模块。
此时我们将命令换为ping,同时查询DNS日志。
可以发现我们收到了来自服务器的ping
这种方法便可以不用登录服务器便对其进行检测。但我们检查时都是内网,无法访问外网,且内网不存在DNS服务器,故不能使用该种办法进行检测。此时我们换一个思路进行检测。
此时我们使用本机和一台虚拟机模拟内网环境进行漏洞的复现。
漏洞环境依旧为docker搭建的jmeter,攻击机为kali。
靶机地址:192.168.1.65
攻击机地址:192.168.1.66
我们可以在kali里搭建一个web服务,通过让漏洞靶机访问该web,我们获取访问日志,进行检测。
我们使用python简单的搭建一个web服务器,命令如下:
python -m SimpleHTTPServer 8081
此时我们将攻击的命令替换为curl
之后检测web服务器日志,可见我们收到靶机访问的日志
由此我们可以得出该反序列化漏洞切实存在。
总结:
在检查时,如果发现java_rmi服务,msf和attackRMI工具均无法利用的情况,我们可以使用nmap加载脚本进行检测,如果nmap发现存在漏洞,我们可以通过ysoserial按照最后的办法,搭建一个web服务器让其访问web服务器,我们通过查询日志可知漏洞切实存在。
不足:
其实漏洞文档给出的利用方式还有一种反弹shell的方式,但本人反弹多次均无果,故舍近求远用了一种笨方法进行检测。如果各位能够提供关于反弹shell的姿势,不胜感激!!!
原文始发于微信公众号(CTS纵横安全实验室):Jmeter RMI 反序列化命令执行漏洞(CVE-2018-1297)浅析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论