一、漏洞简介
JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3的规范。在/invoker/readonly路径下,攻击者可以构造序列化代码传入服务器进行反序列化,由于没有对反序列化操作进行任何检测,导致攻击者可以执行任意代码。
而jboss的漏洞出现在HttpInvoker组件中的ReadOnlyAccessFilter过滤器中,源码在jboss\server\all\deploy\httpha-invoker.sar\invoker.war\WEB-INF\classes\org\jboss\invocation\http\servlet目录下的ReadOnlyAccessFilter.class文件中,其中doFilter函数代码如上。
可以看出它从http中获取数据,通过调用readobject()方法对数据流进行反序列操作,但是没有进行检查或者过滤。
二、影响版本
JBoss 5.x / 6.x
三、漏洞利用
使用这个工具
yunxu1/jboss-_CVE-2017-12149: CVE-2017-12149 jboss反序列化 可回显 (github.com)
四、漏洞修复
1、修改web.xml文件
详情看这
Jboss 反序列化(CVE-2017-12149)的复现及修复方案 - sainet - 博客园 (cnblogs.com)
2、不需要http-invoker.sar组件的直接删除
3、升级jboss到jboss7x版本