Injections XSS
Présentation
Il existe plusieurs type d'injections XSS:
- Les réfléchies
- Les stoqués
-
Celles basé sur des manipuluation de la DOM
-
Les injections réfléchies sont basé sur des champs qui n'entregistrent pas les informations comme une barre de recherche par exemple
- Les injections stoqués sont basé sur des champs qui enregistrent des informations qui seront réafficher par le site en question
- Les injections basés sur la DOM sont des injections basées sur l'ajout d'éléments malveillants dans la DOM
Exploitation (Reflexed/Store)
Tester si un champ est vulnérable
Tester avec une image
Tester avec une image svg
Tester avec une div
Récupérer les cookies
Exploitation (DOM based)
Quelques instructions qui ne sont pas toujours filtrés
Pour les images
- onerror
- onsubmit
- onload
- onmouseover
- onfocus
- onmouseout
- onkeypress
- onchange
Pour les divs
- onpointerover
- onpointerdown
- onpointerenter
- onpointerleave
- onpointermove
- onpointerout
- onpointerup
Bypass des protections
Liste de quelques astuces pour passer outre les protections
Caractères
Majuscules
JavaScript
<Script>alert('XSS Attack')</Script>
<ScRiPt>alert('XSS Attack')</ScRiPt>
<sCrIpT>alert('XSS Attack')</sCrIpT>
<SCRIPT>alert('XSS Attack')</SCRIPT>
Caractère ascii simple
Caractère ascii en hexadécimal
Eval et base64
Utiliser des espaces. Selon le back-end les espaces de sont pas pris en compte.
Balise dans une autre balise
Contre-Mesures
- Il est recommandé de ne jamais utiliser les fonctions
eval()
,innerHTML
en javascript car elle est à même d'exécuter du code malveillant - Nettoyer toutes ces entrées avec un framework dédié à cet effet
- Mettre en place un WAF pour filtrer le trafic
Exploitation avec Beef
ToDo