javascript injection tutorial
Qu'est-ce que l'injection Javascript?
Javascript est l'une des technologies les plus populaires et est le plus largement utilisé pour les pages Web et les applications Web.
Il peut être utilisé pour réaliser différentes fonctionnalités de site Web. Cependant, cette technologie peut entraîner des problèmes de sécurité, dont le développeur et le testeur doivent être conscients.
Javascript peut être utilisé non seulement à de bonnes fins, mais aussi pour certaines attaques malveillantes. L'une d'entre elles est l'injection Javascript. L'essence de JS Injection est d'injecter le code Javascript, qui sera exécuté du côté client.
Dans ce tutoriel, nous en apprendrons plus sur la façon de vérifier si l'injection Javascript est possible, comment l'injection JS peut être effectuée et quelles sont les conséquences que l'injection JS peut entraîner.
Ce que vous apprendrez:
- Risques de l'injection JavaScript
- Pourquoi est-il important de tester JS Injection?
- Comparaison avec d'autres attaques
- Vérification de l'injection JavaScript
- Modification des paramètres
- Modification de la conception du site Web
- Comment tester contre l'injection JavaScript
- Protection possible contre cette attaque
- Conclusion
- lecture recommandée
Risques de l'injection JavaScript
JS Injection offre à un utilisateur malveillant de nombreuses possibilités de modifier la conception du site Web, d’obtenir des informations sur le site Web, de modifier les informations du site Web affiché et de manipuler les paramètres (par exemple, les cookies). Par conséquent, cela peut entraîner de graves dommages au site Web, une fuite d'informations et même un piratage.
L'objectif principal de JS Injection est de modifier l'apparence du site Web et de manipuler les paramètres. Les conséquences de l'injection JS peuvent être très différentes - de la conception dommageable du site Web à l'accès au compte de quelqu'un d'autre.
Pourquoi est-il important de tester JS Injection?
Beaucoup demanderaient si le test d'injection JS est vraiment nécessaire.
La recherche de vulnérabilités d'injection JS fait partie des tests de sécurité. Les tests de sécurité sont généralement effectués uniquement s'ils ont été inclus dans la planification du projet, car ils nécessitent du temps, beaucoup d'attention et la vérification de plusieurs détails.
J'ai remarqué que lors de la réalisation du projet, il est assez courant de sauter les tests contre toutes les attaques possibles - y compris l'injection JS. De cette façon, les équipes essaient de gagner du temps sur le projet. Cependant, cette pratique se termine très souvent par les plaintes des clients.
Il faut savoir que les tests de sécurité sont fortement recommandés même s'ils ne sont pas inclus dans les plans de projet. La vérification des principales attaques possibles doit être effectuée - en même temps, doit vérifier les vulnérabilités possibles d'injection JS.
Quitter le Javascript simple Vulnérabilités d'injection dans le produit peut coûter la qualité du produit et la réputation de l’entreprise. Chaque fois que j'ai appris à tester contre d'éventuelles attaques et dans les tests de sécurité en général, je n'ignore jamais cette partie des tests. De cette façon, je suis juste plus sûr de la qualité du produit.
Comparaison avec d'autres attaques
Il convient de mentionner que JS Injection n'est pas aussi risqué que Injection SQL , car il est effectué côté client et n'atteint pas la base de données du système comme cela se produit lors d'une attaque par injection SQL. En outre, ce n'est pas aussi risqué que l'attaque XSS.
Lors de cette attaque, seule l’aspect du site Web peut parfois être modifié, tandis que l’objectif principal de l’attaque XSS est de pirater les données de connexion d’autres utilisateurs.
Cependant, JS Injection peut également causer de graves dommages au site Web. Cela peut non seulement détruire l'apparence du site Web, mais aussi devenir une bonne base pour pirater les données de connexion d'autres personnes.
Vérification de l'injection JavaScript
Lorsque vous commencez à tester avec JS Injection, la première chose à faire est de vérifier si JS Injection est possible ou non. Il est très facile de vérifier ce type de possibilité d’injection - lorsque vous naviguez vers le site Web, vous devez saisir le code à barres d’adresse du navigateur comme suit:
javascript: alert ('Exécuté!');
Si une fenêtre contextuelle avec un message «Exécuté!» Apparaît, le site Web est vulnérable à l’injection JS.
Ensuite, dans la barre d'adresse du site Web, vous pouvez essayer diverses commandes Javascript.
Il convient de mentionner que JS Injection n'est pas seulement possible à partir de la barre d'adresse du site Web. Il existe divers autres éléments du site Web, qui peuvent être vulnérables à JS Injection. Le plus important est de connaître exactement les parties du site Web qui peuvent être affectées par l'injection de Javascript et comment les vérifier.
Les cibles typiques d'injection JS sont:
- Divers forums
- Champs de commentaires de l'article
- Livres d'or
- Tout autre formulaire dans lequel du texte peut être inséré.
Pour tester si cette attaque est possible pour le formulaire de sauvegarde de texte, malgré la fourniture de texte normal, tapez le code Javascript comme mentionné ci-dessous et enregistrez le texte dans le formulaire et actualisez la page.
javascript: alert ('Exécuté!');
Si dans la page nouvellement ouverte comprend une zone de texte avec le message «Exécuté!», Alors ce type d'attaque par injection est possible pour le formulaire testé.
Si dans les deux cas une zone de texte avec le message apparaît, vous pouvez essayer de casser le site Web avec des méthodes d'injection JS plus délicates. Ensuite, vous pouvez essayer différents types d'injection - modification des paramètres ou modification de la conception.
Bien entendu, la modification des paramètres est considérée comme plus risquée que la modification de conception. Par conséquent, lors des tests, une plus grande attention doit être consacrée à la modification des paramètres.
En outre, il convient de garder à l'esprit que les parties du site Web les plus vulnérables pour l'injection de Javascript sont des champs de saisie, dans lesquels tout type de données est enregistré.
Modification des paramètres
Comme mentionné précédemment, l'un des dommages possibles de l'injection Javascript est la modification des paramètres.
Au cours de cette attaque par injection, un utilisateur malveillant peut obtenir des informations sur les paramètres ou modifier toute valeur de paramètre( Exemple ,paramètres des cookies). Cela peut entraîner des risques assez graves car un utilisateur malveillant peut obtenir du contenu sensible. Un tel type d'injection peut être effectué à l'aide de certaines commandes Javascript.
Souvenons-nous que la commande Javascript renvoyant le cookie de session en cours est écrite en conséquence:
javascript: alert (document.cookie);
Entré dans la barre d'URL du navigateur, il renverra une fenêtre contextuelle avec les cookies de session en cours.
Si le site Web utilise des cookies, nous pouvons lire des informations telles que l'identifiant de session du serveur ou d'autres données utilisateur stockées dans les cookies.
Il faut mentionner qu'à la place d'alert (), toute autre fonction Javascript peut être utilisée.
Par exemple ,si nous avons trouvé un site Web vulnérable, qui stocke l'identifiant de session dans le paramètre de cookie 'session_id'. Ensuite, nous pouvons écrire une fonction, qui change l'identifiant de la session actuelle:
javascript: void (document.cookie = 'session_id =<>');
De cette façon, la valeur de l'identifiant de session sera modifiée. De plus, toute autre manière de modifier les paramètres est également possible.
Par exemple, un utilisateur malveillant souhaite se connecter en tant qu'autres personnes. Pour se connecter, l'utilisateur malveillant changera d'abord les paramètres du cookie d'autorisation sur true. Si les paramètres des cookies ne sont pas définis sur «vrai», la valeur du cookie peut être renvoyée comme «indéfinie».
meilleurs nettoyeurs de registre gratuits pour Windows 10
Pour modifier ces valeurs de cookies, un utilisateur malveillant effectuera selon la commande Javascript de la barre d'URL du navigateur:
javascript: void (document.cookie = 'autorisation = true');
Dans le résultat, le paramètre de cookies actuel autorisation = faux sera changé en autorisation = vrai. De cette façon, un utilisateur malveillant pourra accéder au contenu sensible.
De plus, il faut mentionner que parfois le code Javascript renvoie des informations assez sensibles.
javascript: alert (document.cookie);
Par exemple, si le développeur d'un site Web n'a pas été assez prudent, il peut également renvoyer les noms et valeurs des paramètres de nom d'utilisateur et de mot de passe. Ensuite, ces informations peuvent être utilisées pour pirater le site Web ou simplement modifier la valeur du paramètre sensible.
Par exemple, avec le code ci-dessous, nous pouvons changer la valeur du nom d'utilisateur:
javascript: void (document.cookie = 'username = otherUser');
De cette façon, toute autre valeur de paramètre peut également être modifiée.
Modification de la conception du site Web
Javascript peut également être utilisé pour modifier la forme de tout site Web et en général la conception du site Web.
Par exemple, avec Javascript, vous pouvez modifier toutes les informations affichées sur le site Web:
- Texte affiché.
- Historique du site Web.
- Apparence du formulaire du site Web.
- Apparence de la fenêtre contextuelle.
- Apparence de tout autre élément du site Web.
Par exemple, pour modifier l'adresse e-mail affichée sur le site Web, une commande Javascript appropriée doit être utilisée:
javascript: void (document.forms (0) .email.value = 'Test@test.com') ;
Peu d’autres manipulations compliquées avec la conception du site Web sont également possibles. Avec cette attaque, nous pouvons également accéder à la classe CSS du site Web et la modifier.
Par exemple, si nous souhaitons modifier l’image d’arrière-plan du site Web avec JS Injection, la commande doit être exécutée en conséquence:
javascript: void (document. background-image: url ('autre-image.jpg');
En outre, un utilisateur malveillant peut écrire du code d'injection Javascript qui est mentionné ci-dessous dans le formulaire d'insertion de texte et l'enregistrer.
javascript: void (alert ('Bonjour!'));
Ensuite, à chaque fois qu'une page est ouverte, une zone de texte avec le message «Bonjour!» Apparaîtra.
La modification de la conception du site Web avec l’injection Javascript est moins risquée que la modification des paramètres. Cependant, si la conception du site Web est modifiée de manière malveillante, cela peut nuire à la réputation de l'entreprise.
Comment tester contre l'injection JavaScript
Il peut être testé des manières suivantes:
- Manuellement
- Avec des outils de test
- Avec des plugins de navigateur
Les éventuelles vulnérabilités Javascript peuvent être vérifiées manuellement si vous avez une bonne connaissance de la façon dont cela doit être effectué. En outre, il peut être testé avec divers outils d'automatisation.
Par exemple, si vous avez automatisé vos tests au niveau de l'API avec l'outil SOAP UI, il est également possible d'exécuter des tests d'injection Javascript avec Interface utilisateur SOAP .
Cependant, je ne peux que commenter de ma propre expérience, que vous devriez avoir vraiment une bonne connaissance de l'outil SOAP UI pour tester avec lui pour JS Injection, car toutes les étapes du test doivent être écrites sans erreur. Si une étape de test est mal écrite, cela peut également entraîner des résultats de test de sécurité erronés.
En outre, vous pouvez trouver divers plugins de navigateur pour vérifier contre d'éventuelles attaques. Cependant, il est recommandé de ne pas oublier de vérifier manuellement cette attaque, car elle renvoie généralement des résultats plus précis.
Je voudrais dire que les tests manuels contre l’injection de Javascript me permettent de me sentir plus confiant et assuré de la sécurité du site Web. De cette façon, vous pouvez être sûr qu'aucun formulaire n'a été manqué pendant le test et que tous les résultats sont visibles pour vous.
Pour tester contre l'injection Javascript, vous devez avoir des connaissances générales sur Javascript et savoir quelles parties du site Web sont les plus vulnérables. En outre, vous devez vous rappeler que le site Web peut être protégé contre l'injection JS et pendant le test, vous devez essayer de briser cette protection.
De cette façon, vous serez sûr que la protection contre cette attaque est suffisamment forte ou non.
Protection possible contre cette attaque
Tout d'abord, afin d'éviter cette attaque, chaque entrée reçue doit être validée. L'entrée doit être validée à chaque fois, et pas seulement lorsque les données sont initialement acceptées.
Il est fortement recommandé de ne pas se fier à la validation côté client. De plus, il est recommandé d'exécuter une logique importante côté serveur.
Beaucoup essaient de se protéger contre l'injection Javascript en changeant les guillemets en double et le code Javascript ne devrait pas être exécuté de cette façon.
Par exemple, si vous écrivez dans le champ commentaire quelque chose avec des guillemets…, ces guillemets seront remplacés par des doubles -<>...<>. De cette façon, le code Javascript saisi ne sera pas exécuté.
J'ai remarqué que le remplacement des guillemets par des guillemets doubles est une pratique assez courante pour éviter d'éventuelles attaques par injection JS. Cependant, il existe plusieurs façons d'encoder les guillemets pour exécuter le code d'injection JS. Par conséquent, changer les guillemets en doublant n'est pas un moyen parfait de se protéger contre cette attaque.
Conclusion
Il faut toujours garder à l'esprit que l'injection Javascript est l'une des attaques possibles contre les sites Web, car Javascript est l'une des technologies les plus utilisées pour les sites Web. Par conséquent, lors du test de sites Web ou de toute autre technologie Web, il ne faut pas oublier de tester contre cette attaque.
Lorsque vous effectuez des tests de sécurité, JS Injection ne doit pas être oublié. Certaines personnes considèrent ce test comme une attaque moins risquée car il est effectué côté client.
Cependant, ce n’est pas la bonne approche et nous devons toujours nous rappeler que l’injection de Javascript peut causer de graves dommages au site Web, tels que la fuite d’informations sensibles, la modification des paramètres ou le piratage des comptes utilisateurs.
Par conséquent, nous devons considérer cela comme une partie importante des tests et c'est une partie de l'investissement pour un bon produit et la réputation de l'entreprise.
Tester l'injection JS n'est pas très difficile. Tout d'abord, vous devez avoir des connaissances générales sur Javascript et savoir comment vérifier si cette attaque est possible pour la solution web actuelle ou non.
De plus, lors du test, vous devez vous rappeler qu'un site Web peut avoir une protection contre ce type d'attaque, mais il peut être trop faible - il doit également être vérifié. Une autre chose importante à retenir est qu'il existe différents types d'attaques par injection Javascript et qu'aucun d'entre eux ne doit être oublié de tester.
Avez-vous effectué des tests d'injection Javascript ?? Nous serions heureux de vous entendre, n'hésitez pas à partager vos expériences dans la section commentaires ci-dessous.
lecture recommandée
- Tutoriels Eclipse détaillés pour les débutants
- Comment configurer le framework de test Node.js: Tutoriel Node.js
- Tutoriel d'injection HTML: types et prévention avec des exemples
- Didacticiel de test d'injection SQL (exemple et prévention des attaques par injection SQL)
- Tutoriel de réflexion Java avec des exemples
- Tutoriel SVN: Gestion du code source à l'aide de Subversion
- Tutoriel Python DateTime avec des exemples
- Tutoriel Tortoise SVN: Révisions dans le référentiel de code