
Un outil rapide d'énumération de plugins WordPress
"Parce que pourquoi scanner à l'aveugle quand WordPress s'expose lui-même ?"
Un scanner rapide de plugins et thèmes WordPress qui détecte les plugins installés via l'énumération de l'API REST et les thèmes à partir de la découverte HTML, puis les associe à des vulnérabilités connues. Plus de 5000 plugins détectables sans force brute, des milliers d'autres avec celle-ci.
Depuis le 9 mars 2026, Wordfence a déprécié son API v2. Toutes les versions de WPProbe antérieures à v0.10.16 ont une fonctionnalité update-db cassée. Vous devez mettre à jour WPProbe.
Par défaut, wpprobe update-db récupère une base de données pré-construite depuis ce dépôt (mise à jour toutes les 2h via CI), donc aucune clé API n'est nécessaire. Si vous souhaitez récupérer directement depuis Wordfence vous-même, vous pouvez éventuellement configurer une clé API gratuite :
--api-keygo install github.com/Chocapikk/wpprobe@latest
wpprobe update-db
wpprobe scan -u https://example.com
wpprobe scan -u https://example.com --mode stealthy
wpprobe scan -u https://example.com --mode bruteforce
wpprobe scan -u https://example.com --mode hybrid
# Kali Linux (inclus dans kali-rolling)
sudo apt install wpprobe
# Go (nécessite 1.22+)
go install github.com/Chocapikk/wpprobe@latest
# Nix
nix-shell -p wpprobe
# Docker
docker run -it --rm wpprobe scan -u https://example.com
# Depuis les sources
git clone https://github.com/Chocapikk/wpprobe && cd wpprobe && go build -o wpprobe
# Monter le répertoire courant pour les fichiers d'entrée/sortie
docker run -it --rm -v $(pwd):/data wpprobe scan -f /data/targets.txt -o /data/results.csv
# Persister les bases de données de vulnérabilités
docker run -it --rm \
-v $(pwd):/data \
-v wpprobe-config:/config \
wpprobe scan -f /data/targets.txt -o /data/results.json
# Mettre à jour les bases de données
docker run -it --rm \
-v wpprobe-config:/config \
-e WORDFENCE_API_KEY=your_key \
-e WPSCAN_API_TOKEN=your_token \
wpprobe update-db
# Cible unique
wpprobe scan -u https://example.com
# Cibles multiples avec multithreading
wpprobe scan -f targets.txt -t 20
# Options personnalisées
wpprobe scan -u https://example.com \
--header "User-Agent: CustomAgent" \
--proxy http://proxy:8080 \
--rate-limit 10 \
--no-check-version
# Formats de sortie
wpprobe scan -u https://example.com -o results.csv
wpprobe scan -u https://example.com -o results.json
# Mettre à jour les bases de données (Wordfence nécessite une clé API gratuite, WPScan nécessite un jeton API Enterprise)
wpprobe update-db --api-key your_wordfence_key
# Ou utiliser une variable d'environnement
export WORDFENCE_API_KEY=your_key_here
wpprobe update-db
# Rechercher des vulnérabilités
wpprobe search --cve CVE-2024-1234
wpprobe search --plugin woocommerce
wpprobe search --severity critical
wpprobe search --auth Unauth
wpprobe search --title "SQL Injection" --details
# Statistiques de la base de données
wpprobe list
Définissez WORDFENCE_API_KEY pour les mises à jour de la base de données Wordfence (gratuite). Définissez WPSCAN_API_TOKEN pour les mises à jour de la base de données WPScan (plan Enterprise uniquement).
wpprobe update
Seuls les binaires installés depuis une version se mettent à jour eux-mêmes. Une compilation depuis les sources est généralement en avance sur la dernière version, donc la remplacer serait une rétrogradation : recompilez-la depuis le dépôt à la place, ou passez --force pour installer le binaire de la version quand même.
Au démarrage, WPProbe vérifie la dernière version publiée pour étiqueter la bannière. La réponse est mise en cache pendant 24 heures, et la vérification peut être entièrement désactivée :
export WPPROBE_NO_UPDATE_CHECK=1
Le mode furtif interroge les routes de l'API REST exposées (?rest_route=/) et fait correspondre les points de terminaison découverts avec une base de données précompilée de signatures de plugins connus. Il découvre également les thèmes actifs en analysant les références wp-content/themes/ dans le HTML de la page et récupère leur version depuis style.css. Cela génère un minimum de requêtes et évite la détection par les WAF.
Le mode force brute vérifie directement les répertoires des plugins via des requêtes GET. Une réponse 403 confirme que le plugin existe (liste des répertoires interdite). Une réponse 200 est validée en vérifiant la présence de readme.txt dans la liste du répertoire pour éviter les faux positifs provenant d'instances WordPress qui renvoient 200 pour tous les chemins.
Le mode hybride combine les deux : furtif d'abord pour une détection à faible bruit, puis force brute pour les plugins restants. Les thèmes sont toujours découverts via HTML quel que soit le mode.
Les plugins et thèmes détectés sont corrélés avec les CVE connus des bases de données Wordfence et WPScan, avec une correspondance de plage de versions pour identifier les installations vulnérables.
CSV :
URL,Plugin,Version,Severity,AuthType,CVEs,CVE Links,CVSS Score,CVSS Vector,Title
http://example.com,give,2.20.1,critical,Unauth,CVE-2025-22777,https://www.cve.org/CVERecord?id=CVE-2025-22777,9.8,CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H,GiveWP <= 3.19.3 - Unauthenticated PHP Object Injection
La sortie JSON est toujours un tableau, avec un objet par cible scannée, donc un seul fichier reste valide que vous scanniez une URL ou plusieurs avec -f.
JSON :
[
{
"url": "http://example.com",
"plugins": {
"give": [
{
"version": "2.20.1",
"severities": [
{
"critical": [
{
"auth_type": "Unauth",
"vulnerabilities": [
{
"cve": "CVE-2025-22777",
"cve_link": "https://www.cve.org/CVERecord?id=CVE-2025-22777",
"title": "GiveWP <= 3.19.3 - Unauthenticated PHP Object Injection",
"cvss_score": 9.8,
"cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
}
]
}
]
}
]
}
],
"wordpress-seo": [
{
"version": "27.1.1"
}
]
}
}
]
Les contributions sont les bienvenues. Veuillez ouvrir une issue ou soumettre une pull request.
Licence MIT - voir le fichier LICENSE pour plus de détails.
Les données de vulnérabilités proviennent de Wordfence Intelligence, fournies par Defiant, Inc. Copyright (c) Defiant, Inc. Tous droits réservés. La base de données pré-construite publiée dans la version db de ce dépôt est une copie traitée de ces données, redistribuée sous la licence accordée dans les Conditions générales de Wordfence Intelligence. Toute copie que vous faites doit reproduire la désignation de copyright de Defiant, Inc. et cette licence, qui figurent toutes deux dans NOTICE et sont écrites à côté de la base de données sur le disque lorsque vous exécutez update-db.
WPProbe n'est pas affilié à Defiant, Inc., ni approuvé ou sponsorisé par celle-ci.
Développé par @Chocapikk.
| Mode | Méthode | Furtivité | Couverture |
|---|
stealthy (défaut) | Correspondance des points de terminaison de l'API REST + découverte des thèmes HTML | Élevée | 5000+ plugins + thèmes |
bruteforce | Vérifications directes des répertoires | Faible | 10k+ plugins |
hybrid | Furtif d'abord, puis force brute | Moyenne | Maximale |
| Variable | Description |
|---|
WORDFENCE_API_KEY | Clé API Wordfence pour les mises à jour de la base de données (gratuite, obtenez-en une ici) |
WPSCAN_API_TOKEN | Jeton API WPScan Enterprise pour les mises à jour de la base de données |
HTTP_PROXY / HTTPS_PROXY / ALL_PROXY | Configuration du proxy |
NO_PROXY | Règles de contournement du proxy |