XSS

Présentation par Loïc BRANSTETT

Le 02/05/2019

Sommaire

  1. Présentation de l'XSS
  2. Exemples réels
  3. Exploitations
  4. Prévention
  5. 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

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

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

  • 120