首页
社区
课程
招聘
[翻译]CVE-2017-12628漏洞分析
发表于: 2017-11-24 11:21 5001

[翻译]CVE-2017-12628漏洞分析

2017-11-24 11:21
5001

关键词: Apache James ,BaRMIe ,CVE-2017-12628,反序列化,JMX,远程方法调用,RMI   


        早上我看的一篇微博提到了“Apache James 3.0.1 JMX服务器反序列化”漏洞,即CVE-2017-12628。该漏洞引起了我的注意,因为我曾写过一个通用JMX反序列化漏洞利用的文章,并将该漏洞用于RMI(Java的远程方法调用)攻击工具“BaRMIe”。快速查找更多的漏洞细节后,找到一篇安全发布公告,称该漏洞只能用于本地提权,且提到了一个库的更新。这引发了我更多的兴趣,因为JMX使用RMI,而即使绑定了本地主机的RMI对象仍然可以远程访问,因为Java中将这些对象绑定到“0.0.0.0”。BaRMIe工具就是利用这种本地端口转发来攻击绑定到本地或网络IP地址的对象。


分析

        我安装了一个虚拟机运行Apache James 3.0.0(3.0.1版本已经修复该问题),首先引起我注意的是文件“libs\commons-collections-3.2.1.jar”。使用ysoserial生成一个POP工具链,利用这个库通过反序列化执行任意命令。

        运行“bin/run.sh”命令启动James服务器,在虚拟机中用netstat命令以及在我的主机上用nmap命令,找到在VM上有一个java RMI端口在对外监听。

        使用BaRMIe的攻击模式,加上通用的JMX漏洞利用和Commons Collections 3.2.1 Payload,我们可以利用该服务运行任意命令来实现本地提权。此外,如果服务器使用过时的Java运行环境(版本<=6u131, 7u121, 或8u112),那么可以利用ysoserial RMI注册表漏洞进行攻击。


远程利用漏洞

        安全发布公告称该漏洞只能用于本地提权。然而,因为JMX对象是暴露在外部的,所以我想该漏洞一定可以远程利用。

        在继续下面的内容之前,我想说明的是,虽然该漏洞可以远程利用,但是涉及一个重要的基于网络的暴力破解攻击。

        为了生成一个快速有效的PoC(proof of concept)模型,我在虚拟机中用tcpdump命令来捕获JMX对象服务的流量,同时用“touch fooobaaar”命令运行BaRMIe JMX漏洞利用。


        在我的主机中使用了一个快速有效的Python脚本来重放攻击的数据包。

        在我的主机上远程回放本地攻击是成功的,证明可以远程利用该漏洞。

        


        然而正如我怀疑的那样,重启Apache James服务后该PoC不能用了。我捕获了更多的数据包进行比较和测试,发现漏洞利用中第三个传出的数据包有所不同。该数据包的前27字节如下所示:

        


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//