Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
php2shell-deep-dive — Ausführliche technische Erläuterung von PHP2Shell: Verkettung zweier PHP-Core-CVEs – von einem Out-of-Memory-Absturz und Use-after-free über Heap Grooming und ASLR-Leaks bis hin zur Remote-Code-Execution. | Kitploit
Tools/GitHubGitHub/djad04/php2shell-deep-dive
SpeicherforensikSchwachstellenanalyseExploitationReverse EngineeringWebanwendungs-ExploitationCTFPapers & ForschungLernen & BildungBinary-Exploitation
GitHubdjad04/php2shell-deep-dive

php2shell-deep-dive

Ausführliche technische Erläuterung von PHP2Shell: Verkettung zweier PHP-Core-CVEs – von einem Out-of-Memory-Absturz und Use-after-free über Heap Grooming und ASLR-Leaks bis hin zur Remote-Code-Execution.

63vor 5 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigenWebseite

Ich habe diese Recherche am 26. Oktober 2026 begonnen und bin mir noch nicht ganz sicher, wann ich sie abschließen werde.

Zum Zeitpunkt des Verfassens gibt es noch sehr wenige Informationen über PHP2Shell, insbesondere was eine detaillierte technische Analyse der Schwachstellen und des Ausnutzungsprozesses betrifft.

Ehrlich gesagt wurde ich es leid, Erklärungen zu finden, die nur an der Oberfläche kratzten, ohne tatsächlich zu zeigen, was intern vor sich ging. Ich wollte etwas anderes machen: eine ordentliche, tiefgehende technische Abhandlung, die den gesamten Prozess untersucht, jedes wichtige Detail beleuchtet und nicht nur erklärt, WAS passiert, sondern WARUM und WIE es passiert.

Diese Recherche basiert auf meinem eigenen Verständnis des PHP-Quellcodes, meinen Experimenten und den Untersuchungen, die ich durchgeführt habe, während ich versucht habe, diese Schwachstellen zu verstehen. Ich wollte all diese Puzzleteile zusammenfügen, meine Erkenntnisse teilen und hoffentlich einige der zugrunde liegenden Konzepte für andere leichter verständlich machen.

Eines meiner Hauptziele war es, dies zugänglich zu machen, ohne die technische Tiefe zu opfern. Ich möchte, dass jemand mit grundlegenden C-Kenntnissen und allgemeiner Programmiererfahrung folgen kann, auch ohne vorherige Erfahrung mit Low-Level-Speicherausnutzung.

Ich hoffe auch, dass diese Recherche dazu beitragen kann, einige Dinge zu klären, die derzeit schlecht erklärt oder missverstanden werden. Ich möchte jedoch transparent sein: Dies ist mein eigenes technisches Verständnis der Schwachstellen, keine offizielle Analyse oder eine unfehlbare Referenz. Ich lerne noch, untersuche und verbinde selbst die Zusammenhänge. Es kann Fehler, Ungenauigkeiten oder Dinge geben, die ich unterwegs missverstanden habe.

Wenn dir etwas Falsches auffällt, du eine andere Interpretation hast oder denkst, dass etwas weiter untersucht werden sollte, zögere bitte nicht, mich zu kontaktieren. Ich würde mich aufrichtig über Korrekturen, Diskussionen und Beiträge freuen, die dazu beitragen könnten, diese Recherche genauer und für alle nützlicher zu machen.

Schließlich geht es beim Teilen all dessen darum, gemeinsam zu lernen und mehr Menschen zu helfen zu verstehen, was tatsächlich unter der Haube passiert.


Schnellnavigation

Kennst du die Grundlagen bereits?? Springe direkt zu dem Teil, der dich interessiert:

  • Bevor wir beginnen: Stack vs. Heap, Grundlagen der Speicherzuweisung
  • Wie ist das gefährlich?: die Geschichte des veralteten Zeigers, UAF-Lese- und Schreibzugriffe
  • Der veraltete Zeiger: woher er kommt: die UAF-Ursprungsgeschichte innerhalb der Interaktion von PHPs Session und OOM
  • Den Angriffsrequest erstellen: der eigentliche HTTP-Request, der den OOM auslöst
  • Das Ziel: was wir leaken müssen und warum (Heap-Zeiger + Code-Zeiger)
  • Die Zielstruktur: zend_string: die Struktur, die PHP beim Erstellen des Session-Cookies liest
  • Den Speicher zurückgewinnen: Request #2 und die Zielstruktur zend_string
  • Heap-Grooming im Detail: wie wir gefälschte Daten genau in den richtigen Speicherslot positionieren
  • Das Rätsel um multipart_buffer_read_body: die versteckte Allokation, die mich fast um den Verstand gebracht hätte
  • Zwei Leaks, nicht einer: warum der Heap-Leak und der Code-Leak unterschiedliche Kalibrierungen erfordern
  • Code-Leak (Phase 3): einen Funktionszeiger leaken, um ASLR zu umgehen
  • Fingerprinting: wie wir wissen, dass wir den richtigen Zeiger erwischt haben
  • Den Heap-Leak auswerten: die Chunk-Basis in 256 Bytes Chaos finden
  • Die 1+8-Pipeline: wie beide Leaks tatsächlich ausgeliefert werden
  • Den Allocator wiederverwenden, um eine Struktur zu fälschen: die Idee des pDestructor-Hijacks
  • Der Auslöser: PHP erledigt die Drecksarbeit, echter zend_hash_destroy-Code
  • Drei Strukturen in einer: ForgedArray + FakeExecuteData + FakeString in 384 Bytes
  • Finale Payload (Phase 4): eine HashTable fälschen, um pDestructor zu hijacken und RCE zu erlangen
  • Der Primer-Mechanismus: wie der Geist des freigegebenen Primers in bucket[2] die Destruktionskette auslöst
  • Trick zur Befehlsausgabe: den eigenen TCP-Socket in /proc finden
  • Die vollständige Pipeline: alle vier Phasen von Anfang bis Ende
  • Kalibrierung für einen anderen Build: wie jede Zahl aus der Heap-Analyse eines bestimmten PHP-Builds stammt
  • Reibung in der realen Welt: warum dieser Angriff auf einem echten Produktionsserver deutlich schwieriger ist
  • Steal My Bitcoin CTF: die Challenge, mit der alles begann
  • Danksagungen: Credits und Referenzen

Wenn du neu in der Heap-Exploitation bist oder das volle Erlebnis willst, scroll einfach weiter. Ich habe das zum Lesen von Anfang bis Ende geschrieben.


Bevor wir beginnen

Es gibt ein paar Dinge, die jeder im Hinterkopf behalten sollte, bevor wir loslegen. Sie werden besonders nützlich, während wir durch die Forschung fortschreiten. Wie ich bereits erwähnt habe, möchte ich, dass dieser Walkthrough für alle zugänglich ist, also nehme ich mir die Zeit, auch die grundlegenderen Konzepte zu erklären. Wenn du damit bereits vertraut bist, kannst du gerne vorspringen!

Stack vs. Heap

In einem typischen Programm ist der Speicher in verschiedene Bereiche organisiert, darunter der Stack und der Heap.

Zum Beispiel in C++:

int main() {
    int a = 30;       // Typically stored on the stack
    int* b = new int(30);  // b is typically on the stack,
                           // but the integer it points to is on the heap
}

Hier ist a eine lokale Variable, die den Wert 30 enthält. Der Zeiger b ist ebenfalls eine lokale Variable, aber er enthält die Adresse einer Ganzzahl, die auf dem Heap alloziert wurde.

Wie die Speicherallokation funktioniert

PHP ist hauptsächlich in C geschrieben, daher müssen wir verstehen, wie die Speicherallokation funktioniert.

Das Betriebssystem stellt einem Prozess einen eigenen virtuellen Adressraum zur Verfügung. Der Speicherallokator des Prozesses verwaltet dann Allokationen innerhalb des ihm zur Verfügung stehenden Speichers.

In C++ haben wir beispielsweise new, malloc() und andere Möglichkeiten, Speicher zu allozieren.

Allokatoren versuchen oft, freigegebenen Speicher wiederzuverwenden, anstatt jedes Mal neuen Speicher vom Betriebssystem anzufordern.

Tool herunterladen