Utiliser le scanner de vulnérabilités WP Scan.

WP scan est un scanner de vulnérabilités pour WordPress. Il est développé en Ruby. Il est capable de lister les plugins utilisés et vous donner les failles de sécurité associées. Il intègre aussi un module de brute-force pour s’attaquer à l’interface d’administration de WordPress.

Avant d’utiliser WP scan, votre machine doit avoir quelques prérequis :

  • OS Linux (windows n’est pas supporté)
  • Ruby (Version >=1.9)
  • RubyGems
  • Git

 wpscan_1

Pour installer notre logiciel de test, nous allons utiliser la commande git.

Avant d’installer WP scan, il est préférable d’installer quelques librairies de développement.
#yum install gcc ruby-devel libxml2 libxml2-devel libxslt libxslt-devel libcurl-devel

wpscan_2

Une fois ces librairies installées, on peut continuer avec la commande suivante :

#git clone https://github.com/wpscanteam/wpscan.git

wpscan_3

Ensuite aller dans le répertoire wpscan.

#cd wpscan

 wpscan_4

Pour compiler (=installer) le programme on doit utiliser la commande suivante :

# gem install bundler && bundle install --without test

wpscan_5

Si à l’installation vous avez ce message d’erreur :

Could not load OpenSSL.
You must recompile Ruby with OpenSSL support or change the sources in your Gemfile from ‘https’ to ‘http’. Instructions for
compiling with OpenSSL using RVM are available at rvm.io/packages/openssl.

wpscan_6

