Cross-site Scripting (XSS) - útok

Marek Kajfosz + Tomáš Ptáček

KAJ0025 + PTA0025

Co to je?

Jedná se o typ útoku na uživatele webové stránky

  1. Vložení skriptu do jakéhokoliv vstupu
  2. Dojde k zobrazení vstupu a vepsání skriptu do těla HTML
  3. Skript se provede na straně uživatele
                <script>alert('ahoj')</script>
            

Dělení

  • Persistentní / Stored
  • Dočasný / Reflected / Lokální
  • DOM based / Runtime / Client XSS
                www.example.com/index.php?message=<script>alert('ahoj')</script>
            

Příklady

  • Obrázky, SVG, objekty, flash
  • Registrační formulář - např login
  • Komentáře, návštěvní kniha, příspěvky atp.
  • Querystring, POST, base64

Příklady 2

XSS protection bypass
                String.fromCharCode(97, 108, 101, 114, 116, 40, 34, 104, 105, 34, 41, 59)
                http://www.supergames.cz/search.php?q=%253c%2573%2563%2572%2569%2570%2574%253e%2561%256c%2565%2572%2574%25
            

Co se dá dělat?

  • Phishing / social engineering
  • Kradení cookies / session
  • Změna vzhledu, či obsahu webu
  • Exploity prohlížeče - info o stroji, webkamera, zvuky
  • Specifické exploity prohlížeče

Jak se bránit?

Escapovací funkce

HTML entity (nefungují všude)

Parsování vstupů

Uživatel - vypnutí JS

Content security policy, HTTPOnly cookie, X-XSS-Prot header

OWASP prevention
www.pou.kajfosz.cz