1.漏洞描述
该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中。该过滤器在没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,从而导致了漏洞。
受影响系统及应用版本 | Jboss AS 5.x JbossAS 6.x |
2.漏洞分析
环境搭建
使用的是vulhub中的环境
漏洞原理
该漏洞存在于http invoker 组件的 ReadOnlyAccessFilter 的 doFilter 中
方法中的代码在没有进行任何安全检查的情况下,将来自客户端的数据流(request.getInputStream())进行了反序列化操作(红色箭头所示),从而导致了反序列化漏洞
3.漏洞复现
首先检测目录,访问链接(http://172.20.10.7:8080/invoker/readonly)
可以看到是返回 500,一般漏洞就是存在了。
然后通过反弹shell的对该漏洞进行利用。我们使用bash来反弹shell,生成一个反弹的shell命令
进行base64的编码
接着我们使用ysoserial工具来复现生成序列化数据 https://github.com/frohoff/ysoserial
nc -lvvp 4444进行监听
将文件发送到服务器中(建议使用curl,曾经尝试使用burp发送 未成功)
成功反弹shell
也可以直接利用工具https://github.com/yunxu1/jboss-_CVE-2017-12149
4.修复措施
建议用户升级到JBOSS AS7。另,不能及时升级的用户,可采取如下临时解决方案:
1. 不需要 http-invoker.sar 组件的用户可直接删除此组件。
2. 添加如下代码至 http-invoker.sar 下 web.xml 的 security-constraint 标签中:<url-pattern>/*</url-pattern>
用于对 http invoker 组件进行访问控制。
参考文章:
http://Ta0ing.github.io/article/c3936183.html
https://www.cnblogs.com/Oran9e/p/7897102.html
CVE-2017-7504 JBoss 4.x JBossMQ JMS 反序列化漏洞
JBoss AS 4.x及之前版本中,JbossMQ实现过程的JMS over HTTP Invocation Layer的HTTPServerILServlet.java文件存在反序列化漏洞,远程攻击者可借助特制的序列化数据利用该漏洞执行任意代码。
漏洞复现操作与CVE-2017-7504的复现过程一样,远离也类似