FAILLE XSS KESAKO ?

XSS Kesako ?

Ce tutoriel est le premier d’une série portant sur la sécurité informatique. Son but est à titre exclusivement pédagogique. Il a pour but de vous montrer comment bien coder/se protéger et vous informer des risques. En aucun cas l’auteur de ce tutoriel, les membres de l’équipe du site SHZ ne pourraient être tenu responsable de vos actes. Nous nous dégageons de toute responsabilité.

Qu’est-ce que le XSS ?

Le Cross-Site Scripting plus communément appelé XSS est une attaque de type HTML et ou Java Script. Cependant on le nomme XSS et pas CSS car ce dernier est déjà utilisé pour les feuilles de style. Cross faisant référence à la croix, le ‘X’ était tout trouvé.

Un site pour fonctionner doit avoir une partie client (le navigateur) et une partie serveur (ce dernier est optionnel pour un site statique). La partie client est codée en HTML, CSS, Java Script. Le point commun de ces derniers est qu’ils seront tous exécutés et interprétés par le navigateur. Pour la partie serveur, on utilise du PHP qui lui est interprété par le serveur.

Une attaque XSS vise à injecter du code HTML et ou Java Script sur la partie cliente.

Quel est le risque de ce type d’attaque ?

Ce type d’attaque ne vise pas les serveurs mais les utilisateurs d’un site. Cela peut aller du vol de cookie à l’installation de Malware, de la simple redirection au déni de service. En fait cette faille peut faire tout ce que le Java Script permet de faire.

Exemple d’attaque ?

Voici le code PHP que je vais utiliser tout le long de cette article :

<?php
echo "Bonjour ".$_GET['nom']." !";
?>

 

Ainsi si j’envoie mon nom comme ceci : xss_shz.php?nom=Luyer Romain
Je vais obtenir : Bonjour Luyer Romain !

En injectant du code HTML xss_shz.php?nom=<b>Luyer</b> Romain
Je vais obtenir : Bonjour Luyer Romain ! Notre Injection a fonctionné. Je peux effectuer un changement de couleur, police, taille etc.

Maintenant tentons avec du Java Script :
En injectant le code d’une simple MessageBox : alert(‘Romain Luyer’) ce qui donne xss_shz.php?nom=<script>alert(‘Romain Luyer’);</script>
J’obtiens :xss_java_script_alert

Il m’est désormais possible d’utiliser la totalité des fonction Java Script. Ainsi Je peux effectuer une redirection : xss_shz.php?nom=<script>window.location=(« http://www.google.fr »);</script>

 

Toutes les attaques que je vous ai montré sont des attaques non permanentes car au rechargement de la page elle aura disparu. Mais dans le cas d’un commentaire, celui-ci est stocké dans la BDD et donc chaque personne visitant une page où un commentaire posté faisant ce type d’attaque se verra « infecté ». On appelle ce type d’attaque une attaque permanente.

Comment se protéger ?

Pour se protéger c’est très simple vous avez à disposition deux fonctions htmlspecialchars et htmlentities. Ces fonctions remplacent les symboles que vous lui envoyés par leur équivalent en HTML. En outre, la seule différence est que htmlentities travail sur la totalité des symboles alors que htmlspecialchars est sélectif.

Une attaque bien connu ?

En 2005 le site myspace fut victime de la propagation la plus rapide d’un vers informatique que l’on ai connu. Son créateur Samy Kambar créa un vers se servant d’une faille XSS pour se propager.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *