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
Tools/GitHubGitHub/sakib570/cve-2018-1263-demo
SchwachstellenanalyseCode-AnalyseExploitationWebanwendungs-ExploitationPenetrationstestsLernen & BildungLabs & Praxis
GitHubsakib570/cve-2018-1263-demo

CVE-2018-1263-Demo

Repository anzeigen
1vor 4 JahrenNoch 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

Exploit Demo

Diese Anleitung hilft Ihnen, die verwundbare Komponente zu installieren und den Angriff im Zusammenhang mit dem phpMyAdmin-Fehler aus CVE-2018-1263 durchzuführen.

  • Beschreibung der CVE
  • Warum existiert die Schwachstelle
  • Wie funktioniert der Angriff
  • So installieren Sie die verwundbare Komponente
  • So führen Sie den Angriff aus

Beschreibung der CVE

Dieser Exploit bezieht sich auf ein Problem, das in phpMyAdmin-Version 4.8.x vor 4.8.2 entdeckt wurde. Durch die Ausnutzung des Problems kann ein Angreifer Remote-Codeausführung und Local File Inclusion auf dem Server durchführen. Die Schwachstelle liegt in dem Codeabschnitt, der für die Weiterleitung und das Laden von Seiten innerhalb von phpMyAdmin verantwortlich ist. Der Code enthält einen fehlerhaften Test für Whitelist-Seiten, der den Angriff ermöglicht. Ein Angreifer muss authentifiziert sein, außer im Fall $cfg['AllowArbitraryServer'] = true (bei dem ein Angreifer einen beliebigen Host angeben kann, den er bereits kontrolliert, und beliebigen Code auf phpMyAdmin ausführen kann) und im Fall $cfg['ServerDefault'] = 0 (der die Anmeldeanforderung umgeht und den verwundbaren Code ohne Authentifizierung ausführt).

Warum existiert die Schwachstelle

Die Schwachstelle wird durch eine Umgehung der Validierung in der verwundbaren Pfadprüfungsfunktion verursacht. Diese Schwachstelle ermöglicht es einem authentifizierten Remote-Angreifer, beliebigen PHP-Code auf dem Server auszuführen.

In index.php von phpMyAdmin gibt es eine Dateieinbindung, die durch die Angabe eines Parameters namens target in der URL ausgelöst werden kann. Der Codeabschnitt, der den Parameter target validiert, sieht wie folgt aus:

root@kitploit:~
$target_blacklist = array (
    'import.php', 'export.php'
);

// If we have a valid target, let's load that script instead
if (! empty($_REQUEST['target'])
    && is_string($_REQUEST['target'])
    && ! preg_match('/^index/', $_REQUEST['target'])
    && ! in_array($_REQUEST['target'], $target_blacklist)
    && Core::checkPageValidity($_REQUEST['target'])
) {
    include $_REQUEST['target'];
    exit;
}
// ...

In diesem Code führt er include $_REQUEST['target']; aus, sobald die if-Bedingung erfüllt ist. Wir müssen also nur die if-Bedingung umgehen, um auszuführen, was wir wollen.

Betrachten wir die if-Bedingung

  1. Die ersten beiden Bedingungen besagen, dass der Parameter target nicht leer sein darf und ein String sein muss.
  2. Die dritte Bedingung schränkt den Parameter target dahingehend ein, dass er nicht mit index beginnen darf.
  3. Die vierte Bedingung legt fest, dass der Parameter target nicht in $target_blacklist enthalten sein darf.
    • Die Variable $target_blacklist wird direkt vor der if-Bedingung definiert und enthält import.php und export.php, d. h. alles außer diesen beiden Seiten ist erlaubt.
  4. Die fünfte und letzte Bedingung ist eine Whitelist-Prüfung der Seitenvalidität unter Verwendung einer vorhandenen Funktion der Klasse Core: Core::checkPageValidity($_REQUEST['target']).
    • Wie im folgenden Codeausschnitt gezeigt, entfernt die Funktion checkPageValidity alles hinter ? aus $page und prüft, ob es in der Whitelist enthalten ist. Der String nach ? ist nicht Teil des URL-Pfads. Eine Beispiel-Whitelist ist ebenfalls im Codeausschnitt gezeigt.
    root@kitploit:~

Wie funktioniert der Angriff

Wie bereits erwähnt, hat der Angreifer über den Parameter $_REQUEST['target'] in der URL die vollständige Kontrolle über $page in der Funktion checkPageValidity. Stellen wir uns vor, der Angreifer sendet über den Parameter $_REQUEST['target'] den folgenden Wert an $page:

root@kitploit:~
$page = 'db_sql.php?/../../../../../../../../etc/passwd'

Die Funktion checkPageValidity führt dann Folgendes aus:

  1. Zuerst teilt sie den String an ? und weist den ersten Teil $page zu. In diesem Beispiel ist der Wert von $page = db_sql.php.
  2. Als Nächstes prüft sie, ob $_page, also db_sql.php, in der Whitelist enthalten ist. Da es in der Whitelist enthalten ist, gibt die Funktion True zurück und kehrt zu index.php zurück.

