PHP2Shell:从OOM到RCE的完整利用链

PHP2Shell Deep Dive

PHP2Shell:从OOM到RCE的完整利用链

我厌倦了那些只停留在表面的PHP漏洞分析,于是决定深入源码,亲手拆解CVE-2026-109618与CVE-2026-109619的利用全过程。这篇文章将带你从内存分配基础讲起,剖析PHP Worker进程中Stale Pointer的产生机制,详解如何通过OOM触发Use-After-Free,进而伪造zend_string结构体。我们将一步步构建攻击请求,利用Heap Grooming技术定位内存槽位,绕过ASLR泄露代码指针,最终通过伪造HashTable劫持pDestructor实现远程代码执行。即使你只有基础的C语言知识,也能跟随我的实验步骤,理解这场从内存泄漏到系统沦陷的完整攻防战。

我不只想解释发生了什么,更要揭示它为何发生以及具体是如何发生的。
  1. djad04

    这篇文章是我写的。我最初自己尝试提交到这里,但没什么运气,所以很高兴看到有人分享!谢谢你把它带到这里。

    另外,如果谁有针对该特定版本的另一个可用 PoC,如果能分享的话我会非常感激。因为观察这个漏洞利用的工作原理,它做了一些我在其他版本的其他解决方案中从未见过的事情:其他方案都没有通过 resize(键“1050”被发送了两次)来占据位置,然后让下一个字段(“1999”)的中间缓冲区落入该处。这是我见过的唯一使用这种重复键的方法。

    我想知道是否有更直接的方法来达到同样的效果,就像其他版本的解决方案那样。如果有的话,我认为基于内存操作本身而非如何到达目标来比较不同方法的可靠性会很有趣。

  2. t1234s

    最令人印象深刻的是将这个漏洞利用与另一个 Linux 漏洞利用串联起来,从而获取 root 权限。

    这将载入史册的一周。

同日更多故事

2026-11-10