Niveau "Low"
Dernière mise à jour
Dernière mise à jour
Le challenge en niveau "Low" invite à saisir une URL afin d'exécuter un script externe :
Etant donné que le challenge porte sur CSP, j'analyse la politique en place :
Ce qui donne pour la directive script-src
:
'self'
: Autorise l'exécution de ressources fournies par la même origine
https://pastebin.com
: Autorise l'exécution de ressources hébergées sur https://pastebin.com
example.com
: Autorise l'exécution de ressources hébergées sur example.com
code.jquery.com
: Autorise l'exécution de ressources hébergées sur le sous domaine code.jquery.com
https://ssl.google-analytics.com
: Autorise l'exécution de ressources hébergées sur le sous domaine ssl.google-analytics.com
Ma première idée est d'exploiter la vulnérabilité de file upload trop permissive qui va me permettre d'uploader sur la plateforme un fichier javascript malicieux. Ce fichier aura donc la même origine que celle de l'application :
Etant donné qu'il est possible d'accéder directement au fichier, je peux soumettre son URL dans le formulaire du challenge CSP :
Cela permet de contourner la source 'self'
du CSP.
Concernant la liste blanche d'URL autorisées, https://pastbin.com
va me permettre également l'exécution de script :
Pour l'exploitation, j'utilise le mode "raw" afin de soumettre l'URL à DVWA :
Ce qui permet de faire exécuter un script contrôlé par mes soins tout en respectant la liste blanche imposée par DVWA :
Il suffit d'adapter la payload malicieux afin de récupérer le jeton de la victime :
Reste maintenant à savoir comment s'y prendre pour que l'attaque affecte un autre utilisateur. En effet, la requête n'est pas de type GET
mais de type POST
, ce qui m'empêche de partager facilement un lien forgé à la victime :
La solution que j'ai trouvée pour remédier à ce problème est d'utiliser la faille CSRF présente dans cette requête (aucun mécanisme de protection n'est présent). Il me faut donc héberger sur un serveur d'attaque la page malicieuse suivante :
Puis de fournir à la victime le lien permettant d'accéder à ma page, par exemple http://192.168.56.182/dvwa/post_xss.html
:
La victime, obligatoirement authentifiée, sera redirigée (ce qui déclenchera l'exécution de notre script) vers le site du challenge CSP de DVWA et l'attaquant réceptionnera son jeton :