Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
php-oom-longjmp — PHP 8.4.26 - 严重 - 远程 - OOM longjmp - CVE-2026-109618 PHP2Shell。未经身份验证的分块 multipart 请求在 Apache mod_php 上于应用代码执行前触及 memory_limit。实验环境对比 8.4.27。公告推断为 RCE。 | Kitploit
工具/GitHubGitHub/abraxas/php-oom-longjmp
内存取证漏洞分析漏洞利用Web应用程序漏洞利用Web安全学习与教育实验室与实践
GitHubabraxas/php-oom-longjmp

php-oom-longjmp

PHP 8.4.26 - 严重 - 远程 - OOM longjmp - CVE-2026-109618 PHP2Shell。未经身份验证的分块 multipart 请求在 Apache mod_php 上于应用代码执行前触及 memory_limit。实验环境对比 8.4.27。公告推断为 RCE。

查看仓库
131天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Abraxas Labs - php-oom-longjmp

php2shell - php-oom-longjmp

互联网上的任何人都能像浏览器一样与你的 PHP 站点通信,无需密码。在最后一个受影响的 PHP 版本上,他们可以发送一个精心构造的文件上传请求,使引擎在仍在读取请求时(也就是在你的应用程序启动之前)耗尽内存。PHP 随后会带着只构建了一半的请求跳出该工作。PHP Group 已表明,对这种半构建状态的清理可能演变为以 Web worker 身份执行的远程代码执行。本实验在 Apache mod_php 8.4.26 上验证了该内存耗尽跳转,并验证 8.4.27 能干净地完成同一请求。

类别: OOM longjmp / 请求启动中止 可达性: 远程

PHP 8.4.26(php:8.4.26-apache)对比已修补的 8.4.27 - php.net

Apache mod_php 始终会执行请求关闭,即使请求启动失败也是如此。CVE-2026-109618 是在 rfc1867 解析期间、当某个 HashTable 桶已经处于可被拆除的可见状态时,因 memory_limit 触发的 longjmp()。本实验是一个分块的 multipart/form-data POST,没有可用的 Content-Length,并在 memory_limit=8M 下带有约 3000 个额外的 part 头。8.4.26 返回 Fatal error: Allowed memory size ... in Unknown on line 0。8.4.27 返回存活标记并运行 index.php。触发后的 worker GET 在双方仍然返回 200。以 Apache worker 身份执行的 RCE 是根据 GHSA 推断的。

IDCVE-2026-109618
公告GHSA-w8hw-w9fx-j79w
类别OOM longjmp / 请求启动中止(RCE 为公告推断)
可达性远程(未认证 HTTP)
CWECWE-416 / CWE-824 / CWE-755
CVSS严重:9.2 CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H(PHP Group)
产品PHP
受影响PHP 8.2 低于 8.2.35、8.3 低于 8.3.36、8.4 低于 8.4.27、8.5 低于 8.5.12(实验固定 8.4.26)
已修复8.2.35 / 8.3.36 / 8.4.27 / 8.5.12(2026 年 10 月 21 日)
认证无
许可证GNU Affero GPL v3.0
实验环境仅 127.0.0.1

同类问题:CVE-2026-109619 陈旧 worker 全局 UAF(PHP2Shell 配对)。

攻击者能做什么

方法汇聚点权限
未认证的 POST multipart/form-data,带 Transfer-Encoding: chunked、大量额外 part 头、有限的 memory_limitrfc1867 解析 / php_request_startup 期间 zend_bailout longjmp可用性(实验已证): 在 8.4.26 上于 index.php 之前中止请求启动(Unknown on line 0)。完整性(推断): 关闭流程遍历半初始化的 $_POST/$_FILES;厂商展示了以 Apache worker 身份执行的 RCE(官方镜像中为 www-data)。侦察(推断): 残留请求堆信息泄露。
在 8.4.27 上触发相同条件延迟的软 OOM已关闭(实验已证): HTTP 200 存活标记,files=1,worker 保持运行。
触发后的 GETworker 仍然存活实验已证: 此固定版本未发生 SIGSEGV,也未记录 zend_mm_heap corrupted。
登录、应用路由、自定义 .so、反向 shell不适用已关闭。未尝试 RIP 控制。

实验已证 vs 推断: 8.4.26 与 8.4.27 的 OOM-longjmp 差异是实验已证的。worker 死亡 UAF 和 RCE 是根据 GHSA-w8hw-w9fx-j79w 推断的。FPM 通常在启动失败时退出子进程;厂商未针对此 CVE 展示完整的 FPM 利用。

要求: Apache apache2handler。有限的 memory_limit(不要设为 -1;那正是缓解措施)。启用 multipart 解析。官方 php:8.4.26-apache 对比 php:8.4.27-apache。

实验

python3 php-oom-longjmp-Abraxas-Labs.py

或 cd lab && ./run.sh。回环地址 127.0.0.1:18220(8.4.26)对比 127.0.0.1:18221(8.4.27)。Compose 项目 cve-2026-109618。见证 CVE-2026-109618-OOM-WITNESS。最后一行:

SUCCESS CVE-2026-109618 vuln-crash=yes patched-ok=yes sapi=apache2handler vuln-image=php:8.4.26-apache patched-image=php:8.4.27-apache how=oom-longjmp-startup-fatal trigger=header-bomb-chunked asan=no CVE-2026-109618-OOM-WITNESS

仅限授权实验室。它通过回环地址通信。

修复方案

更新至 PHP 8.4.27(或 8.2.35 / 8.3.36 / 8.5.12)。该补丁将 OOM 的 longjmp() 替换为在下一个 VM 安全点延迟触发的软 OOM,并在超过更高阈值时执行硬 _exit()(31c0ea7)。在此之前:管理员设置 memory_limit=-1,且应用程序无法覆盖;保持 post_max_size 较低;限制 multipart 部件和标头数量。不要使用 RLIMIT_AS 或 RLIMIT_DATA。

参考资料

  • php.net 2026 年 10 月 21 日安全版本
  • GHSA-w8hw-w9fx-j79w
  • CVE-2026-109618
  • php/php-src 标签 php-8.4.26 对比 php-8.4.27
  • 补丁 31c0ea7 通过 bailout 避免状态损坏
  • 相关 GHSA-6wmf-4rv5-p3rp CVE-2026-109619
  • 致谢:Calif、Wiz、OpenAI、PHP 安全团队

Abraxas Labs [email protected]

下载工具