3.1 [Basics] Attaques XSS : découvrir
Découvre les attaques Cross-Site-Scripting (XSS), une menace qui arrive septième dans le classement des failles les plus répandues sur le web, et face à laquelle près de 50 % des sites web actuels sont encore vulnérables.
Objectifs
- Savoir expliquer le principe général d'une attaque XSS
- Reconnaître des failles XSS potentielles basiques dans un code
- Être capable de mener une attaque XSS simple
Spoiler is coming
Printemps 2019.
Alors que le monde entier a les yeux tournés vers le Mur et l'hiver qui arrive, tu regardes ton sac de randonnée et te dis que tu as toujours eu le chic pour choisir les mauvais timings.

_Source : Reymark Franke on _Unsplash
Certes, quelques ondes de 3G t'atteignent parfois, dans la forêt du bout du monde où tu te trouves, mais pas assez pour réussir à visionner un épisode : non, juste assez pour te faire spoiler sur tous les réseaux sociaux de l'univers.

_Source : _https://funnyjunk.com/Facebook+4+spoiler+alert/funny-pictures/5170389
Excédé·e et en manque de programmation (avouons-le : la nature, c'est bien, mais le code, c'est beau), tu décides de sublimer ton désarroi existentiel en créant un réseau social alternatif où la règle principale serait de ne jamais divulgacher une série. Fier·ère de ton idée, tu profites d'une visioconférence pour montrer ton projet, entre deux déconnexions-reconnexions tremblotantes, à ton interlocuteur préféré : ta mamie, alias darkMereGrand_93, cruciverbiste le jour et hacktiviste la nuit.
En examinant ton code source, darkMereGrand_93 lève ses lunettes double foyer au ciel et te demande si tu as déjà entendu parler du computer worm Samy et de Myspace.
Pour comprendre ce que raconte ton aïeule, rendez-vous à l'étape suivante !
Un peu de culture générale pour les cinéphiles du lundi matin.
L'attaque XSS qui a cassé Myspace

_Source : _Flickr
L'attaque XSS la plus connue à ce jour a été réalisée en 2005 par Samy Kamkar sur le site Myspace. Et c'est lui qui en parle le mieux : regarde cette vidéo pour en apprendre plus.
Interview de Samy Kamkar, pour en savoir plus sur l'attaque de Myspace en cinq minutes.
Qu'est-ce qu'une attaque XSS ?
Principe général
Le Cross-Site-Scripting (XSS) est une attaque (dans le monde du hacking, on parle aussi d'exploit) qui permet à un·e pirate d'injecter du code malveillant dans un site web.
Regarde l'histoire de Bob, Alice et le vilain Mel pour observer une attaque en action.
Les attaques XSS utilisent un environnement que tu connais bien en tant que (future·e) développeur·euse, puisqu'il s'agit de la base de tout site web : le HTML, le CSS et, surtout, le JavaScript.
Un peu d'histoire : le terme de Cross-Site-Scripting vient du fait que les premières attaques XSS utilisaient des scripts hébergés sur un site malveillant et injectés dans un site victime, d'où l'idée de croisement entre deux sites différents.
Afin de te faire une idée des vecteurs qui peuvent être utilisés pour une attaque XSS, consulte quelques exemples réels : https://brightsec.com/blog/xss-attack/
Quels sont les buts d'une attaque XSS ?
En voici un descriptif général qui démontre les possibilités : https://portswigger.net/web-security/cross-site-scripting
OWASP
L'Open Web Application Security Project (OWASP) est une organisation mondiale référente en matière de cyber-sécurité. Au cours de ta carrière, ce sera ta source de doc privilégiée en ce qui concerne les attaques et leur prévention !

Histoire de faire connaissance, tu peux survoler (sans t'attarder) ce cheat sheet qui répertorie une immense variété de payloads XSS possibles.
Une liste très complète de payloads possibles.
L'histoire de Bob, Alice et le vilain Mel (exemple d'une attaque XSS stockée).
Challenge
A l'abordage !
Alerté par darkMereGrand_93, ta mamie hacktiviste, sur les risques d'attaques XSS, tu décides de lui prouver ta valeur en participant au XSS game proposé par Google.
- Trouve les réponses aux challenges 1 et 2.
- Inscris tes réponses dans un gist (ex :
Challenge 1 : <a href=alert("blop")>,Challenge 2 : <blop src="bip.png" onblop=alert("blop")>).NB : oui, les exemples donnés ici n'ont aucun sens :) - Partage le lien de ton gist en guise de solution au challenge.
Critères de validation
- Ouvrir XSS Game dans une fenêtre de navigation privée. Pour chaque challenge, copier-coller les réponses fournies. Le challenge doit être résolu par la réponse collée.
- Les deux challenges doivent être résolus par les réponses de l'élève.
Ressources partagées sur cette quête
- clair et complète, incontournable pour bien comprendre les différents mécanismeshttps://fr.wikipedia.org/wiki/Cross-site_scripting
- J'ai trouvé cette vidéo bien expliquée et clairehttps://www.youtube.com/watch?v=Bkg7JoBs2ac
- Wiki de Samy Kamkarhttps://fr.wikipedia.org/wiki/Samy_Kamkar