Cross-Site Scripting ou attaque XSS

Il existe de nombreuses attaques informatiques différentes auxquelles nous sommes exposés, dans ce tutoriel nous allons parler de la Cyberattaque de type Cross-Site Scripting (XSS). Cette attaque consiste à injecter du code indésirable dans des applications web. Avec cela, un attaquant peut modifier le comportement de l'application, ce qui peut corrompre les données, perdre des informations, refuser le service (DoS), etc.

Par exemple, un attaquant pourrait faire en sorte qu'une page Web vulnérable redirige le trafic vers la sienne, avec de mauvaises conséquences à la fois pour le propriétaire de la page et les utilisateurs.

Quelles conséquences cela peut-il avoir ?

Varié et sérieux, mais imaginez que Facebook possède une vulnérabilité de ce type, l'attaquant l'exploite, et falsifier la page d'origine crée un clone de cette page, émulant ainsi Facebook. Les utilisateurs se connectent et l'attaquant conserve leurs informations d'identification, puis les redirige simplement vers la page officielle, de sorte que l'utilisateur le découvre rarement.

Où pouvons-nous vérifier si un site Web est vulnérable ?

Vous pouvez le faire de plusieurs manières, mais la plus courante est dans les forums ou les endroits où ils autorisent les commentaires dans le cas d'une attaque persistante, ou dans les URL dans le cas d'une attaque non persistante.

Quelle est la cause de cette vulnérabilité ?

Parce que les pages ne vérifient pas correctement les entrées de données effectuées par les utilisateurs et que la sortie n'est pas non plus codée. Donc si vous avez une page web méfiez-vous toujours des utilisateurs validant leurs données, les langages de programmation apportent déjà des fonctions qui permettent, par exemple la fonction bande_étiquette PHP supprime les balises HTML (mais regardez les mises en garde qu'il a).

Types d'attaque XSSType non persistant ou en miroirDans cette attaque, la victime reçoit une URL manipulée, qui contiendra le code à injecter en paramètre.

Type persistant ou directLes données insérées par l'utilisateur seront stockées sur le serveur, affectant tous les utilisateurs qui se connectent au Web.

Nous allons voir des exemples de la façon dont l'attaque serait menée à partir de maintenant.

NoterLe but du tutoriel est que vous puissiez tester les applications web que vous créez ou celle des personnes qui vous en donnent l'autorisation, et non pas pour que vous réalisiez des actes « malveillants ».

1. Exemple XSS non persistant


Nous souhaitons rediriger une personne vers une page que nous contrôlons, mais en lui faisant croire qu'elle visite la page d'origine, nous pouvons lui envoyer un email avec le lien raccourci (ou non), qui a le contenu suivant :
 http://www.paginadeseada.com/?search=
Avec cet exemple, il est clair à quel point il est facile d'exploiter une vulnérabilité de ce type.

2. Exemple XSS persistant


Dans un commentaire, nous pouvons mettre un code HTML ou JavaScript, qui est enregistré sur le serveur, et que chaque fois que la page contenant le commentaire est chargée, il redirige vers notre page Web, pour cet exemple, le code HTML suivant peut être inséré :
 
Nous nous tournons vers un exemple différent de ceux que nous avons vus maintenant. Nous allons maintenant voir des exemples utilisant DVWA, une application Web développée avec PHP et MySQL. Cette application est déjà disponible dans Metasploitable 2, que vous pouvez monter dans une machine virtuelle.

Cela nous permettra de tester diverses attaques Web, et nous pourrons modifier le degré de sécurité (pour les exemples, nous utilisons le plus bas), nous pourrons également voir les codes PHP qui sont attaqués, afin que vous puissiez voir ce qui ne l'est pas à utiliser dans vos codes.

3. Exemples XSS reflété DVWA


Dans cette section, nous verrons plusieurs exemples, commençons. Si on met un nom normal, pareil Test, l'application fonctionne bien, voyons l'image :

