Présentation de WPScan
WordPress alimente une part majeure du web mondial, ce qui en fait une cible de choix pour les audits de sécurité. WPScan est un scanner de vulnérabilités "black box" conçu spécifiquement pour tester la résilience des installations WordPress. Écrit en Ruby, cet outil permet d'identifier les versions obsolètes du noyau, des thèmes et des extensions, tout en s'appuyant sur une base de données de vulnérabilités maintenue à jour.
Installation et configuration
WPScan est généralement préinstallé sur les distributions axées sur la sécurité comme Kali Linux, Parrot OS ou BlackArch. Pour les autres systèmes Linux ou macOS, il peut être installé via RubyGems ou en clonant le dépôt source :
# Installation via RubyGems
gem install wpscan
# Mise à jour de la base de données locale
wpscan --update
Pour obtenir des détails précis sur les vulnérabilités (références CVE, scores de critiicté), l'utilisation d'une API Token est nécessaire. Vous pouvez obtenir un jeton gratuit (limité à un certain nombre de requêtes quotidiennes) en créant un compte sur le site officiel de WPScan.
Méthodes d'énumération fondamentales
La puissance de WPScan réside dans sa capacité à extraire des informations structurelles d'un site sans accès administratif.
1. Analyse de base
Une commande simple permet d'iedntifier la version de WordPress et les thèmes/plugins visibles :
wpscan --url http://mon-site-test.com --api-token VOTRE_JETON_ICI
2. Énumération des utilisateurs
L'identification des identifiants valides est une étape cruciale pour les tests de force brute. WPScan utilise différentes techniques (API REST, archives d'auteurs) pour lister les utilisateurs :
wpscan --url http://mon-site-test.com --enumerate u
3. Détection des extensions et thèmes vulnérables
Il est possible de cibler spécifiquement les composants additionnels pour gagner du temps :
vp(Vulnerable Plugins) : Analyse uniquement les extensions présentant des failles connues.ap(All Plugins) : Tente de lister tous les plugins installés.vt(Vulnerable Themes) : Recherche les thèmes vulnérables.
wpscan --url http://mon-site-test.com -e vp,vt
Tests de robustesse des mots de passe
Une fois les noms d'utilisateurs récupérés, WPScan peut effectuer une attaque par dictionnaire sur l'interface de connexion :
# Test de force brute sur un utilisateur spécifique
wpscan --url http://mon-site-test.com --usernames admin --wordlist /chemin/vers/dictionnaire.txt --threads 15
Note : L'utilisation du paramètre --threads permet d'accélérer le processus, mais peut déclencher des mécanismes de protection (WAF) ou saturer les ressources du serveur cible.
Techniques avancées de contournement
Certains administrateurs bloquent les requêtes identifiées par l'User-Agent par défaut de WPScan. Pour contourner ces restrictions basiques, vous pouvez utiliser des en-têtes aléatoires ou passer par un proxy :
# Utilisation d'un User-Agent aléatoire et d'un proxy HTTP
wpscan --url http://mon-site-test.com --random-user-agent --proxy http://127.0.0.1:8080
Si WordPress est installé dans un répertoire personnalisé ou si le chemin du contenu (wp-content) a été modifié, utilisez les options dédiées :
wpscan --url http://mon-site-test.com --wp-content-dir custom-content-folder
Synthèse des options courantes
| Option | Description |
|---|---|
--url |
L'adresse cible du site WordPress. |
-e / --enumerate |
Lance l'énumération (u: utilisateurs, p: plugins, t: thèmes, tt: timthumbs). |
--api-token |
Clé pour interroger la base de données de vulnérabilités. |
-o / --output |
Enregistre le rapport dans un fichier externe. |
--force |
Force le scan même si WordPress n'est pas détecté au premier abord. |