Sécurité WordPress : audit complet, fichiers critiques et durcissement en 2026

WordPress propulse aujourd’hui plus de 40 % des sites web dans le monde. Cette popularité en fait la cible numéro un des attaquants automatisés. Si tu administres un site WordPress, que ce soit un blog, une boutique ou un site d’entreprise, comprendre sa surface d’attaque n’est pas optionnel. C’est la condition minimale pour le protéger efficacement.

Dans cet article, je te guide à travers les quatre axes essentiels : les fichiers et dossiers critiques à connaître, les chemins d’attaque les plus exploités, la sécurisation basique que tout administrateur doit appliquer, et la détection des vulnérabilités avec WPScan. Tout ce dont tu as besoin pour faire un premier audit sérieux de ton WordPress.

1. Comprendre l’architecture WordPress avant de sécuriser

Un audit de sécurité commence toujours par une compréhension de la structure du système. WordPress est prévisible par conception ; ses chemins, ses fichiers et ses dossiers sont standardisés, ce qui facilite à la fois son administration et son attaque.

Les fichiers les plus sensibles

wp-config.php est le fichier le plus critique de toute installation WordPress. Il contient les identifiants de la base de données, les clés de sécurité, le préfixe des tables et la configuration du mode debug. Une fuite de ce fichier signifie une compromission totale du site. Par défaut, il est accessible depuis la racine du serveur : il faut systématiquement restreindre son accès via le fichier .htaccess :

<files wp-config.php>
  order allow,deny
  deny from all
</files>

xmlrpc.php est une ancienne API XML qui permet aux applications tierces de communiquer avec WordPress. Elle est activée par défaut et constitue un vecteur d’attaque fréquent : brute-force de mots de passe, amplification DDoS via pingback, et contournement possible de la double authentification. Si tu n’utilises pas d’application mobile WordPress ou de service tiers qui en dépend, désactive-la immédiatement.

readme.html et license.txt révèlent la version exacte de WordPress installée. C’est une information de reconnaissance précieuse pour un attaquant qui cherche des CVE associées à ta version. Supprime ou bloque l’accès à ces deux fichiers.

Les dossiers à surveiller

/wp-content/ concentre les plugins, les thèmes et les fichiers uploadés. C’est la zone la plus modifiée et souvent la moins surveillée. Les plugins vulnérables vivent dans /wp-content/plugins/, les thèmes PHP potentiellement exécutables dans /wp-content/themes/, et les fichiers uploadés dans /wp-content/uploads/ — ce dernier ne devrait jamais exécuter de PHP.

/wp-includes/ contient les fichiers cœur de WordPress. Ne jamais modifier ce dossier directement. Toute modification est écrasée lors des mises à jour.

2. Les chemins d’attaque les plus courants

Connaître comment un attaquant analyse ton site te permet de mieux anticiper et bloquer ses actions.

L’énumération passive : ce que ton site expose sans être touché

Avant même de lancer un outil, un attaquant peut récolter beaucoup d’informations simplement en observant le trafic HTTP de ton site.

La version WordPress est souvent visible dans le code source HTML via la balise meta generator. Elle est aussi lisible dans readme.html et license.txt. Un simple curl https://ton-site.com/ | grep 'content="WordPress' suffit pour la récupérer.

Les plugins et thèmes installés laissent des traces dans le code source. Les fichiers CSS et JS chargés depuis /wp-content/plugins/nom-du-plugin/ ou /wp-content/themes/nom-du-theme/ révèlent exactement quels plugins sont actifs et souvent leur version via le paramètre ?ver=.

L’API REST de WordPress expose par défaut la liste de tous les auteurs du site à l’URL /wp-json/wp/v2/users. Cette requête retourne les identifiants, slugs et noms d’affichage de tous les comptes auteurs — une information directement utilisable pour une attaque par brute-force.

L’interface de connexion : cible évidente

WordPress expose sa page de connexion à des chemins prévisibles : /wp-login.php et /wp-admin/. Ces URLs sont scannées en permanence par des bots automatisés. WordPress affiche également des messages d’erreur différents selon que le nom d’utilisateur est invalide ou que c’est le mot de passe qui est incorrect — ce comportement permet d’énumérer les comptes valides.

xmlrpc.php : un vecteur sous-estimé

L’interface XML-RPC mérite une attention particulière. Elle permet d’envoyer plusieurs tentatives d’authentification dans une seule requête HTTP via la méthode system.multicall — ce qui permet de contourner certaines protections anti-brute-force basées sur le comptage des requêtes par IP.

Elle peut aussi être utilisée pour détecter des ports ouverts sur le serveur via pingback.ping, ou pour participer à des attaques DDoS distribuées si elle est exposée. Vérifier si elle est active sur ton site est simple :

curl -s https://ton-site.com/xmlrpc.php

Si la réponse contient « XML-RPC server accepts POST requests only », le service est actif et exposé.

3. Sécurisation basique : ce que tout administrateur doit appliquer

Ces mesures ne nécessitent pas de compétences avancées. Elles couvrent l’essentiel et éliminent la grande majorité des vecteurs d’attaque automatisés.

Désactiver xmlrpc.php

Si aucun service tiers n’en dépend, bloque l’accès complet dans .htaccess :

<Files xmlrpc.php>
  order deny,allow
  deny from all
</Files>

Masquer la version WordPress

Dans functions.php de ton thème enfant, ajoute :

remove_action('wp_head', 'wp_generator');

Supprime ou bloque également l’accès à readme.html et license.txt.

Désactiver l’édition de fichiers depuis l’admin

WordPress permet par défaut de modifier les fichiers PHP des thèmes et plugins directement depuis le tableau de bord. Si un attaquant accède à l’admin, c’est une voie directe vers l’exécution de code. Désactive cette fonctionnalité dans wp-config.php :

define('DISALLOW_FILE_EDIT', true);

Sécuriser les permissions de fichiers

Les permissions correctes sur un serveur Linux hébergeant WordPress :

  • Fichiers : 644
  • Dossiers : 755
  • wp-config.php : 600 si ton hébergeur le permet

Limiter l’API REST

Pour empêcher l’énumération des utilisateurs via /wp-json/wp/v2/users, ajoute dans functions.php :

add_filter('rest_endpoints', function($endpoints) {
  if (isset($endpoints['/wp/v2/users'])) {
    unset($endpoints['/wp/v2/users']);
  }
  return $endpoints;
});

Activer la double authentification (2FA)

Utilise un plugin comme WP 2FA ou Google Authenticator. La 2FA sur la page /wp-login.php empêche l’accès même si les identifiants sont compromis. Note qu’elle ne protège pas contre xmlrpc.php si ce dernier est laissé actif.

Forcer HTTPS

Dans wp-config.php :

define('FORCE_SSL_ADMIN', true);

4. Détecter les vulnérabilités avec WPScan

WPScan est l’outil de référence pour l’audit de sécurité WordPress. Il est intégré à Kali Linux et disponible sur macOS via Homebrew.

Scan de base

wpscan --url https://ton-site.com --api-token TON_TOKEN

L’API token est gratuit pour un usage limité sur wpscan.com. Il donne accès à la base de données de vulnérabilités connues pour les plugins, thèmes et versions WordPress.

Énumération des plugins et thèmes

wpscan --url https://ton-site.com --enumerate p,t --api-token TON_TOKEN

WPScan teste les chemins connus des plugins et thèmes populaires et identifie ceux qui ont des CVE connues et non patchées.

Interpréter les résultats

WPScan classe les résultats par niveau de sévérité. Priorise dans l’ordre : les plugins avec des vulnérabilités critiques non patchées, les versions WordPress obsolètes, les thèmes avec des fichiers PHP accessibles publiquement, et les configurations exposées (readme.html, xmlrpc.php actif, API REST non filtrée).

5. Les plugins de sécurité indispensables

Les plugins ne remplacent pas une configuration serveur correcte, mais ils ajoutent des couches de protection précieuses pour les administrateurs qui ne gèrent pas directement leur serveur.

Wordfence Security est le plus complet : pare-feu applicatif, scanner de malwares, protection brute-force, alertes en temps réel. Sa version gratuite couvre l’essentiel.

WP fail2ban journalise les tentatives de connexion dans le syslog du serveur et s’intègre avec fail2ban pour bannir automatiquement les IPs après un nombre de tentatives configurables.

Sucuri Security surveille l’intégrité des fichiers et alerte en cas de modification suspecte — utile pour détecter une compromission après coup.

Une règle d’or pour les plugins : n’installe que des plugins actifs, maintenus, avec une base d’utilisateurs importante et des mises à jour récentes. Un plugin abandonné est souvent plus dangereux qu’une absence de plugin.

Récapitulatif : les 10 actions à faire dès maintenant

Si tu dois retenir une chose de cet article, c’est cette liste de contrôle à appliquer immédiatement sur tout WordPress que tu administres :

  1. Restreindre l’accès à wp-config.php via .htaccess
  2. Désactiver ou bloquer xmlrpc.php
  3. Supprimer ou bloquer readme.html et license.txt
  4. Masquer la version WordPress dans le code source
  5. Désactiver l’éditeur de fichiers avec DISALLOW_FILE_EDIT
  6. Corriger les permissions fichiers (644) et dossiers (755)
  7. Filtrer l’API REST /wp-json/wp/v2/users
  8. Activer la 2FA sur le compte administrateur
  9. Lancer un scan WPScan et patcher les plugins vulnérables
  10. Installer Wordfence ou Sucuri et activer les alertes

La sécurité d’un WordPress n’est pas un état, c’est un processus continu. Mets à jour régulièrement le core, les thèmes et les plugins. Fais des sauvegardes automatisées (UpdraftPlus est simple et fiable). Et audite ton site avec WPScan au moins une fois par trimestre.

Si tu veux aller plus loin sur ce sujet, j’aborde la sécurité WordPress en profondeur dans ma formation Cybersécurité Défensive avec des labs pratiques sur Wireshark, Splunk et des scénarios d’attaque réels à analyser.

Mamadou
Mamadou

Je suis Mamadou Mouslim Diallo, Ingénieur télécoms - digital entrepreneur - blogueur activiste - Web développeur passionné de TICs. Je suis formateur en administration réseaux systèmes - Windows Server - Linux - réseaux Cisco

Articles: 188

Mises à jour de la newsletter

Saisissez votre adresse e-mail ci-dessous et abonnez-vous à notre newsletter

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *