Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
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.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2024-12877-Exploit — Lehrreiche CVE-2024-12877 Exploit-Demo für PHP Object Injection im GiveWP WordPress-Plugin. Enthält Ursachenanalyse, Regex-Bypass-Techniken und sichere Exploitation-Praktiken. | Kitploit
Tools/GitHubGitHub/soltanali0/cve-2024-12877-exploit
Statische AnalyseSchwachstellenanalyseCode-AnalyseExploitationWebanwendungs-ExploitationCTFPenetrationstestsLernen & BildungPayload-Entwicklung

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
GitHubsoltanali0/cve-2024-12877-exploit

CVE-2024-12877-Exploit

Lehrreiche CVE-2024-12877 Exploit-Demo für PHP Object Injection im GiveWP WordPress-Plugin. Enthält Ursachenanalyse, Regex-Bypass-Techniken und sichere Exploitation-Praktiken.

Repository anzeigen
1vor 11 MonatenNoch nicht geprüft

GO-TO CVE – CVE-2024-12877-Exploit

Woche 66 | Autor: Ali Soltani (soltanali0)

Willkommen zur Woche 66 der GO-TO CVE-Reihe, in der wir Schwachstellen zerlegen, Grundursachen analysieren und praktische Exploitationstechniken in einem sicheren, lehrreichen Kontext demonstrieren.


🚨 Übersicht

CVE-2024-12877 ist eine PHP-Object-Injection-Schwachstelle in GiveWP, einem der am weitesten verbreiteten WordPress-Spenden-Plugins. Die unsichere Verwendung von unserialize() auf benutzergesteuerte Eingaben ermöglicht Angreifern, PHP-Magic-Methods (wie __wakeup()) auszulösen, was potenziell zu Folgendem führen kann:

  • Remote Code Execution (RCE) ⚡
  • Diebstahl sensibler Daten 🕵️‍♂️
  • Privilege Escalation 🔑
  • Vollständige Serverkompromittierung ☠️

CVSS: 9.8 Kritisch | Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H


🧩 Über GiveWP

Bild

GiveWP betreibt tausende von Wohltätigkeits-Websites, NGOs und Fundraising-Plattformen. Da es sensible Finanz- und Spenderdaten verarbeitet, ist eine Schwachstelle hier sehr folgenreich. Ein Angreifer, der eine Object Injection ausnutzt, kann von einem einzelnen Plugin aus die gesamte WordPress-Installation und den zugrunde liegenden Server kompromittieren.


⚙️ Schwachstellendetails

  • Grundursache: unserialize() auf nicht vertrauenswürdigen Eingaben.

  • PHP-Magic-Methods: PHP ruft diese automatisch während des Objektlebenszyklus auf:

  • Die Schwachstelle entsteht durch die unsichere Verwendung der PHP-Funktion unserialize() auf benutzergesteuerte Eingaben. Während unserialize() dazu entwickelt wurde, PHP-Datenstrukturen wiederherzustellen, hat es eine gefährliche Nebenwirkung: Wenn Objekte rekonstruiert werden, ruft PHP automatisch Magic-Methods auf.

Magische Methoden in PHP

  • __wakeup() – wird ausgelöst, wenn ein Objekt unserialisiert wird

  • __destruct(), __toString(), __get/__set(), __call/__callStatic() – können für böswillige Ausführung genutzt werden

  • Regex-Validierung: GiveWP implementierte Regex-Prüfungen, um serialisierte Eingaben zu erkennen. Während der neue Regex mehr Datentypen erfasst, kann Regex eine Object Injection nicht zuverlässig verhindern.

Bild

Wesentliche Erkenntnis:

Mit einem manipulierten serialisierten Objekt setzt der Angreifer Objekteigenschaften, und PHP selbst führt die Logik des Angreifers aus, indem es die Magic-Methods aufruft.

Regex-Validierung

GiveWP implementierte eine regex-basierte Validierung, um zu prüfen, ob eine Eingabe serialisiert war. Alter Regex (unvollständig)

• Erkannte nur Arrays und Objekte.

• Andere serialisierte Typen (string, int, bool, float, null) umgingen die Erkennung.

carbon

Neuer Regex (verbessert, aber fehlerhaft)

• Erkennt alle PHP-serialisierten Typen.

• Blockiert einige triviale Payloads.

• Aber das Kernproblem bleibt: Wenn unserialize() auf Benutzereingaben angewendet wird, kann Regex nicht retten.

carbon (1)

Dieses Snippet wurde geschrieben, um zwei verschiedene Regex-Implementierungen zu vergleichen:

• is_serialized_old() → die alte Version, die nur Arrays und Objekte erkennt.

• is_serialized_new() → die verbesserte Version, die alle PHP-serialisierten Datentypen erkennt (Arrays, Objekte, Strings, Integers, Booleans, Floats und Null). Wir erstellen einen Satz von Testwerten (array, object, string, integer, boolean, float, null), serialisieren sie und prüfen dann jeden gegen beide Regex-Funktionen. Einfach ausgedrückt:

Bild

Und nachdem dieser Code auf Ihrem docker ausgeführt wurde, sehen Sie dieses Ergebnis im Browser

Bild

💥 Exploit-Demo

Schritt 1

carbon (2)

Schritt 2: Erstellen einer angreifbaren Klasse

carbon (4)

Diese Klasse hat eine __wakeup()-Methode, die automatisch ausgeführt wird, wenn sie unserialisiert wird.

Schritt 3: Payload erstellen

Bild

Schritt 4: Ausgabe Nach dem Speichern der Datei kann dieser Exploit in dieser Datei gesehen werden

Bild

Exploit :

Bild

• Alter Regex: FALSE → konnte den Payload nicht erkennen.

• Neuer Regex: TRUE → erkannte ihn als serialisierte Eingabe.

• Ausführung: Hello RCE! → Der Payload wurde unserialisiert, und die Magic-Method __wakeup() führte vom Angreifer kontrollierten Code aus.

Prävention • Verwenden Sie kein unserialize() auf nicht vertrauenswürdigen Eingaben. Ersetzen Sie es durch json_decode() oder andere sicherere Alternativen.

• Halten Sie GiveWP und alle WordPress-Plugins auf dem neuesten Stand.

• Setzen Sie eine Web Application Firewall (WAF) ein, um bösartige serialisierte Payloads zu blockieren.

• Befolgen Sie das Prinzip der geringsten Privilegien: Führen Sie PHP- und Datenbankkonten mit minimalen erforderlichen Berechtigungen aus.

Ergebnisse:

  • Alter Regex: ❌ erkennt den Payload nicht
  • Neuer Regex: ✅ erkennt serialisierte Eingaben, kann RCE jedoch nicht verhindern

Wesentliche Erkenntnis: Verlassen Sie sich niemals auf Regex, um unserialize() zu sichern. Der sicherste Ansatz ist, unserialisieren nicht vertrauenswürdiger Eingaben vollständig zu vermeiden.


🛡 Prävention

  • Verwenden Sie nicht unserialize() auf nicht vertrauenswürdigen Eingaben; bevorzugen Sie json_decode() oder andere sichere Alternativen.
  • Halten Sie GiveWP und alle WordPress-Plugins auf dem neuesten Stand.
  • Setzen Sie eine Web Application Firewall (WAF) ein, um bösartige Payloads zu blockieren.
  • Wenden Sie das Prinzip der geringsten Privilegien für PHP- und Datenbankkonten an.

📱 Verfolgen Sie unsere wöchentliche CVE-Analyse

Ich betreibe zwei Telegram-Kanäle, die sich der Schwachstellenforschung und -ausnutzung widmen:

  1. GO-TO CVE Weekly Episoden: Jede Woche tauchen wir tief in eine neue CVE ein und teilen detaillierte Analysen, Demos und Erkenntnisse. 🔗 Hier beitreten

  2. CVEdb – Exploit-Archiv: Dieser Kanal archiviert 1-Day-Exploits und benutzerdefinierte PoCs für CVEs. Eine großartige Ressource für Forscher, die aktive Exploitationstechniken sehen möchten. 🔗 CVEdb beitreten

Folgen Sie den Kanälen, um auf dem Laufenden zu bleiben mit den neuesten CVEs, Exploitationstechniken und Sicherheitsforschungserkenntnissen.


📚 Referenzen

  • NVD CVE-2024-12877
  • Wordfence Analyse
  • GiveWP Quelle

⚖️ Rechtlicher Hinweis

Dieses Repository dient ausschließlich Bildungs- und Forschungszwecken. Die Ausnutzung von Schwachstellen ohne Erlaubnis ist illegal und unethisch. Der Autor ist nicht verantwortlich für Missbrauch.

Tool herunterladen