Category

Sécurité

Faille critique dans le plugin JetPack

Faille critique dans le plugin JetPack

By | Sécurité | No Comments

Une faille critique dans le plugin JetPack expose plus d’un million de sites.

C’est la société Succiri, célébré pour son plugin du même nom dédié à la sécurité de WordPress qui a découvert cette faille critique dans le plugin JetPack et qui a donné l’alerte.
D’après Succuri, cette faille est de type XSS soit une faille permettant de hacker la base de données SQL via l’injection de code JavaScrip.

La faille en question se trouve dans le module Shortcode Embeds. À l’origine, ce module permet au visiteur du site de placer différents contenus tels que des images, liens, tweets et des vidéos, mais avec cette faille XSS il est également possible d’y injecter du code JavaScript malveillant.

Une faille de sécurité particulièrement exposée par le succès de JetPack

Le problème c’est que ce plugin est l’un des plus utilisés pour ceux qui souhaitent créer un site sur wordpress. Dans nos formations wordpress, la première chose que nous expliquons, c’est que WordPress est le meilleur CMS mais avec une conséquence : Il est la cible de toutes les attaques. Du coup, c’est la même chose pour un plugin. Un plugin aussi généraliste et autant utilisé est du coup très exposé. Bref, à la moindre faille ce sont plusieurs centaines de milliers de sites qui sont exposés, une aubaine donc pour ceux qui parviennent à injecter du code malveillant.

Heureusement, l’équipe de développeurs de JetPack a déjà réagi et a publié un correctif estampillé 4.0.3. L’avantage d’un plugin à succès, c’est qu’il est également très surveillé et que les corrections sont très rapides : Donc… pas d’inquiétude;)

Liste des utilisateurs Wordpress

Liste des utilisateurs WordPress avec WPSscan

By | Plugin Wordpress, Sécurité | No Comments

Depuis le terminal, à l’aide de WPscan, il est possible de retourner la liste des utilisateurs WordPress sans y être identifié au préalable.

WPscan est une puissante application écrite en Ruby qui permet de passer en revue les failles de sécurités des sites WordPress.

Parmis ces nombreuses fonctionnalités, il est possible d’afficher la liste des utilisateurs WordPress à l’aide de la commande ci-dessous:


# Enumére les utilisateur de l'ID 1 à 10
ruby wpscan.rb --url https://formation-wp.com --enumerate u

# Enumére les utilisateur de l'ID 10 à 50
ruby wpscan.rb --url https://formation-wp.com --enumerate u[10-50]

Le résulatats est retourner sous la forme d’un tableau.


+----+----------+------------------+
| Id | Login    | Name             |
+----+----------+------------------+
| 1  | user1    | User1 Test       |
| 2  | user2    | User2 Test       |
+----+----------+------------------+

Dans le champs Login figure les identifiants necessaires pour se connecter à l’admin de WordPress.
Dans le champs Name figure le nom qui est affiché publiquement sur le site (dans les billets de blog notamment).

Autant pour le champs Name, WPScan fait bien le distinguo entre les majuscules et les minuscules autant pour le champs Login il ne le fait pas. Autrement-dit, user1 et user2 pourraient très en contenir des majuscules sans qu’on puisse savoir où elles se trouvent.

Quant on sais que les pirates informatiques adorent entrer par la grande porte, cela peut avoir un avantage lors de tentatives d’ataque de type brut-force. En mixant la case dans vos identifiants et en utilisant des mots de passe fort, les pirates ne sont pas prêts d’entrer par là.

Encore faut-il que le champs Name ne trahissent pas la case. En effet, lors de la creation d’un nouvel utilisateur, WordPress demande de créér un identifiant (soit Login). Identifiant, qui sera repris comme nom public (soit Name).

Pour remédier à ce probème, il suffit de se connecter à l’admin de WordPress avec le nouvel identifiant, puis d’allez dans Utilisateurs -> Tous les utilisateurs -> modifier de changer le champs Pseudonyme (obligatoire) par autre chose puis de le séléctionner dans Nom à afficher publiquement.

rss-functions.php

Full Path Disclosure sur le fichier rss-functions.php

By | Aide et astuces, côté serveur, Sécurité, Wordpress 4.2 | One Comment

Full Path Disclosure ou (FPD) est un faille de sécurité qui concerne le fichier /wp-includes/rss-functions.php sur les sites WordPress.

 

Qu’es ce qu’une Full Path Disclosure ?

