
Python-Exploit für CVE-2026-109618: nutzt die Heap-Korruption in PHP session.upload_progress aus, um zend_call_function zu überschreiben und entfernte Befehlsausführung zu erreichen.
██████╗ ██╗ ██╗██████╗ ██████╗ ███████╗██╗ ██╗███████╗██╗ ██╗ ██╔══██╗ ██║ ██║██╔══██╗╚════██╗██╔════╝██║ ██║██╔════╝██║ ██║ ██████╔╝ ███████║██████╔╝ █████╔╝███████╗███████║█████╗ ██║ ██║ ██╔═══╝ ██╔══██║██╔═══╝ ██╔═══╝ ╚════██║██╔══██║██╔══╝ ██║ ██║ ██║ ██║ ██║██║ ███████╗███████║██║ ██║███████╗███████╗███████╗ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚══════╝╚═╝ ╚═╝╚══════╝╚══════╝╚══════╝
PHP Session Upload Progress Remote Code Execution Exploit (CVE-2026-109618)
CVE-2026-109618 ist eine kritische Speicherkorruptions- und Logikschwachstelle in der PHP-Engine im Zusammenhang mit der Verfolgung des Datei-Upload-Fortschritts über Sessions (session.upload_progress).
Der Fehler liegt darin, wie der externe Zeiger post_bytes_processed während der ersten Phase der Anfrage (FILE_START) zwischengespeichert wird und bei nachfolgenden Upload-Ereignissen nicht ordnungsgemäß aktualisiert wird. Durch die Kombination einer Race Condition, der destruktiven Freigabe von Hash-Bäumen (HashTable.pDestructor = zval_ptr_dtor) und eines kontrollierten Heap-Sprays unter Verwendung aufgefüllter Strukturen (t[] gepackte natürliche Tabellen) ist es möglich, interne Funktionszeiger der Engine (wie zend_call_function) zu überschreiben, um den Ausführungsfluss auf system() mit beliebigen Befehlen umzuleiten.
Das Tool benötigt die Bibliothek rich zum Rendern der Konsolenschnittstelle, Banner und interaktiven Panels.
git clone [https://github.com/Ghxstsec/php2shell-poc.git](https://github.com/Ghxstsec/php2shell-poc.git)
cd php2shell-poc
Installiere die erforderlichen Abhängigkeiten
pip install -r requirements.txt
(oder einfach: pip install rich)
🚀 Verwendung & Beispiele
Führen Sie das Skript mit den entsprechenden Parametern für das Zielsystem aus:
python3 php2shell.py -u "[https://target-domain.com/path/index.php](https://target-domain.com/path/index.php)" -c "uname -a; id"
Kommandozeilenoptionen Parameter Beschreibung Standardwert -u, --url Vollständige URL des verwundbaren PHP-Endpunkts Erforderlich -c, --command Befehl, der auf dem Betriebssystem ausgeführt werden soll uname -a; id; echo JACKALPOC --sid Benutzerdefinierte Sitzungskennung (PHPSESSID) a1b2c3d4e5f6a7b8c9d0e1f2a3 --stall Verzögerungsdauer in Sekunden 1.35 --dtor Preisgegebene Speicheradresse von zval_ptr_dtor (hex/int) 0 --call Explizite Speicheradresse für zend_call_function Berechnet über Offset --dry Simulationsmodus: generiert und speichert die binäre Nutzlast auf der Festplatte False 🛠️ Technische Details
Heap Spraying: Verwendet einen Block aus 149 Elementen (gepackte natürliche Tabelle mit 320-Byte-Bins), um die Wiederverwendung des freigegebenen Speicherblocks sicherzustellen.
SAPI-Unterstützung: Konzipiert für Umgebungen, die unter CGI/FastCGI-Architekturen und kompatiblen Front-End-Servern (wie LiteSpeed LSAPI / Apache / Nginx) evaluiert werden.
Dry Run: Ermöglicht das Ausgeben des exakten Byte-Streams der generierten Multipart-Nutzlast zur forensischen Analyse oder Fehlersuche mithilfe des Flags --dry.
🛠️ Technische Details
Betroffene Versionen: PHP 5.4 bis PHP 8.x (Patches von den PHP-Maintainern für 8.2, 8.3, 8.4 und 8.5 veröffentlicht).
Heap Spraying: Verwendet einen Block aus 149 Elementen (gepackte natürliche Tabelle mit 320-Byte-Bins), um die Wiederverwendung des freigegebenen Speicherblocks sicherzustellen.
SAPI-Unterstützung: Konzipiert für Umgebungen, die unter CGI/FastCGI-Architekturen und kompatiblen Front-End-Servern (wie LiteSpeed LSAPI / Apache / Nginx) evaluiert werden.
Dry Run: Ermöglicht das Ausgeben des exakten Byte-Streams der generierten Multipart-Nutzlast zur forensischen Analyse oder Fehlersuche mithilfe des Flags --dry.
📦 requirements.txt-Datei
rich>=13.0.0
urllib3>=1.26.0
⚠️ Rechtlicher Hinweis (Haftungsausschluss)
Diese Software wurde ausschließlich für Bildungszwecke, Sicherheitsforschung und autorisierte Auditierungsnutzung (Pentesting) erstellt. Der Autor (Ghxstsec) übernimmt keine Verantwortung für Missbrauch oder Schäden, die durch die unsachgemäße Verwendung dieses Skripts auf nicht autorisierten Systemen entstehen.