Tkinter-GUI-Exploit-Konsole für CVE-2026-87902: Fingerprinting von WordPress, Bestätigung einer unauthentifizierten LFI über pagename-Traversal, Eskalation zu RCE über eine PEAR-Gadget-Kette und Bereitstellung eines Dateimanagers.
WordPress Core get_page_template() — Unauthentifizierte LFI → PEAR Gadget → RCE
Eine Dark-Neon-GUI, aufgebaut auf der Logik von MRdark-ops/CVE-2026-87902.
Eine moderne Tkinter-GUI (nur Standardbibliothek, keine Drittanbieter-Abhängigkeiten) für
CVE-2026-87902 — eine unauthentifizierte Local File Inclusion im WordPress-Core über den
Parameter pagename von get_page_template(), eskaliert zu Remote Code Execution
durch eine PEAR-Gadget-Chain (pearcmd.php + config-create).
4.7.0 – 7.1.16.8.10, 7.0.6, 7.1.27hp8-65ch-5whpcheck-only-Modus bestätigt die LFI, ohne etwas auszuführenpearcmd.php (Linux + XAMPP/Windows) über Tiefen 1–19 und schreibt PHP via config-createfm_<hex>.php im konfigurierten Drop-Verzeichnis ab, sobald die RCE gelingtpip install nötig — reine Standardbibliothek
(tkinter, urllib, ssl, socket, gzip, zlib, threading, queue, ...)Falls Tkinter auf Ihrem System fehlt (dies ist ein OS-Paket, kein pip-Paket):
| Plattform | Befehl |
|---|---|
| Debian / Ubuntu | sudo apt install python3-tk |
| Fedora / RHEL | sudo dnf install python3-tkinter |
| Arch Linux | sudo pacman -S tk |
| macOS (Homebrew) | brew install python-tk |
| Windows | Im offiziellen Python-Installer enthalten |
git clone https://github.com/tonydelouvre/CVE-2026-87902.git
cd CVE-2026-87902
python3 xwp_gui.py
Tastenkürzel:
| Taste | Aktion |
|---|---|
Ctrl+Enter | Scan starten |
Esc | Scan stoppen |
SINGLE (eine URL) oder MASS, dann BROWSE LIST eine .txt-Datei
mit einer URL pro Zeile.exploit -> RCE und deploy file manager für die vollständige Kette, oder
check-only für einen sicheren Verifikationsdurchlauf.oracle, depths, segments, probe, threads, timeout, proxy an.| Feld | Standardwert | Beschreibung |
|---|---|---|
target url | – | Ziel-Basis-URL (Einzelmodus) |
target list | – | Datei mit URLs (Massenmodus) |
command | id | Befehl, der nach Erreichen von RCE ausgeführt wird |
drop dir | /tmp | Verzeichnis, in das der File Manager geschrieben wird |
oracle | wp-links-opml | Core-Datei, die als LFI-Oracle missbraucht wird |
depths | 4,3,5,6,7 | ../-Traversal-Tiefen zum Ausprobieren |
segments | templates,templates/page-templates,page-templates | Theme-Verzeichnisse page-* |
probe | 12 | Anzahl der zu probierenden page_id-Werte |
threads | 10 | Parallele Worker (max. 50) |
timeout | 12.0 | Timeout pro Anfrage in Sekunden |
max time | 60.0 | Zeitbudget pro Ziel in Sekunden |
proxy | – | http://host:port |
build_pagename() erzeugt segment + %252f + N× %252e%252e%252f + Ziel,
wobei doppelte URL-Kodierung angewendet wird:
/?page_id=<N>&pagename=templates%252f%252e%252e%252f...%252fwp-links-opml
| Phase | Modul | Aktion |
|---|---|---|
| 1. Fingerprint | Fingerprinter | WordPress + Version erkennen (generator, ?ver=, wp-links-opml.php) und Theme |
| 2. Vorbedingung | PreconditionChecker | Das Theme-Verzeichnis page-* lokalisieren, das als Traversal-Segment verwendet wird |
| 3. Discovery | PageDiscoverer | page_id-Werte über REST API, Sitemaps, Shortlinks, page-id--Klassen sammeln |
| 4. LFI | TraversalExploiter | ?page_id=N&pagename=<doppelt kodierter Pfad> anfordern und nach dem <opml version=-Orakel suchen |
| 5. RCE | RCEEscalator | Ein pearcmd.php-Gadget in Tiefe 1–19 lokalisieren, PHP via pear +config-create+ schreiben, den Befehl ausführen |
| 6. Post-Exploit | shell.php | Den File Manager (fm_<hex>.php) im Drop-Verzeichnis bereitstellen |
Versions-Shortcuts: Wenn der Fingerprint patched oder out_of_range meldet, wird das Ziel
sofort übersprungen, um Zeit zu sparen.
Der Tab RESULTS zeigt die Spalten target, verdict, version, lfi, rce, shell.
Zeilen, die als VULNERABLE eingestuft werden, sind cyan hervorgehoben; Zeilen, bei denen RCE erreicht wurde, werden magenta.
EXPORT schreibt alles in CSV:
target,verdict,version,lfi,rce,shell,detail
http://target.local,VULNERABLE,6.4,templates/../../ d=4 POST,uid=33(www-data),http://target.local/?page_id=2&pagename=...,
Für Systemadministratoren:
7.1.2 oder höher (Backports: 6.8.10, 7.0.6, 7.1.2).pagename ../ oder %2e%2e enthält.register_argc_argv in php.ini — dies unterbricht die PEAR-Gadget-Kette.pearcmd.php, falls PEAR nicht benötigt wird.; php.ini
register_argc_argv = Off