Console d'exploitation GUI Tkinter pour CVE-2026-87902 : identifie WordPress, confirme une LFI non authentifiée via un traversal sur pagename, escalade vers une RCE par une chaîne de gadgets PEAR et déploie un gestionnaire de fichiers.
WordPress Core get_page_template() — LFI non authentifiée → Gadget PEAR → RCE
Une interface graphique néon sombre construite sur la logique de MRdark-ops/CVE-2026-87902.
Une interface graphique Tkinter moderne (bibliothèque standard uniquement, aucune dépendance tierce) pour
CVE-2026-87902 — une inclusion de fichier local non authentifiée dans le cœur de WordPress via le
paramètre pagename de get_page_template(), escaladée en exécution de code à distance
via une chaîne de gadgets PEAR (pearcmd.php + config-create).
4.7.0 – 7.1.16.8.10, 7.0.6, 7.1.27hp8-65ch-5whpcheck-only confirme la LFI sans rien exécuterpearcmd.php (Linux + XAMPP/Windows) sur les profondeurs 1–19, écrit du PHP via config-createfm_<hex>.php dans le répertoire de dépôt configuré une fois la RCE réussiepip install nécessaire — bibliothèque standard pure
(tkinter, urllib, ssl, socket, gzip, zlib, threading, queue, ...)Si Tkinter est absent de votre système (il s'agit d'un paquet du système d'exploitation, pas d'un paquet pip) :
| Plateforme | Commande |
|---|---|
| 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 | Fourni avec l'installateur officiel de Python |
git clone https://github.com/tonydelouvre/CVE-2026-87902.git
cd CVE-2026-87902
python3 xwp_gui.py
Raccourcis clavier :
| Touche | Action |
|---|---|
Ctrl+Enter | Lancer le scan |
Esc | Arrêter le scan |
SINGLE (une URL) ou MASS, puis BROWSE LIST un fichier .txt
contenant une URL par ligne.exploit -> RCE et deploy file manager pour la chaîne complète, ou
check-only pour une passe de vérification sûre.oracle, depths, segments, probe, threads, timeout, proxy.| Champ | Valeur par défaut | Description |
|---|---|---|
target url | – | URL de base cible (mode single) |
target list | – | Fichier d'URLs (mode mass) |
command | id | Commande exécutée une fois le RCE obtenu |
drop dir | /tmp | Répertoire où le File Manager est écrit |
oracle | wp-links-opml | Fichier core exploité comme oracle LFI |
depths | 4,3,5,6,7 | Profondeurs de traversée ../ à essayer |
segments | templates,templates/page-templates,page-templates | Répertoires page-* du thème |
probe | 12 | Nombre de valeurs page_id à sonder |
threads | 10 | Workers parallèles (max 50) |
timeout | 12.0 | Délai d'expiration par requête en secondes |
max time | 60.0 | Budget de temps par cible en secondes |
proxy | – | http://host:port |
build_pagename() produit segment + %252f + N× %252e%252e%252f + cible,
en appliquant un double encodage URL :
/?page_id=<N>&pagename=templates%252f%252e%252e%252f...%252fwp-links-opml
| Phase | Module | Action |
|---|---|---|
| 1. Empreinte | Fingerprinter | Détecte WordPress + version (generator, ?ver=, wp-links-opml.php) et le thème |
| 2. Précondition | PreconditionChecker | Localise le répertoire page-* du thème utilisé comme segment de traversée |
| 3. Découverte | PageDiscoverer | Collecte les valeurs page_id via l'API REST, les sitemaps, les liens courts, les classes page-id- |
| 4. LFI | TraversalExploiter | Requête ?page_id=N&pagename=<chemin doublement encodé> et recherche de l'oracle <opml version= |
| 5. RCE | RCEEscalator | Localise un gadget pearcmd.php à une profondeur de 1 à 19, écrit du PHP via pear +config-create+, exécute la commande |
| 6. Post-exploit | shell.php | Déploie le gestionnaire de fichiers (fm_<hex>.php) dans le répertoire de dépôt |
Raccourcis de version : si l'empreinte indique patched ou out_of_range, la cible est
ignorée immédiatement pour gagner du temps.
L'onglet RESULTS affiche les colonnes target, verdict, version, lfi, rce, shell.
Les lignes classées VULNERABLE sont surlignées en cyan ; les lignes ayant obtenu un RCE deviennent magenta.
EXPORT écrit tout dans un fichier 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=...,
Pour les administrateurs système :