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-2025-61505 — Unsicheres Deserialisieren in e107 CMS install.php | Kitploit
Tools/GitHubGitHub/pescada-dev/cve-2025-61505
SchwachstellenanalyseCode-AnalyseExploitationWebsicherheitPapers & ForschungLernen & Bildung
GitHubpescada-dev/cve-2025-61505

CVE-2025-61505

Unsicheres Deserialisieren in e107 CMS install.php

Repository anzeigen
1vor 6 MonatenNoch 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

CVE-2025-61505 – PHP-Objekteinjektion in e107 CMS 2.x

Gemeldet: 18. September 2025
CVE zugewiesen: 9. Oktober 2025
Veröffentlicht: 2. Februar 2026
CVE-ID: CVE-2025-61505
Entdecker: Anas Abderrahman Benbarek

Zusammenfassung

Im Installationsskript (install.php) von e107 CMS Version 2.3.3 wurde eine PHP-Objekteinjektions-Schwachstelle (CWE-502: Deserialisierung nicht vertrauenswürdiger Daten) entdeckt.

Die Schwachstelle ermöglicht es nicht authentifizierten Remote-Angreifern, bösartige serialisierte Daten zu erstellen, was je nach Vorhandensein ausnutzbarer Gadget-Klassen in der e107-Codebasis oder ihren Abhängigkeiten potenziell zu beliebiger Codeausführung, Datenmanipulation oder anderen schädlichen Aktionen führen kann.

Das Problem resultiert aus der unsicheren Anwendung der PHP-Funktion unserialize() auf benutzerkontrollierte Eingaben ohne jegliche Einschränkungen (wie etwa die Option allowed_classes). Auch wenn es auf die Installationsphase beschränkt ist, stellt es während der Einrichtung auf exponierten Servern ein erhebliches Risiko dar, da das Installationsprogramm sensible Vorgänge wie das Erstellen von Datenbanken und das Schreiben von Dateien übernimmt.

Betroffene Software

  • Produkt: e107 CMS
  • Versionen: ≤ 2.3.3
  • Komponente: Installationsskript (install.php)

Details zur Schwachstelle

Der Installationsprozess von e107 CMS ist mehrstufig. Benutzereingaben (Sprache, Datenbankzugangsdaten, Administratorendaten usw.) werden über die Schritte hinweg mithilfe eines serialisierten Arrays gespeichert, das im POST-Parameter previous_steps abgelegt wird. Diese Daten werden für die Übertragung base64-kodiert und auf dem Server dekodiert/deserialisiert.

Das Kernproblem ist die direkte Übergabe dekodierter Benutzereingaben an unserialize() ohne Validierung, Bereinigung oder Klassen-Whitelisting. Dies geschieht an zwei Stellen:

1. Globaler Gültigkeitsbereich (anfängliche Override-Behandlung)

root@kitploit:~
if(isset($_POST['previous_steps']))
{
    $tmp = unserialize(base64_decode($_POST['previous_steps']));
    $override = (isset($tmp['paths']) && isset($tmp['paths']['hash'])) ? array('site_path'=>$tmp['paths']['hash']) : array();
    unset($tmp);
}

Detaillierte Analyse:

Das Skript geht davon aus, dass previous_steps vertrauenswürdige serialisierte Daten aus früheren Formularschritten enthält. Da es sich jedoch um einen einfachen POST-Parameter handelt, kann ein Angreifer ihn vollständig kontrollieren. base64_decode() wandelt die Eingabe in Binärdaten um, und unserialize() rekonstruiert daraus PHP-Objekte oder Arrays. Enthält die Eingabe Objektnotation (beginnend mit O:), instanziiert PHP diese Klassen, sofern sie im aktuellen Gültigkeitsbereich existieren oder per Autoload geladen werden. Dies kann sofort __wakeup() oder andere magische Methoden auslösen und potenziell Nebenwirkungen wie Dateischreibvorgänge oder unerwartete Datenbankaufrufe verursachen, wenn Gadget-Ketten vorhanden sind.

Hinweis zur Ausnutzbarkeit: Der Erfolg hängt von den verfügbaren Gadget-Klassen ab. Ohne diese kann sich die Auswirkung auf Abstürze oder Datenkorruption beschränken.

2. Konstruktor der e_install-Klasse (primäre Zustandswiederherstellung)

PHPif(isset($_POST['previous_steps'])) { $this->previous_steps = unserialize(base64_decode($_POST['previous_steps'])); // ... (filtering and password restoration logic) unset($_POST['previous_steps']); }

Detaillierte Analyse:

Diese Instanz ist gefährlicher, da die deserialisierten Daten Teil des Objektzustands ($this->previous_steps) werden und spätere Installationsaktionen (MySQL-Einrichtung, Erstellung des Administrators, Erzeugung der Konfigurationsdatei) beeinflussen. Eine Objekteinjektion an dieser Stelle kann den gesamten Installationsprozess überdauern und Operationen mit hohen Privilegien beeinträchtigen. Auch hier bedeutet das Fehlen einer allowed_classes-Einschränkung, dass jede per Autoload geladene Klasse (Core, Handler, Plugins, Bibliotheken) instanziiert werden kann.

Hinweis zur Ausnutzbarkeit: Eine Ausnutzung in der Praxis erfordert in der Regel die Verkettung mehrerer Objekte (eine „Gadget-Kette"), um gefährliches Verhalten wie Codeausführung zu erreichen. Beispielsweise könnte das __wakeup() einer Klasse eine andere Methode aufrufen, die benutzerkontrollierte Zeichenfolgen auswertet. Ohne solche Ketten könnte sich die Auswirkung auf Denial-of-Service (z. B. Ressourcenerschöpfung in Destruktoren) beschränken. Der hochprivilegierte Kontext des Installationsprogramms (Schreiben von e107_config.php, Erstellen von Verzeichnissen) verstärkt die Risiken, aber das Entfernen des Skripts nach der Installation reduziert die langfristige Gefährdung.

Die Schwachstelle ist während jeder Einrichtungsphase über nicht authentifizierte HTTP-POST-Anfragen an /install.php erreichbar.

Gegenmaßnahmen

  • install.php entfernen — Löschen oder benennen Sie das Skript unmittelbar nach der Installation um.
  • Zugriff einschränken — Verwenden Sie .htaccess, Nginx-Regeln oder verschieben Sie die Datei während der Bereitstellung außerhalb des Web-Root-Verzeichnisses.
  • Patch-Empfehlung — Ersetzen Sie unserialize() durch json_decode() für die Zustandsspeicherung, oder verwenden Sie mindestens:

unserialize($data, ['allowed_classes' => false]);

  • Fügen Sie eine HMAC-Signierung/-Validierung der Daten für zusätzliche Integrität hinzu.

Referenzen

  • Offizielle Website von e107 CMS: https://e107.org
  • GitHub-Repository von e107 CMS: https://github.com/e107inc/e107
  • CVE-Eintrag: CVE-2025-61505 (wird nach Veröffentlichung aktualisiert)
  • CWE-502: Deserialisierung nicht vertrauenswürdiger Daten: https://cwe.mitre.org/data/definitions/502.html
Tool herunterladen