XSS - Techniques - Pentesting Web

XSS (Reflected) :

Réfléchi (Reflected) : Ce type de XSS se produit lorsque les données fournies par l'utilisateur sont reflétées dans la réponse HTTP sans être correctement vérifiées. Cela permet à un attaquant d'injecter du code malveillant dans la réponse, qui est ensuite exécuté dans le navigateur de l'utilisateur.

  • Dans ce cas, nous pouvons injecter du code HTML comme dans l'exemple suivant test <h1> Test </h1> :

  • Nous pouvons constater que nous avons pu modifier la taille du texte avec la balise h1 :

XSS (Stored) :

Stocké (Stored) : Ce type de XSS se produit lorsqu'un attaquant est capable de stocker du code malveillant dans une base de données ou sur le serveur web qui héberge une page web vulnérable. Ce code est exécuté chaque fois que la page est chargée.

Si nous lançons un script comme le suivant dans un formulaire : <script>alert("XSS")</script> et que nous obtenons l'alerte suivante, cela signifie que l'utilisateur sur le site web est vulnérable à ce type d'attaque :

Nous pourrions rediriger l'utilisateur vers un site web vulnérable et effectuer une attaque de phishing :

Ce code JavaScript crée un formulaire de connexion sur une page web et envoie les données saisies (adresse e-mail et mot de passe) à une adresse IP spécifique via une requête HTTP en utilisant fetch().

Nous écouterions sur le port 80 avec python3 :

XSS (Basé sur le DOM) :

Basé sur le DOM : Ce type de XSS se produit lorsque le code malveillant s'exécute dans le navigateur de l'utilisateur via le DOM (Document Object Model). Cela se produit lorsque le code JavaScript sur une page web modifie le DOM de manière vulnérable à l'injection de code malveillant.

Le script suivant serait capable de capturer toutes les frappes de clavier de l'utilisateur et de nous les envoyer sur un serveur python3 via le port 80 :

Nous pouvons écouter en filtrant uniquement les caractères qui nous intéressent avec grep :


Pour obtenir le cookie de session depuis un serveur tiers, nous créerions ce fichier sur notre ordinateur test.js

Dans le formulaire, nous enverrions ce script :

Nous écoutons et obtenons le cookie de session de l'utilisateur :

Pour écrire quelque chose au nom d'une autre personne, nous pourrions suivre les étapes suivantes :

Intercepter la requête avec Burpsuite et copier le contenu encadré en rouge :

Le script suivant effectue une opération GET vers une URL locale, analyse la réponse HTML pour identifier un jeton CSRF, puis effectue une opération POST avec certaines données, en incorporant le jeton CSRF, vers la même URL. La variable 'data', encodée au format URL, transmettra les informations au serveur où ce script est implémenté. Il est essentiel de souligner qu'il est nécessaire de modifier les valeurs de 'data', du jeton et de l'adresse IP.

Dans le formulaire, nous enverrions ce script :

Nous écoutons sur le port 80 avec python3 :

Le message envoyé au nom d'un autre a été transmis :

Mis à jour

Ce contenu vous a-t-il été utile ?