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