Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
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
WPSniper — Détecteur CVE-2026-87902. Classe LFI get_page_template de WordPress. Détection uniquement. Laboratoire autorisé. | Kitploit
Outils/GitHubGitHub/ynsmroztas/wpsniper
ReconnaissanceScanners de VulnérabilitésScanners de Vulnérabilités WebAnalyse des VulnérabilitésCollecte d'InformationsSécurité WebTests d'Intrusion
GitHubynsmroztas/wpsniper

WPSniper

Détecteur CVE-2026-87902. Classe LFI get_page_template de WordPress. Détection uniquement. Laboratoire autorisé.

Voir le dépôt
1il y a 11h 4mPas 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

WPSniper — détecteur CVE-2026-87902

WPSniper

Détecteur de CVE-2026-87902 pour WordPress Core.

get_page_template() peut être détourné de sorte que la résolution du template de page inclue un fichier .php local lisible en dehors du thème actif. WPSniper empreinte le site, choisit un page_id publié, sonde la classe d'inclusion, et n'affiche VULN que lorsqu'une bannière PEAR forte est unique au corps de la sonde.

Détection uniquement. Pas de webshell. Pas de pearcmd config-create. Pas d'exécution de commande système.

root@kitploit:~
python3 WPSniper.py -u https://lab.wordpress.local --shell

Pipeline :

root@kitploit:~
subfinder -d lab.example -silent | httpx -silent | python3 WPSniper.py -t 8

Périmètre écrit. Lab personnel. C'est toute la licence pour l'exécuter.


Session de lab WPSniper expurgée

Classe

WordPress construit le nom du template de page à partir de la variable de requête pagename dérivée de l'URL et décodée :

page-{$pagename}.php

locate_template() inclut ensuite ce fichier. Sur les versions affectées, le chemin résolu n'est pas contraint de rester à l'intérieur d'un répertoire de thème autorisé. Un traversal doublement encodé dans pagename survit à sanitize_title suffisamment longtemps pour que get_page_template() le décode une fois et sorte de l'arborescence du thème.