AGRANDIR

Si nous saisissons le code suivant comme nom :

 Test
On voit que le nom devient gras (peut-être dans l'image il n'est pas très apprécié) :

AGRANDIR

Et si on met une entrée, ça marchera ? Pour le tester nous insérons le code suivant :

 
Et nous voyons dans l'image suivante que cela a fonctionné:

AGRANDIR

Passons à XSS stocké (stocké).

4. Exemples XSS DVWA stockés


Nous allons effectuer plusieurs preuves de concept, la première chose que nous allons faire est d'insérer un court texte accompagné d'un script en commentaire, voyons ce qui se passe, le script est le plus simple possible, c'est le suivant :
 Bonjour et au revoir.

AGRANDIR

Quand on y entre comme sur la photo précédente, on clique sur Signer le livre d'or, le commentaire est envoyé, rien d'étrange ne se passe, la chaîne de texte est vue, il n'y a aucun signe du script, comme on peut le voir ci-dessous :

AGRANDIR

Alors, il ne s'est rien passé ? Eh bien, vérifions, actualisons la page, et nous voyons que l'alerte saute :

AGRANDIR

Vous pouvez également apprécier que le commentaire n'a que Hello, c'est pourquoi le script a été mis entre le texte, vous pouvez donc voir qu'il le lit, il s'arrête sur l'alerte et lorsque vous cliquez sur OK vous aurez le reste du texte et le reste de la page qu'il manquait (tout comme les liens verts qui se trouvaient sous la partie commentaires).

Maintenant nous allons insérer un formulaire dans le commentaire, vous pouvez voir que le nombre de caractères que l'on peut saisir est limité à 50, car nous allons inspecter le code HTML de la zone de texte du commentaire (clic droit, Inspecter) :

AGRANDIR

Nous voyons longueur max = « 50 », nous allons ajouter un 0 de plus à la fin, en restant dans 500, comme on le voit ci-dessous :

AGRANDIR

Et maintenant nous allons commenter le code HTML suivant :

 Écrive ton nom:
On voit qu'il l'accepte déjà, alors on donne à Signer le livre d'or et on voit ceci :

AGRANDIR

Le formulaire a été inséré, comme nous l'avons vérifié. Enfin, si vous souhaitez vous entraîner avec le niveau moyen en XSS stocké, essayez ce qui suit :

1er. Modifiez le nombre maximum de caractères que le champ Nom accepte, comme nous l'avons fait auparavant.

2ème. Ajoutez le nom suivant :

 Test 

3ème. En commentaire, mettez ce que vous voulez.

4ème. Envoyez le commentaire et mettez à jour l'écran, vous verrez qu'il est enregistré.

Si vous vouliez supprimer le cookie, je modifierais le script pour ce qui suit :

 
Vous verrez ce qui suit :

Ensuite, je laisse le lien vers un framework appelé XSSer qui nous aidera à détecter, exploiter et signaler les vulnérabilités XSS.

Sur sa page il vient tel qu'il est installé (dans Kali Linux 2016, il vient déjà) et des exemples d'utilisation.

Nous avons vu les possibilités qu'a un attaquant lorsqu'on lui présente une page Web vulnérable, éviter ces attaques n'est pas difficileAujourd'hui, dans n'importe quel langage de programmation, nous avons des fonctions qui nous facilitent la vie. Il est important qu'avant de lancer une page Web, vous vérifiiez ces erreurs, car cela peut ruiner votre entreprise.

Si vous voulez voir un tutoriel dans lequel cette application est utilisée, mais d'autres types d'attaques sont menées : Pentesting avec DVWA.

Enfin, un lien vous sera fourni, au cas où vous souhaiteriez voir un autre type d'attaque, qui traite aussi de l'injection de code : l'injection SQL.

Avez-vous aimé et aidé ce tutoriel ?Vous pouvez récompenser l'auteur en appuyant sur ce bouton pour lui donner un point positif

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave