针对严重的 PHP session.upload_progress 漏洞(CVSS v4.0 9.2)的独立安全研究。
作者: Qi Deng (@ikow)
日期: 2026-10-21
完整报告: qideng.substack.com
PHP 核心 session.upload_progress 处理器中存在两个严重的预认证 RCE 漏洞,影响 PHP 5.4.0 至 8.5.x。本仓库包含用于授权安全测试的验证 POC 和实验环境搭建。
| 攻击链 | 类型 | 条件 | 验证状态 |
|---|---|---|---|
| 会话文件注入 + LFI | 逻辑缺陷 | upload_progress=On(默认)+ 应用 LFI | ✅ RCE |
| var_destroy UAF → 处理器覆写 | 内存破坏 | unserialize() + /proc/self/mem | ✅ ASAN + RCE |
处理器不匹配 → __destruct | 反序列化 | 跨目录处理器不匹配 + POP gadget | ✅ RCE |
session.use_only_cookies(PR #22113)var_destroy __destruct 重入 UAF — 经 ASAN 确认的堆释放后使用(heap-use-after-free)PS(serializer) 在 RSHUTDOWN 中未被重置 — FPM 中跨请求的序列化器泄漏__destruct 在解码失败时触发 — 通过处理器不匹配 + 尾部数据实现对象注入poc/
verify_session_injection.py — Verify filename injection into session files
verify_uaf_asan.php — Trigger ASAN heap-use-after-free (var_destroy)
verify_handler_mismatch.py — Verify handler mismatch → object deserialization
lab/
docker-compose.yml — PHP 8.2.34 FPM + nginx lab environment
Dockerfile — Vulnerable PHP build
php.ini — Lab configuration
setup.sh — One-click lab setup
docs/
ANALYSIS.md — Full technical analysis
# Start the lab
cd lab && ./setup.sh
# Verify session injection
python3 poc/verify_session_injection.py --target http://127.0.0.1:18080
# Verify UAF (requires ASAN build)
docker exec php-asan-lab php poc/verify_uaf_asan.php
# Verify handler mismatch
python3 poc/verify_handler_mismatch.py --target http://127.0.0.1:18080
session.upload_progress 的版本); Immediate mitigation (does NOT fix all attack paths)
session.upload_progress.enabled = Off
session.use_only_cookies = On
本研究仅用于授权安全测试和教育目的。请勿对您不拥有或未获得明确授权测试的系统使用。
MIT