
Zammad의 CVE-2026-102489에 대한 개념 증명 익스플로잇: WebSocket 세션 누출을 인증된 세션 하이재킹 및 비인증 원격 코드 실행으로 연계합니다.
이 저장소에는 Zammad의 인증되지 않은 원격 코드 실행 취약점인 CVE-2026-102489에 대한 개념 증명(proof of concept)이 포함되어 있습니다. 이 익스플로잇은 WebSocket 정보 노출 결함을 인증된 세션 탈취 및 zammad OS 사용자 권한으로의 임의 명령 실행으로 연계합니다.
Sessions::Event::Base는 run() 메서드가 없는 유효한 Ruby 상수입니다. WebSocket 엔드포인트를 통해 {"event":"base"}를 전송하면 NoMethodError가 발생하며, 그 메시지에는 전체 receiver inspect가 포함됩니다. 여기에는 연결된 모든 사용자의 요청 컨텍스트(그들의 Cookie 헤더 포함)에 대한 실시간 맵인 @clients가 들어 있습니다.
이 PoC는 이 유출을 활용하여 다음을 수행합니다:
@clients 노출을 통해 연결된 사용자로부터 유효한 _zammad_session 쿠키를 수집합니다.근본 원인, 익스플로잇 및 침해 지표를 다루는 기술 분석은 Horizon3.ai 공격 연구 블로그에서 확인할 수 있습니다:
https://horizon3.ai/attack-research/disclosures/cve-2026-102489-zammad-session-leak-rce/
% python3 CVE-2026-102489.py -h
usage: CVE-2026-102489.py [-h] -u URL [-c COMMAND] [--out-file OUT_FILE]
options:
-h, --help show this help message and exit
-u URL, --url URL The base URL of the target
-c COMMAND, --command COMMAND
Command to execute on the target
--out-file OUT_FILE Output file path on the target (default:
/tmp/zammad_rce.txt)
기본 id 명령으로 실행:
python3 CVE-2026-102489.py -u http://zammad.example.com
임의 명령 실행:
python3 CVE-2026-102489.py -u http://zammad.example.com -c 'id'
참고: 정보 노출이 발생하려면 익스플로잇 시점에 최소 한 명의 인증된 사용자가 WebSocket 엔드포인트에 연결되어 있어야 합니다.
"이 소프트웨어는 순전히 학술 연구 및 효과적인 방어 기법 개발 목적으로 제작되었으며, 명시적으로 승인된 경우를 제외하고 시스템을 공격하는 데 사용되어서는 안 됩니다." 프로젝트 유지 관리자는 오용에 대해 어떠한 책임도 지지 않습니다. 책임감 있게 사용하십시오.