• Aucun résultat trouvé

Dans ce chapitre d’annexe, nous pr´esentons diverses vuln´erabilit´es d´ecouvertes sur des sites Web existants et ayant un nombre important d’utilisateurs. Pour chaque vuln´erabilit´e, la date de la d´ecouverte est indiqu´ee et les personnes en charge du site ont ´et´e averties en respectant le mod`ele responsible disclosure [Frei 2009].

Les vuln´erabilit´es suivantes ont ´et´e trouv´ees en appliquant l’algorithme du cha-pitre5pour les applications Web puis la m´ethode de d´etection des XSS de la section

6.2. Pour montrer que cette m´ethode a ´et´e automatis´ee, nous avons gard´e unique-ment les vuln´erabilit´es trouv´ees sans information fournies de la part de l’utilisateur (sauf le point d’entr´ee de l’application). Nous nous concentrons donc sur les parties publiques et non celles n´ecessitant de l’authentification.

Pour chaque site, un mod`ele partiel d’EFSM (uniquement les parties accessibles depuis le point d’entr´ee) du site a ´et´e inf´er´e. Comme l’EFSM poss`ede des fonctions de sortie, nous avons pu d´etecter qu’un ou plusieurs param`etres d’une requˆete ont ´

et´e r´efl´echis dans une sortie. Un chemin est ensuite calcul´e en partant de l’´etat initial de l’automate, passant par la requˆete contenant le param`etre r´efl´echi et terminant par la r´eflexion de ce param`etre. Afin d’´eliminer les ´eventuels faux positifs, des tests sont effectu´es avec plusieurs chaˆınes de caract`eres g´en´er´ees al´eatoirement (lettres et chiffres). Si la r´eflexion est confirm´ee, une s´erie de scripts XSS est test´ee sur ce param`etre pour confirmer la vuln´erabilit´e.

A.1 Roland-Garros

La premi`ere page du site contient 119 liens et un seul formulaire, celui pour la recherche. Une fois le formulaire parcouru, la sortie obtenue contient une sortie d´eterministe qui reprend la chaˆıne de caract`ere recherch´ee pour afficher le message

il n’y a pas de r´esultat pour ’chaˆıne’. Veuillez effectuer une nouvelle recherche..

Le formulaire de recherche du siterollandgarros.comne filtre pas les entr´ees des utilisateurs. La r´eflexion est faite dans un ´el´ement de type DIV donc n’importe quel code avec les balises SCRIPT peut ˆetre inject´e comme dans la figureA.1.

La page contient notamment des liens vers la boutique du site. Un attaquant pourrait modifier ces liens afin de tromper l’utilisateur et r´ecup´erer ses informations.

Figure A.1 – XSS sur rolandgarros.com

A.2 Ensimag

La premi`ere page contient 168 liens et 2 formulaires qui sont identiques. Ce formulaire de recherche poss`ede 12 param`etres : 11 cach´es et 1 param`etre pour les mots cl´es recherch´es. Chaque param`etre cach´e sert `a restreindre la recherche `a une certaine langue ou `a une certaine partie du site. Une fois le formulaire envoy´e, la page de sortie contient 7 r´eflexions de la chaˆıne recherch´ee. Seule une r´eflexion est exploitable directement puisqu’elle est situ´ee dans une balise de type H1 dans laquelle on peut directement ins´erer une balise SCRIPT. Trois r´eflexions, dont une dans le titre, sont correctement filtr´ees en empˆechant d’ouvrir une nouvelle balise. Les trois derni`eres r´eflexions sont aussi exploitables, mais n´ecessitent de fermer la balise contenant la r´eflexion au pr´ealable.

Le formulaire de recherche du siteensimag.grenoble-inp.frne filtre pas les entr´ees des utilisateurs. La r´eflexion est faite dans un ´el´ement de type H1 donc n’importe quel code avec la balise SCRIPT peut ˆetre inject´e comme illustr´e dans la figureA.2. La page contient notamment des liens vers les e-services et le formulaire de connexion de Grenoble INP. Un attaquant pourrait modifier ces liens tromper

l’uti-A.3. adopteunmec.com 167

lisateur et r´ecup´erer ses informations.

Figure A.2 – XSS sur le site de l’Ensimag

A.3 adopteunmec.com

Cette vuln´erabilit´e diff`ere des pr´ec´edentes par la fa¸con dont elle est exploit´ee. La liste de script JavaScript utilis´ee pour tester si les r´eflexions sont bien des vuln´erabilit´es n’´etait pas suffisante. Elle contenait des scripts pour les ´ev´enements, mais aucun qui permettait une ex´ecution automatique du code au chargement de la page. Nous avons donc ajout´e un script `a cette liste.

Le site de rencontres www.adopteunmec.com conserve les donn´ees envoy´ees quand un utilisateur effectue une recherche sur le site. Une fois la recherche ef-fectu´ee, les valeurs des champs du formulaire sont r´eutilis´ees dans les attributs

value.

Fermer la balise INPUT correspondant au champ pseudo pour ensuite utiliser une balise SCRIPT ne fonctionne pas, mais nous pouvons utiliser un ´ev´enement comme onfocus qui d´eclenche un script quand l’´el´ement a le focus. En plus, nous pouvons utiliser le mot cl´e autofocus pour d´eclencher cet ´ev´enement apr`es le char-gement de la page comme dans la figureA.3.

On peut voir que les caract`eres des parenth`eses ouvrantes et fermantes sont encod´es diff´eremment, mais le script est quand mˆeme ex´ecut´e (test´e sur Firefox

30).

FigureA.3 – XSS sur le site adopteunmec.com

A.4 IAE Grenoble

Le site de l’IAE de Grenoble www.iae-grenoble.fr utilise le param`etre GET nomm´e candidat pour connaˆıtre l’origine des utilisateurs voulant se connecter au site de gestion des pr´einscriptions en Master. Sur la page de connexion, le param`etre

candidat est r´efl´echi en tant que champ cach´e du formulaire comme on peut le voir sur la figureA.4.

Comme la valeur est r´efl´echie dans un attribut d’une balise INPUT, il faut avant tout fermer cette balise et utiliser ensuite la balise SCRIPT.

A.5. QueChoisir.org 169

connexion.

Figure A.4 – XSS sur le site de l’IAE Grenoble

A.5 QueChoisir.org

Le sitequechoisir.orgne filtre pas les donn´ees provenant de la fonction recherche du site. Comme la valeur est r´efl´echie dans un attribut d’une balise INPUT, il faut avant tout fermer cette balise et utiliser ensuite la balise SCRIPT comme dans la figureA.5.

A.6 Direct-assurance

Les donn´ees de la fonction recherche du site de l’assurance direct-assurance.fr

FigureA.5 – XSS sur le site de QueChoisir

filtr´ees correctement, il est possible de fermer le commentaire HTML contenant le script, puis d’ouvrir une nouvelle balise SCRIPT qui permet d’ex´ecuter le code de notre choix comme illustr´e dans la figure A.6.

A.7 Centerblog.net

Le site centerblog.net ne filtre pas correctement les donn´ees provenant du for-mulaire de recherche. Il est alors possible d’injecter du code via une balise SCRIPT comme dans la figure A.7.

A.7. Centerblog.net 171