Test de pénétration Python - XSS Web Attack
Les attaques de script intersite sont un type d'injection qui fait également référence à une attaque par injection de code côté client. Ici, des codes malveillants sont injectés dans un site Web légitime. Le concept de politique de même origine (SOP) est très utile pour comprendre le concept de script intersite. SOP est le principe de sécurité le plus important dans chaque navigateur Web. Il interdit aux sites Web de récupérer du contenu à partir de pages d'une autre origine. Par exemple, la page Web peut accéder au contenu depuiswww.tutorialspoint.com/contact.htmlmais www.virus.com/index.html ne peut pas accéder au contenu dewww.tutorialspoint.com/contact.html. De cette façon, nous pouvons dire que le script intersite est un moyen de contourner la politique de sécurité SOP.
Types d'attaque XSS
Dans cette section, découvrons les différents types d'attaques XSS. L'attaque peut être classée dans les grandes catégories suivantes -
- XSS persistant ou stocké
- XSS non persistant ou réfléchi
XSS persistant ou stocké
Dans ce type d'attaque XSS, un attaquant injecte un script, appelé payload, qui est stocké en permanence sur l'application Web cible, par exemple dans une base de données. C'est la raison pour laquelle on parle d'attaque XSS persistante. C'est en fait le type d'attaque XSS le plus dommageable. Par exemple, un code malveillant est inséré par un attaquant dans le champ de commentaire d'un blog ou dans le message du forum.
XSS non persistant ou réfléchi
Il s'agit du type d'attaque XSS le plus courant dans lequel la charge utile de l'attaquant doit faire partie de la requête, qui est envoyée au serveur Web et réfléchie, de telle sorte que la réponse HTTP inclut la charge utile de la requête HTTP. Il s'agit d'une attaque non persistante car l'attaquant doit fournir la charge utile à chaque victime. L'exemple le plus courant de ces types d'attaques XSS sont les e-mails de phishing à l'aide desquels l'attaquant attire la victime pour qu'elle fasse une requête au serveur qui contient les charges utiles XSS et finit par exécuter le script qui est reflété et exécuté dans le navigateur. .
Exemple
Comme pour SQLi, les attaques Web XSS peuvent être implémentées en manipulant les données d'entrée de l'application. Dans les exemples suivants, nous modifions les vecteurs d'attaque SQLi, effectués dans la section précédente, pour tester l'attaque Web XSS. Le script Python ci-dessous permet d'analyser l'attaque XSS en utilisantmechanize -
Pour commencer, importons le mechanize module.
import mechanize
Maintenant, indiquez le nom de l'URL pour obtenir la réponse après avoir soumis le formulaire.
url = input("Enter the full url")
attack_no = 1
Nous devons lire les vecteurs d'attaque à partir du fichier.
With open (‘vectors_XSS.txt’) as x:
Maintenant, nous allons envoyer une demande avec chaque vecteur d'arack -
For line in x:
browser.open(url)
browser.select_form(nr = 0)
browser[“id”] = line
res = browser.submit()
content = res.read()
La ligne de code suivante vérifiera le vecteur d'attaque imprimé.
if content.find(line) > 0:
print(“Possible XSS”)
La ligne de code suivante écrira la réponse dans le fichier de sortie.
output = open(‘response/’ + str(attack_no) + ’.txt’, ’w’)
output.write(content)
output.close()
print attack_no
attack_no += 1
XSS se produit lorsqu'une entrée utilisateur imprime dans la réponse sans aucune validation. Par conséquent, pour vérifier la possibilité d'une attaque XSS, nous pouvons vérifier le texte de réponse pour le vecteur d'attaque que nous avons fourni. Si le vecteur d'attaque est présent dans la réponse sans aucun échappement ni validation, il y a une forte possibilité d'attaque XSS.