Il s’agit d’une vulnérabilités permettent de voir le chemin d’accès au webroot dans la fenêtre du navigateur. Si votre site est assujettie à cette faille, le simple fait de taper l’URL complète du fichier rss-functions.php (ex: http://site-wordpress.fr/wp-includes/rss-functions.php) affichera dans le navigateur une Fatal error ainsi que le chemin complet depuis la racine du serveur jusqu’à ce fameux fichier rss-functions.php.

 

Fatal error: Call to undefined function _deprecated_file() in /homepages/19/d253383552/htdocs/wp-includes/rss-functions.php on line 8

 

La faille FDP est executé en injectant un caractère inattendu à certains paramètres d’une page web. Le script défaillant, ne s’attendant pas à l’injection de ce caractère, retourne un message d’erreur dans lequel figure, le nom de la fonction PHP incriminé _deprecated_file(), le webroot /homepages/19/d253383552/htdocs/ ainsi que le numéro de ligne où se trouve la fonction line 8.

 

Quel sont les risques ?

Les vulnérabilités FPD sont généralement perçues comme des menaces à faibles risques. Toutes fois, il ne faut pas oublier que les messages d’erreurs sont des gardes fous, qui s’adressent aux développeurs afin qu’ils puissent garantir code stable et intègre et non aux utilisateurs.

 

Local File Include et injection SQL

La faille Local File Include (LFI) permet l’injection de fichier malveillant sur le serveur. Quant à l’injection SQL appelé aussi faille XSS, permet quant à elle d’injecter du code (écrit en JavaScript) malveillant interprété par le serveur.

Mais pour s’assurer que ces scripts malveillants pointent bien vers les bons fichiers, il est nécessaire de connaitre son emplacement dans l’arborescence.

Et c’est à ce moment précis qu’une petite faille du type Full Path Disclosure est la bienvenue. Devenant pour l’occasion un véritable mouchard.

Comment combler la faille ?

 

La faille Full Path Disclosure peut être facilement comblé en désactivant l’affichage des messages d’erreur par le serveur Apache. Deux méthodes sont possibles:

Depuis le fichier de configuration de PHP, /etc/php5/apache2/php.ini


display_errors = 'off'

Depuis le fichier de configuration d’Apache, /etc/apache2/apache2.conf


php_flag  display_errors  off

Nota: Les chemins mentionnés ci-dessus s’appliquent au système  Debian et ses dérivée tel que Ubuntu. Il est possible que ces chemins diffèrent en fonction du système d’exploitation utilisé.

 

Le cas 1&1

Pour une raison inconnu, les serveurs Web de chez 1&1 sont configurer avec l’option display_errors = ‘on’. Malheureusement il n’est pas possible de changer ce paramètre sur off.

Pour résoudre ce problème, deux autres méthodes sont encore exploitables.

  1. La suppression pur et simple du fichier rss-functions.php. En effet, ce fichier est une relique, remplacé depuis par rss.php lui aussi un déprécier et remplacé par class-simplepie.php. Si après cette suppression, un plugin ou une fonction du thème rencontre des difficultés avec les flux RSS, rétablissez le fichier rss-functions.php et préférez la seconde méthode.
  2. Editer le fichier rss-functions.php et y ajouter le code ci-dessous juste avant la fonction:

(isset($var) && is_array($var)) ? logfunction() : /*continue*/;

Moins conviviales et pouvant être considérées comme du rafistolage, ces deux dernières méthodes ont un inconvenant commun: Les mise à jour de WordPress. A chaque fois que WordPress est mis à jour, un nouveau fichier rss-functions.php est créé, écrasant à chaque fois vos modifications. C’est pourquoi, il faudra renouveler l’opération après chaque mise à jour.

 

Automatiser les mises à jour sur WordPress

By | sauvegarde wordpress, Sécurité, Wordpress 3.7, Wordpress 4.2 | No Comments

L’une des grandes avancées de WordPress 3.7, c’est la mise à jour automatique du programme. S’il reste la mise à jour des plugins à faire, la mise à jour du CMS se fait automatiquement. Ceux qui utilisent la fonction recevront même un email directement dans leur BAT.

C’est désormais une nécessité depuis la version 4 de WordPress et des malheureuses, mais régulières failles de sécurité. Ne serait ce que la dernière faille de sécurité de wordpress en date qui n’était pas violente, à condition de faire la mise à jour 4.1.2 qui a permis de régler le problème tout de suite.

Cependant, une mise à jour doit être optimisé et ne doit pas vous bloquer votre site. C’est pourquoi que l’automatisme c’est bien, mais à condition de mettre en place un système de sauvegarde automatique de votre base de données, chaque semaine, qui permettra de vous aider si la mise à jour automatique fait planter WordPress.

D’autres ont préféré refuser ces automatismes pour avoir la main et garder le contrôle sur un éventuel plantage. Solution idéale c’est vrai, mais à condition d’avoir un seul site à gérer. Nous qui en avons une centaine, c’est plus compliqué.

Dans ce cas précis on organise en parallèle des sauvegardes automatiques, le nécessaire pour connaître les sites à risque et les autres.

Du coup, les automatismes, nous les réglons à la main : Démarrons par la plus simple, le réglage des mises à jour plugins et thèmes:

Pour cela il faut aller dans le fichier functions.php, pour rajouter les deux lignes suivantes:

add_filter( 'auto_update_plugin', '__return_true' ); // Plugins
add_filter( 'auto_update_theme', '__return_true' ); // Thèmes

La première ligne activera la mise à jour automatique des plugins, la deuxième la mise à jour automatique des thèmes.

 

Ensuite, le réglage du core, des réglages plus avancés et bien précis.

Pour activer les mises à jour mineures:

add_filter (‘allow_dev_auto_core_updates’, ‘__return_true’);

Pour l’activation des mises à jour majeures:

add_filter (‘allow_major_auto_core_updates’, ‘__return_true’);

Attention, à bien noter : Si les mises à jour majeures sont plus importantes dans le fonctionnement du site, les mises à jour mineures sont souvent des mises à jour d’ajustement et de sécurité : Donc si la différence est faite pour wp, nous vous conseillons d’activer les deux, et même plus les mises à jours mineures, security first !

wpscan

WPScan – Le guide

By | Sécurité, Wordpress 3.6, Wordpress 3.7, Wordpress 3.8, wordpress 3.9, wordpress 4.0, Wordpress 4.1 | No Comments

WPScan est un logiciel très puissant, permettant de déceler les failles de sécurité de votre site WordPress.

Ce guide n’a pas pour vocation de faire de ses lecteurs des hackers chevronnés du type black hats, bien au contraire. L’idée est de se positionner du coté des white hats. C’est pourquoi, la fonction brut force de WPScan ne sera pas décrite dans ce guide.

Dans ce guide consacré à WPScan, il sera abordé les thèmes suivants: l’installation sur les systèmes Unix, l’analyse des failles de sécurité des thèmes et des plugins WordPress ainsi que quelques conseils pour combler ces failles.

 Installer WPScan

Il faut savoir que WPScan fonctionne exclusivement sur les systèmes Linux et Mac OS X. Par conséquent aucun fichier d’installation n’est prévu pour Windows.

Codé en Ruby, WPScan nécessite l’installation de certains logiciels qui varie entre Linux et Mac OS.

1 – Pous Linux :

  • Ruby >= 1.9.2 – Recommended: 2.2.0
  • Curl >= 7.21 – Recommended: latest – FYI the 7.29 has a segfault
  • RubyGems – Recommended: latest
  • Git

2 – Pous Mac OS X :

  • Apple Xcode
  • Command Line Tools
  • libffi

Téléchargez, puis installez WPScan en suivant les instructions décrites sur le site officiel.

Pour ceux qui ne souhaitent pas installer WPScan sur leur système, il est possible de télécharger l’une des distributions Linux suivante:

WPScan y est déjà installé, et ces distributions Linux fonctionnent parfaitement en live CD/USB.

Une fois l’installation terminée, il faut tout d’abord mettre à jour la base de données de WPScan afin que le logiciel puisse effectuer ses analyses avec les dernières failles de sécurité connues.

Pour cela ouvrez votre terminal en tant que root et taper la ligne de code suivante:


# wpscan --update

Utiliser WPScan

Pour commencer, lancez une simple analyse de votre site à l’aide de la commande suivante:


# wpscan -u www.votre_site.com

Dans la liste qui s’affiche, doit apparaitre des informations telles que: la version de WordPress, les thèmes installés, les plugins installés précédé des pictogrammes suivants:

[+] Aucune vulnérabilité détécté.

[+] Vulnérabilité faible. A corriger tout de même.

[!] Vulnérabilité forte. A corriger de toute urgence.

La plupart des failles détectées ici peuvent être comblées en effectuant des mises à jour ou bien en supprimant certains fichiers tels que les readme.

Une fois tous les pictogrammes [+] au vert, taper la ligne de code suivante pour faire une analyse plus poussée:


# wpscan -u www.votre_site.com -e

Plus poussive, cette analyse est bien plus longue que la précédente. De plus lors de la un nouveau pictogramme apparaît [ i ]. Précédé du pictogramme [!], il indique que la faille détectée a été corrigée dans une version plus récente du plugin.

Le mot de la fin

Pour plus d’informations sur WordPress est la sécurité, un article intitulé Sécuriser WordPress dès l’installation est disponible sur ce site. En effet certaines failles peuvent être corrigées dès l’installation. Elle concerne notamment la base de données SQL. Ces failles ne sont pas analysées par WPScan.

De plus, même si l’utilisation de la fonction brut force de WPScan n’est pas expliqué ici, il n’est pas hors de propos de regarder la liste de plugins réputés sûrs pour empêcher cela.