Je vous conseille d’installer RVM (Ruby Version Manager) (http://blog.jeffcosta.com/2011/07/22/install-ruby-version-manager-rvm-on-centos-6/). Puis ensuite de taper la commande suivante (cela devrait résoudre vos problèmes) :

#rvm reinstall 1.9.3 --with-openssl-dir=/usr/local

wpscan_7

Nous pouvons maintenant utilisé wpscan. Pour utiliser correctement le logiciel vous devez vous trouvez dans le répertoire wpscan.

La première commande à réaliser, c’est de vérifier si une mise à jour existe. Mise à jour des failles, des logiciels, cette étape est très importante et à faire avant chaque utilisation.

#ruby wpscan --update

wpscan_8

Voici maintenant quelques commandes que vous pouvez utiliser (sur votre blog et en toute connaissance de cause) pour faire un diagnostic des vulnérabilités par exemple.

  • Utilisation simple

Avec cette commande vous pourrez connaître la version de WordPress, le nom du template, la liste des plugins, …. Ce test est non intrusif.

#ruby wpscan.rb --url quick-tutoriel.com

wpscan_9

1: Les entrées intéressantes des fichiers de configurations de WordPress comme le robots.txt (Le fichier robots.txt est un fichier texte, situé à la racine d’un site web, permettant d’indiquer aux robots d’indexation des moteurs de recherche les pages pouvant ou non être indexées. Ce fichier contient des instructions, que tout moteur de recherche se doit de lire avant de commencer à explorer un site web.)
2: Vous avez aussi le type de serveur web ici LiteSpeed, la version de PHP.
3: Vous avez la version de WordPress.
4: Vous avez le nom et la version de votre thème et quelques renseignements comme le nom de l’auteur ou encore le chemin du fichier css.

Lorsque vous avez un point d’exclamation rouge, cela veut dire qu’il est important de corriger l’erreur. Soit en mettant à jour WordPress où ses plugins soit en supprimant le fichier. La plupart d’entre nous, laisse traîner le fichier “readme.html”. Supprimez le, il fournit les informations de votre version de WP.

wpscan_10

Ensuite dans la deuxième partie de l’analyse vous avez tous les plugins reconnus par wpscan qui sont installés sur le blog. Idem lorsque vous voyez un point d’exclamation rouge vous devez apporter une correction.

[error]Astuce du Pro! Typiquement ici vous voyez que l’on peut lister le répertoire du plugin Codecolorer par exemple et cela peut-être une source d’ennui. Pour éviter cela il vous suffit d’ajouter à la racine du répertoire du plugin un fichier index.htm.[/error]

Voici un exemple de contenu du fichier index.htm:

[php]<?php
# Silence is golden.
?>[/php]

L’autre commande qui peut être intéressante et qui permet de scanner complètement un blog WordPress en énumérant les utilisateurs, les plugins vulnérables, les thèmes vulnérables connus, …

#ruby wpscan.rb --url quick-tutoriel.com --enumerate

Vous pouvez affiner la détection des vulnérabilités en précisant une option supplémentaire par exemple uniquement les plugins vulnérables (–enumerate vp), les utilisateurs (–enumerate u), … Vous pouvez consulter le détail des options à cette adresse : http://wpscan.org

La première partie du test reprend les éléments ci-dessus puis dans la deuxième partie vous voyez la liste des plugins posant problème ainsi qu’un lien pointant vers une explication de la vulnérabilité et éventuellement un correctif.

wpscan_11

  • 1: Nom et version du plugin posant problème.
  • 2: Lien web pointant vers des explications de la vulnérabilité et des correctifs éventuels

Après les plugins, wpscan s’attèle à vérifier votre thème, puis il va rechercher les fichiers timthumb vulnérables (Timthumb.php est une bibliothèque que de nombreux thèmes WordPress utilisent pour le redimensionnement automatiquement des images mais qui comportent de nombreuses vulnérabilités) et le scan va finir par lister tous les utilisateurs présents dans votre configuration WordPress.

wpscan_12

  • 1: énumération des fichiers concernés par la faille timthumb.
  • 2: énumération de tous les utilisateurs présents dans votre configuration.

Comme vous pouvez le constater cet utilitaire est très puissant. Quick-Tutoriel n’est pas responsable d’une utilisation malveillante du logiciel. Avant de vous lancer à scanner tous les blogs WordPress du web, je vous conseille de le faire avant sur votre blog et de corriger toutes les erreurs détectées par wp-scan.

wpscan_13

Voici quelques contre-mesures que vous pouvez mettre en place pour améliorer la sécurité de votre WordPress.

Modifications à faire le fichier .htaccess :

  • Rajouter ce code dans votre fichier .htaccess pour éviter la faille qui énumère les utilisateurs de votre blog WordPress.
# BEGIN Stop wordpress username enumeration vulnerability
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{QUERY_STRING} ^/?author=([0-9]*)
# END Stop wordpress username enumeration vulnerability
  • Rajouter ce code dans votre fichier .htaccess pour lutter contre le Full Path Disclosure (FPD). Cette faille permet d’afficher le chemin d’accès complet d’un script vulnérable. Il est exécuté par injection de caractères inattendus dans certains paramètres d’un page web. Le plugin ou script installé sur votre hébergement ne prévoit pas le caractère injecté et renvoie un message d’erreur contenant des informations sur l’erreur et même le chemin complet du script cible.
# BEGIN FIX FULL PATH DISCLOSURE (FPD)
php_flag display_errors off
# END FIX FULL PATH DISCLOSURE (FPD)
  • Bloquer l’accès aux répertoires de votre installation de WordPress en ajoutant à la fin de votre fichier .htaccess cette ligne :
# BEGIN FIX DIRECTORY LISTING
Options All -Indexes
# END FIX DIRECTORY LISTING
  • Protéger le fichier wp-config.php, il contient tout le paramétrage de votre site (hors plugins) et notamment les codes d’accès à votre base de données. Rajouter ces lignes dans votre fichier .htaccess :
# BEGIN PROTECT WP-CONFIG.PHP
<Files wp-config.php>
order allow,deny
deny from all
</Files>
# END PROTECT WP-CONFIG.PHP

Modifications à faire le fichier functions.php de votre thème :

  • Rajouter dans le fichier functions.php de votre thème la ligne suivante qui permet de supprimer la version de WordPress dans le code source de celui-ci, malgré tout wpscan est très intelligent et utilise plusieurs méthodes pour récupérer la version de WordPress. A ce jour je n’ai rien trouvé de réellement efficace pour supprimer la version de WordPress.
add_filter('get_the_generator_rss2', '__return_false');
add_filter('get_the_generator_atom', '__return_false');
remove_action("wp_head", "wp_generator");
  • Masquer les erreurs de connexions à l’administration de WordPress. Le message retourné par WordPress en cas de problème de connexion est trop explicite. Pour banaliser le message d’erreur rajouter cette ligne dans votre fichier functions.php de votre thème :
add_filter('login_errors',create_function('$erreur', "return 'Erreur de connexion';"));

Astuces générales à appliquer sur WordPress :

  • Rajouter un fichier index.php dans vos répertoires de plugins et de thèmes pour éviter le listing de ceux-ci.
  • Mettre à jour régulièrement votre WordPress, vos plugins et votre thème.
  • Faire une sauvegarde régulière de votre base MySQL et des fichiers de WordPress.
  • Utiliser le plugin Askimet (https://wordpress.org/plugins/akismet/) qui permet de surveiller et nettoyer les commentaires indésirables.
  • Utiliser le plugin Limit Login Attemp (http://wordpress.org/plugins/limit-login-attempts/) pour bloquer les tentatives de hack.

Voilà quelques protections simples à mettre en place qui amélioreront la protection de votre blog WordPress. Et n’oublier pas sortez couvert !!!!

Bien sûr si vous avez d’autres techniques de protection n’hésiter pas à les laisser en commentaire ou alors envoyer moi un mail depuis le formulaire de contact en cliquant-ici.

That’s All.

3 Potins

  1. Merci pour cet article, il y a Wordfense mais j’ai pu voir plusieurs sites qui avaient du spam enregistré dans la table « Hit » de Wordfense dnoc je la déconseille fortement, surement une faille non résolue depuis maintenant un paquet de temps.

  2. L’extension carla fait la majorité de ce qui est proposé, c’est gratuit=)

  3. Bonjour
    Pour sécuriser les sites Worpress de mes clients j utilise l extension Itheme security ,avec ce plugin vous sécurisez facilement votre site Worpress …

Laisser un commentaire

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