XSS Réfléchie    Enregistrer au format PDF

Le Cross Site Scripting, ou XSS, est la faille la plus présente sur le web, et d’assez loin. Elle est désignée par quantité de noms, parmi lesquels "faille des livres d’or", tout simplement car ceux-ci ont permi une généralisation de ces vulnérabilités faille. La faille de type XSS se caractérise par une injection possible de code arbitraire dans le code HTML qui sera rendu au navigateur. Autrement dit, l’attaquant va être capable de modifier un aspect du site ou d’injecter des scripts dans ce que la victime va ensuite voir à l’écran.


par S3cur3D , Podalirius , Ruulian

Prérequis

Pour comprendre l’ensemble de cet article, il vous faudra :

  • Savoir coder en HTML
  • Connaître les bases du PHP et du Javascript
  • Savoir ce qu’est une XSS (voir mon article sur les XSS si besoin)

Introduction

Il existe plusieurs types de failes XSS :

Les vulnérabilités XSS de type "réfléchie" ou reflected en anglais résultent de l’utilisation de données fournies par l’utilisateur dans un script quelconque, sans les modifier. Typiquement, une simulation en ligne ou une page de statistiques. Ainsi, si ces données ne sont pas modifiées, on peut ajouter du "script dans le script" qui sera lui-même éxécuté.

Ceci dit, en modifiant les données qui doivent être traitées, le résultat du XSS ne va modifier que la page que peut afficher l’utilisateur. Cela peut paraître bénin, mais ça l’est beaucoup moins quand l’attaquant utilise le Social Engineering et diffuse des pages piégées de cette façon. Ce genre de vulnérabilités est souvent utilisé pour lancer des campagnes de spam afin de ternir l’image d’un site (redirections, modifications d’apprence) ou de voler des informations (phishing).

Définition

Une XSS volatile (Reflected XSS) est un type de XSS où l’entrée utilisateur est dans un paramètre de l’url et que ce paramètre est affiché sur la page.

Explication de la faille

Prenons comme exemple une page d’un site qui affiche les résultats de la recherche de l’utilisateur.

Voici le code PHP de la page vulnérable :

La partie intéressante dans ce code, est la fonction echo, qui affiche le contenu la recherche sans filtre. Ceci nous permet donc d’entrer des balises qui vont être envoyées au navigateur sans filtres, et celui ci les interprétera comme n’importe quelle autre balise HTML de la page.

Par exemple si on tente d’envoyer <u>bonjour</u> dans le champ de recherce, le rendu sur la page sera : bonjour

La fonction echo a collé les balises HTML sans filtre dans la page, et le navigateur a interprété ces balises u.

Vous vous demandez sûrement en quoi c’est dangereux qu’un utilisateur envoie un message souligné, et bien c’est parce que si echo interprète les balises u, il va aussi interpréter les balises script.

Exploitation

Maintenant qu’on a la capacité d’interpréter nos balises, on peut passer à l’exploitation. En entrant <script>alert()</script> au moment du chargement de la page le script va être exécuté, et l’alert va être affiché. A partir du moment où on peut exécuter du Javascript on peut par exemple récupérer les cookies des autres utilisateurs.

Références

Documentations publiées dans cette rubrique