[翻译]CVE-2017-12628漏洞分析
关键词: 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端口在对外监听。
C:\Tools\Nmap>nmap.exe -sV --version-all -p33148,46299 192.168.174.40 Starting Nmap 7.31 ( https://nmap.org ) at 2017-10-22 12:37 GMT Daylight Time Nmap scan report for 192.168.174.40 Host is up (0.00076s latency). PORT STATE SERVICE VERSION 33148/tcp open rmiregistry Java RMI 46299/tcp open tcpwrapped
注意:上传附件及图片大小不得大于30M。
⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。