Deux préconditions précèdent une inclusion fermée :

  1. Le thème parent ou enfant actif possède un répertoire de premier niveau dont le nom commence par page- (WordPress documente page-templates/ — Twenty Twelve, Twenty Fourteen, Neve, Hestia, Sydney et d'autres).
  2. Une cible .php lisible existe pour le compte du serveur web. Le détecteur utilise les bannières CLI PEAR standard comme oracle d'inclusion. Il n'en écrit pas.

La RCE est une suite possible lorsque ces conditions plus un gadget inscriptible/exécutable s'alignent. Cette suite n'est pas dans ce dépôt.

Crédit du découvreur sur la CVE : Robert (ressl) via WordPress HackerOne. Avis : GHSA-7hp8-65ch-5whp.


Flux de détection WPSniper

Ce que fait l'opérateur

La table des versions est intégrée. 4.7.0–7.1.1 constituent la fenêtre affectée. Points corrigés : 7.1.2, 7.0.6, 6.9.9, 6.8.10 … jusqu'à 4.7.37.

Règle de confirmation

Une page marketing qui mentionne « pearcmd » dans un article de blog n'est pas un hit.

VULN uniquement lorsque tout ceci est vrai :

  • Empreinte du corps de la sonde ≠ empreinte baseline ?page_id=
  • Au moins un token fort est unique à la sonde (PEAR Version:, Usage: pear, PEAR_Config, Commands for pear, config-create, DEPRECATED: PEAR commands, pear.php)
  • Le token faible pearcmd / PEAR seul est écarté, surtout s'il était déjà présent dans le HTML baseline

INFO = version affectée et/ou répertoire page-templates, inclusion non fermée. Ne pas classer en critique sur INFO.

SAFE = branche corrigée, ou inclusion identique à la baseline.

SKIP = pas WordPress, URL invalide.

/etc/passwd est le mauvais oracle pour cette CVE. locate_template() ajoute .php. La commande interactive passwd existe pour que vous puissiez le constater vous-même. L'apparition d'une strophe root:x:0:0: est inhabituelle et doit être vérifiée manuellement.

Installation

root@kitploit:~
python3 -m pip install -r requirements.txt
python3 WPSniper.py -u https://lab.wordpress.local

Nécessite requests.

Options

--shell est ignoré sur un pipeline. C'est intentionnel.

Shell interactif

root@kitploit:~
python3 WPSniper.py -u https://lab.wordpress.local --shell
root@kitploit:~
[email protected] ▶
  1 fp        version / theme / patched?
  2 pages     REST published pages
  3 theme     page-templates directory
  4 probe     PEAR include + baseline diff   (no write)
  5 diff      same, print Δ + tokens
  6 passwd    try …/etc/passwd               (this class includes *.php)
  7 include P include a .php path without suffix
  8 save      last body → /tmp/wpsniper-probe.html
  9 help
  0 exit

Chaque sonde affiche l'URL complète et un curl prêt à copier-coller. Utilisez-le dans le rapport. N'inventez pas une seconde requête.

7 include est destiné à un fichier de lab autorisé que vous avez déjà placé. Le nom d'exemple dans le texte d'aide est un marqueur témoin, pas un dropper.

Session de lab (expurgée)

root@kitploit:~
WPSniper v1.3   CVE-2026-87902  get_page_template LFI
[radar] target  https://lab.wordpress.local
[radar] generator=6.8.3  theme=twentytwelve  status=affected
[radar] page_id=2
[radar] theme dir /wp-content/themes/twentytwelve/page-templates/ → 403

VULN  lab.wordpress.local  unique=['PEAR Version:','Usage: pear'] Δlen=+18420

patched  7.1.2 · 7.0.6 · 6.8.10 · backports to 4.7.37

L'hôte sur cette page est un label de lab. Les noms d'hôtes clients réels n'ont pas leur place dans une capture publique.

Correctif

Mettre à niveau vers 7.1.2 ou le backport de votre branche :

7.0.6 · 6.9.9 · 6.8.10 · 6.7.9 · 6.6.9 · 6.5.12 · 6.4.12 · 6.3.12 · 6.2.13 · 6.1.14 · 6.0.16 · 5.9.18 … jusqu'à 4.7.37.

7.1.2 exige également que le chemin de template résolu reste à l'intérieur d'un répertoire de thème autorisé. C'est le véritable correctif, pas une règle WAF.

Ce que ce dépôt ne fera pas

  • Pas de webshell, pas de pearcmd config-create, pas de wrapper system()
  • Pas de playbook de scan de masse d'Internet
  • Aucune affirmation que chaque machine WordPress 6.x est RCE
  • Pas de /etc/passwd brut comme confirmation principale

Si vous avez besoin d'une conclusion : joignez le curl que WPSniper a déjà affiché, les tokens forts uniques, et la divergence d'empreinte baseline.

Avertissement

Tests de sécurité autorisés uniquement. Exécuter ceci contre un hôte que vous ne possédez pas ou que vous n'avez pas par écrit est votre problème, pas celui de l'outil.

Liens

  • Site : ynsmroztas.github.io
  • X : @ynsmroztas
  • CVE : CVE-2026-87902

mitsec · Yunus Emre Öztaş

Télécharger l’outil
ÉtapeActionSignal
1Accueil + generator + /feed/WordPress ? version ? slug du thème ?
2REST /wp-json/wp/v2/pages ou page_id= dans le HTMLUne page publiée pour que le chemin du template s'exécute réellement
3GET /wp-content/themes/{slug}/page-templates/200 / 401 / 403 = le répertoire existe
4Baseline ?page_id=N vs sonde pagename=Empreinte du corps + tokens PEAR forts uniques
OptionSignification
-u URLCible unique
-l fileListe d'URLs
stdinsubfinder | httpx | WPSniper
-t NThreads sur une liste (défaut 6)
-qLignes silencieuses + résumé
--shellSonde interactive sur un seul -u
--timeoutSecondes (défaut 14)