PHP2Shell: Ein veralteter Zeiger führt von einem Out-of-Memory-Fehler zur Remotecodeausführung
PHP2Shell Deep Dive

Eine detaillierte technische Analyse der CVEs 2026-109618 und 2026-109619 zeigt, wie ein Use-After-Free im Zusammenspiel von PHP-Sessions und dem Out-of-Memory-Handler des Zend Engine entsteht. Der Autor erklärt Schritt für Schritt, wie sich mit manipulierten HTTP-Anfragen Heap- und Code-Pointer leaken lassen, wie gefälschte zend_string- und HashTable-Strukturen den pDestructor-Hijack ermöglichen und warum die Attacke auf echten Produktionsservern deutlich schwieriger ist.
Der Angreifer kann nur beeinflussen, was in dem freigegebenen Speicherplatz landet.
- djad04
Ich bin derjenige, der das geschrieben hat. Ich habe ursprünglich selbst versucht, es hier einzureichen, aber ohne viel Glück, also freut es mich zu sehen, dass jemand anderes es geteilt hat! Danke, dass du es hierher gebracht hast.
Außerdem, falls jemand einen anderen funktionierenden PoC für genau diesen Build hat, würde ich mich wirklich freuen, wenn er ihn teilen könnte, denn wenn ich mir ansehe, wie der Exploit funktioniert, macht er etwas, das bei keiner anderen Lösung gemacht wird, die ich für andere Builds gefunden habe; keine von ihnen hält die Stelle mit einem Resize (der Key "1050" wird zweimal gesendet) und lässt dann einen Zwischenpuffer aus dem nächsten Feld ("1999") dorthin fallen. Es ist der einzige Ansatz, den ich gesehen habe, der einen wiederholten Key wie diesen verwendet.
Ich frage mich, ob es einen direkteren Weg gibt, das zu erreichen, wie in den Lösungen für andere Builds. Wenn es einen gibt, fände ich es interessant, die Zuverlässigkeit der verschiedenen Ansätze anhand der Speichermanipulation selbst zu vergleichen, statt anhand der Frage, wie sie das Ziel erreichen.
- coderintherye
Toller Writeup! Nimm dir Zeit dafür, um wirklich tief einzusteigen.
- int122
Am Ende waren es 25 GB RAM-Nutzung in Firefox beim Lesen dieser Seite. Was ist da los.