Server Side Request Forgery (SSRF#1)

La vulnérabilité SSRF (pour server side request forgery) peut parfois être compliquée à comprendre et à exploiter ! Alors on a créé pour vous un lab complètement gratuit, utilisable en deux minutes pour vous permettre d'appréhender la notion de SSRF et apprendre à l'exploiter mais aussi à la corriger !

RÉSUMÉ

Niveau : Facile

Le concept de Server Side Request Forgery peut parfois être complexe à aborder et à comprendre, tant cette vulnérabilité peut être subtile, mais pas de panique, c'est pour cela que nous avons créé ce lab !

Pourquoi ce lab ?

L'idée de ce lab est de fournir un site web vulnérable au SSRF pour bien comprendre et appréhender la notion, et vous permettre par la suite d'exploiter ce genre de vulnérabilité dans des labs plus complets ou sur des chaînes d'attaques plus complexes.

Mise en place du lab

La première étape est de télécharger les ressources de ce lab, que vous choisissiez d'être de la Red Team ou de la Blue Team, cela n'a pas d'importance.

Les ressources :

Pour démarrer le lab et lancer l'environnement virtuel, deux choix s'offrent à vous : utiliser une version Node.js installée localement sur votre ordinateur, ou en utilisant l'image Docker.

Avec NodeJS en local :

Je vous recommande fortement d'utiliser un gestionnaire de version de Node, tel que ASDF par exemple. Vous trouverez d'ailleurs dans le dossier un fichier .tool-versions contenant la version Node.js actuellement utilisée.

  • Dézipez l'archive et ouvrez un terminal dans le dossier (ssrf-main)

  • Rentrez dans le dossiez du lab

    $ cd ssrf-main
  • Installer les dépendances NodeJS avec npm

    $ npm install
  • Lancer l'application WEB

    $ npm run start

Avec Docker :

Pour docker, il vous suffit de construire l'image localement avec la commande docker build, puis de lancer le conteneur en n'oubliant pas d'exposer le port 3001 sur le port de votre choix

  • Dézipez l'archive et ouvrez un terminal dans le dossier (ssrf-main)

  • Rentrez dans le dossiez du lab

    $ cd ssrf-main
  • Construire l'image du conteneur

    $ docker build -t ssrf .
  • Lancer l'application WEB

    $ docker run -p 3001:3001 ssrf

Dans les deux cas, vous obtenez maintenant un site web vulnérable au SSRF sur le port 3001 auquel vous pouvez accéder avec votre navigateur préféré.

Le site web est une application très simple de post de photo. Pour uploader une photo, c'est très simple, il suffit simplement d'envoyer l'URL d'une image et le site se chargera de la télécharger pour la stocker dans la base de données du site.

Capture d'écran du site web du lab SSRF 1 vulnérable

Red Team

Votre objectif

En tant qu'attaquant, votre objectif est de réussir à exploiter une vulnérabilité SSRF sur le site, et plus particulièrement, de réussir à télécharger un fichier quelconque (ex : un JSON) et de récupérer ensuite sa valeur.

Indice : le développeur du site ne semble pas avoir mis beaucoup de protection sur le site...

Solution (Cliquez pour révéler)

Blue Team

Votre objectif

En tant que défenseur, votre objectif est de modifier le code pour qu'une vulnérabilité SSRF ne soit plus possible. Vous pouvez modifier le code comme vous le souhaitez !

Indice 1: Quelle portion du code rend le site vulnérable actuellement ?

Indice 2 : Quelle vulnérabilité sur le site vous permet de récupérer le contenu de la faille SSRF ?

Indice 3 : Voyez-vous d'autres vulnérabilités à corriger ?

Solution (Cliquez pour révéler)