██████╗ ██╗ ██╗██████╗ ██████╗ ███████╗██╗ ██╗███████╗██╗ ██╗ ██╔══██╗ ██║ ██║██╔══██╗╚════██╗██╔════╝██║ ██║██╔════╝██║ ██║ ██████╔╝ ███████║██████╔╝ █████╔╝███████╗███████║█████╗ ██║ ██║ ██╔═══╝ ██╔══██║██╔═══╝ ██╔═══╝ ╚════██║██╔══██║██╔══╝ ██║ ██║ ██║ ██║ ██║██║ ███████╗███████║██║ ██║███████╗███████╗███████╗ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚══════╝╚═╝ ╚═╝╚══════╝╚══════╝╚══════╝
PHP 会话上传进度远程代码执行漏洞利用(CVE-2026-109618)
CVE-2026-109618 是 PHP 引擎中与通过会话进行文件上传进度跟踪(session.upload_progress)相关的一个严重内存破坏与逻辑漏洞。
该缺陷在于:外部指针 post_bytes_processed 在请求的第一阶段(FILE_START)被缓存,而在后续的上传事件中未能正确刷新。通过结合竞态条件、Hash 树的破坏性释放(HashTable.pDestructor = zval_ptr_dtor),以及使用填充结构(t[] 紧凑自然表)进行受控堆喷射,可以覆盖引擎内部函数指针(例如 zend_call_function),从而将执行流重定向到 system() 并执行任意命令。
该工具需要 rich 库来渲染控制台界面、横幅和交互面板。
git clone [https://github.com/Ghxstsec/php2shell-poc.git](https://github.com/Ghxstsec/php2shell-poc.git)
cd php2shell-poc
安装所需的依赖项
pip install -r requirements.txt
(或者直接:pip install rich)
🚀 用法与示例
使用针对目标系统的适当参数运行脚本:
python3 php2shell.py -u "[https://target-domain.com/path/index.php](https://target-domain.com/path/index.php)" -c "uname -a; id"
命令行选项 参数 描述 默认值 -u, --url 存在漏洞的 PHP 端点的完整 URL 必填 -c, --command 在操作系统上执行的命令 uname -a; id; echo JACKALPOC --sid 自定义会话标识符(PHPSESSID) a1b2c3d4e5f6a7b8c9d0e1f2a3 --stall 停顿持续时间(秒) 1.35 --dtor 泄漏的 zval_ptr_dtor 内存地址(十六进制/整数) 0 --call zend_call_function 的显式内存地址 通过偏移量计算 --dry 模拟模式:生成二进制载荷并保存到磁盘 False 🛠️ 技术细节
堆喷射:利用一个包含 149 个元素的块(带有 320 字节 bin 的紧凑自然表)来确保复用已释放的内存块。
SAPI 支持:专为在 CGI/FastCGI 架构及兼容的前端服务器(如 LiteSpeed LSAPI / Apache / Nginx)下评估的环境而设计。
试运行:允许使用 --dry 标志转储所生成 multipart 载荷的精确字节流,以便进行取证分析或调试。
🛠️ 技术细节
受影响版本:PHP 5.4 至 PHP 8.x(PHP 维护者为 8.2、8.3、8.4 和 8.5 发布了补丁)。
堆喷射:利用一个包含 149 个元素的块(带有 320 字节 bin 的紧凑自然表)来确保复用已释放的内存块。
SAPI 支持:专为在 CGI/FastCGI 架构及兼容的前端服务器(如 LiteSpeed LSAPI / Apache / Nginx)下评估的环境而设计。
试运行:允许使用 --dry 标志转储所生成 multipart 载荷的精确字节流,以便进行取证分析或调试。
📦 requirements.txt 文件
rich>=13.0.0
urllib3>=1.26.0
⚠️ 法律声明(免责声明)
本软件仅为教育目的、安全研究和经授权的审计用途(渗透测试)而创建。作者(Ghxstsec)对在未经授权的系统上不当使用本脚本所造成的误用或损害不承担任何责任。