Niveau "Medium"
Dernière mise à jour
Dernière mise à jour
Le niveau "Medium" invite à trouver une façon de déclencher une boite de dialogue Javascript :
J'analyse la nouvelle politique CSP pour ce niveau :
Soit pour la directive script-src
:
'self'
: Autorise l'exécution de ressources fournies par la même origine
'unsafe-inline'
: Autorise les scripts de type <script></script>
(ou encore dans un event HTML par exemple)
'nonce-TmV2ZXIgZ29pbmcgdG8gZ2l2ZSB5b3UgdXA='
: seul le script ayant ce nonce pourra être exécuté
Voici comment fonctionne le nonce
:
Le nonce est donc un identifiant unique et renouvelé à chaque fois que le serveur transmet la politique CSP. De plus, il est important que ce nonce ne soit pas devinable (guessable) sans quoi un contournement de la politique CSP serait possible.
Un script autorisé portera alors le nonce comme ceci (ne pas oublier qu'une implémentation sécurisée portera un nonce doit dynamique) :
J'effectue quelques requêtes GET
sur le endpoint /csp
de DVWA : surprise le nonce
ne change jamais :
Connaissant d'avance le nonce
, il est alors facile de créer un script qui sera accepté par l'application :
Afin de piéger la victime, J'utilise la même technique que pour le niveau "Low" qui est de forger une page malicieuse effectuant la requête POST
:
Finalement, lorsque l'utilisateur (authentifiée) visitera ma page, je récupèrera son jeton (la victime sera redirigée de mon site malicieux vers le challenge DVWA) :