XSS
Présentation par Loïc BRANSTETT
Le 02/05/2019
Sommaire
- Présentation de l'XSS
- Exemples réels
- Exploitations
- Prévention
- Conclusion
Présentation de l'XSS
- Cross Site Scripting (XSS)
- Attaque sur système extérieur
Présentation de l'XSS
<html>
<head>
<style>h1 {color: #256}</style>
</head>
<body>
<h1>Title</h1>
<script>
alert("Salut!");
</script>
</body>
</html>
Exécution arbitraire de code dans une page web
Style
Content
Code
Présentation de l'XSS
<html>
<body>
<div>
Bonjour <script>alert("XSS");</script>
</div>
</body>
</html>
- Requête:
- Réponse:
https://monsite.fr/nom.php?name=<script>alert('XSS');</script>
Présentation de l'XSS
- Exécuter du "contenu actif"
- Scripts côté clients (Javascript, VBscript, CSS Keyloader)
- Accéder aux cookies
- Données de navigation (mot de passe, token, ...)
- Remplissage automatique de formulaires
- Exploitation de bugs dans le navigateur (escalation)
- Keylloger
Que peut-on faire avec ce type de failles ?
Exemples réels
- TweetDeck
- 80 000 utilisateurs exposés
- Envoie automatique de tweets
- MySpace
- 1 000 000 utilisateurs infecté en 24 heures
- Visite automatique et modifications des profils des utilisateurs
Exemples réels
- Facebook
- Vulnérable a une attaque XSS (sur les serveurs bêta)
- Signalé a la team de sécurité de l'entreprise
- Yahoo! Website
- 80 000 000 de sites vulnérables
- Non vérification des commentaires
Exploitations
-
3 Types d'attaques XSS
- "Stored XSS"
- Enregistrée dans une base de données
- Persistant
- "Reflected XSS"
- Non persistant
- Injection dans l'url
- "DOM based XSS"
- Contenu du DOM modifié
- Peut être persistant
- "Stored XSS"
Exploitation: "Stored XSS"
- Configuration
- Un site web vulnérable (avec redirection)
- Site web de substitution
- Twitter, Facebook, Forum, ...
- Applications
Exploitation: "Reflected XSS"
- Configuration
- Une page internet filtrée (contenu modifié non visible)
- Convaincre les victimes:
- Social engineering
- Image/Lien sur un forum
- Messages: Twitter, Facebook
- Social engineering
Exploitation: "Dom XSS"
- Page internet qui modifie le DOM
- Document Object Model
<html>
<head>
<script src="jquery.js"></script>
<script>
$("title").after("Mon titre");
</script>
</head>
<body>
<h1 id="title">Title</h1>
</body>
</html>
Prévention
- Désactiver le Javascript
- Pare-feu "Web Application"
- Microsoft ISS
- ModSecurity
- Ne pas utiliser de javascript
- <pre>
Prévention
HTML sanitization
var sanitizer = new HtmlSanitizer();
sanitizer.AllowedAttributes.Add("class");
var sanitized = sanitizer.Sanitize(html);
HTML sanitization is the process of examining an HTML document and producing a new HTML document that preserves only whatever tags are designated "safe" and desired
Conclusion
- Ne jamais croire les données utilisateurs
- Même dans une DB
- Toujours les vérifier
- Filtre via whitelist and blacklist
- La sécurité avant tout
- "Escape output"
Questions ?
FIN
XSS
By urgau-1
XSS
- 116