Da die if-Bedingung in index.php nun True ist, wird die folgende Zeile ausgeführt, wie im obigen Codeausschnitt von index.php gezeigt:

root@kitploit:~
include $_REQUEST['target'];

Was als Nächstes passiert, ist:

  • Die obige Anweisung bindet den nicht aufgeteilten Wert von $_REQUEST['target'] ein, was bedeutet, dass Folgendes ausgeführt wird:
    root@kitploit:~
    GET /index.php?target=db_sql.php?/../../../../../../../../etc/passwd
    
  • Da PHP den Pfad auf magische Weise in /../../../../../../../../etc/passwd umwandelt, ohne zu prüfen, ob db_sql.php existiert oder nicht, wird /../../../../../../../../etc/passwd ausgeführt und der Inhalt der Datei /etc/passwd in der Antwort an den Angreifer zurückgesendet.

Wir können dies nun nutzen, um Local File Inclusion oder sogar Remote-Codeausführung durchzuführen, um eine Reverse-Shell zu erhalten. Wenn wir in phpMyAdmin eine Abfrage ausführen, wird eine Sitzungsdatei erstellt und mit dem Abfrageinhalt im Verzeichnis /tmp gespeichert. Die Sitzungsdatei heißt sess_< SESSION ID >. Die Sitzungs-ID kann leicht im Cookie mit der Inspect-Option des Browsers gefunden werden.

Wenn wir also die folgende Abfrage in phpMyAdmin ausführen:

root@kitploit:~
SELECT '<?php phpinfo();exit;?>'

Sie wird in der Sitzungsdatei gespeichert. Stellen wir uns vor, unsere Sitzungs-ID für phpMyAdmin lautet e15cffd3ab25a631136611fba9ca2042.

Wenn wir dann die folgende Adresse im Browser aufrufen:

root@kitploit:~
http://your-ip:8080/index.php?target=db_sql.php?/../../../../../../../../tmp/sess_e15cffd3ab25a631136611fba9ca2042

Dann versucht phpMyAdmin, die Sitzungsseite zu laden, und da die Seite den durch die Abfrage bereitgestellten PHP-Code enthält, wird der PHP-Code ausgeführt. In diesem speziellen Beispiel sehen wir phpinfo in der vom Browser geladenen Seite. Mit dieser Technik können wir beliebigen Code auf dem entfernten Server ausführen.

So installieren Sie die verwundbare Komponente

Die Exploit-Infrastruktur erfordert eine verwundbare Version von phpMyAdmin und mysql. Wir verwenden Docker-Container, um die erforderlichen Komponenten zu installieren. Für die verwundbare Version von phpMyAdmin verwenden wir die vorgefertigte Docker-Umgebung von Vulhub und für mysql die neueste offizielle Version von dockerhub. Das Installationsskript wird als Docker-Compose-YML-Skript bereitgestellt, das im Repository zu finden ist.

Wir gehen davon aus, dass auf der Zielmaschine docker und docker-compose installiert sind. Falls nicht, lesen Sie bitte die Docker-Dokumentation, um sie zu installieren. Sobald Docker installiert ist, führen Sie die folgenden Schritte aus, um die verwundbare Komponente einzurichten:

Klonen Sie zuerst das Repository auf Ihrer Zielmaschine und navigieren Sie in das geklonte Verzeichnis:

root@kitploit:~
git clone [email protected]:msnkhan/exploit-demo.git
cd exploit-demo

Führen Sie dann das Docker-Compose-Skript mit dem folgenden Befehl aus:

root@kitploit:~
sudo docker-compose up -d

Sobald der Installationsprozess abgeschlossen ist, stellt Docker die phpMyAdmin-Seite auf Port 8080 Ihrer Maschine bereit. Sie können dies überprüfen, indem Sie die Seite in Ihrem Browser mit dem folgenden Adressformat öffnen:

root@kitploit:~
http://your-machine-ip:8080

Wenn der Installationsprozess erfolgreich war, sollten Sie eine Seite wie die folgende sehen:

phpMyAdmin_homepage

So führen Sie den Angriff aus

Das folgende Video ist ein Tutorial zur Durchführung des Angriffs:

Video-Link: https://drive.google.com/file/d/1UbLGEwMYswdrRAOMJLd0mFHbsNl1aPvt/preview

Referenzen

[1] https://www.exploit-db.com/exploits/44928

[2] https://github.com/vulhub/vulhub

[3] https://docs.docker.com/get-docker/

Tool herunterladen
public static function checkPageValidity(&$page, array $whitelist = []) { // ... $_page = mb_substr($page, 0, mb_strpos($page . '?', '?')); // example $whitelist == array('db_sql.php', 'sql.php', ...) if (in_array($_page, $whitelist)) { return true; } // ... return false; }
  • Der wichtige Punkt hierbei ist, dass der Angreifer die vollständige Kontrolle über $page hat, da dieser Wert direkt aus $_REQUEST['target'] stammt.