Pour installer le lab, nous allons avoir besoin à minima des ressources suivantes:
- Kali linux dans sa version 2022, disponible ici: https://www.kali.org/get-kali/
- VirtualBox 7 pour la machine hôte, disponible ici: https://www.virtualbox.org/wiki/Downloads
-> attention pour les détenteurs des macbook dernière génération, c'est du processeur ARM...
Déployer virtualbox sur la machine hôte, j'ai indiqué sous VB les ressources suivantes:
- 2 Go de RAM
- 1 processeur
- 25 Go espace disque
Puis déploiement de Kali Linux (via l'ISO pour choisir les paramètres géographiques, sinon j'ai choisi tous les paramètres par défaut)
Première chose à faire, c'est l'installation des VBoxGuestAdditions, pour ceci, sous VirtualBox (une fois Kali démarrée) Onglet Périphériques, puis Insérer l'image cd..
Ensuite dans Kali, ouvrez un terminal:
sudo su
cd /media/cdrom0
sh VBoxLinuxAdditions.run
Tapez ensuite yes, puis redémarrer l'OS. Une fois les outils additionnels installés, le redimensionnement de l'écran, le partage de fichiers...seront disponibles.
On enchaine sur la mise à jour du système et des dépôts associés depuis le terminal fraichement lancé sous Kali:
apt update
apt upgrade -y
La dernière version de Kali ne gère plus les dépôts de juice-shop à partir de sa version 2023, on va donc utiliser docker:
apt install docker.io
Puis télécharger et lancer le conteneur juice-shop
sudo docker pull bkimminich/juice-shop
sudo docker run --rm -p 3000:3000 bkimminich/juice-shop
Le site est ensuite consultable en localhost: http://localhost:3000. Attention ne fermez pas le terminal sous docker, au risque de fermer l'application.
Juice shop est une boutique en ligne trouée de vulnérabilités . Elle permet de s’exercer au pentest web et contient l’ensemble du top 10 des vulnérabilités de l’OWASP (https://owasp.org/Top10/fr/)
Pour pouvoir utiliser l'outil, il y a des challenges d'échauffement.
Regardez les sources, les premières infos qu'on peut trouver pour comprendre comment se connecter et trouver le relevé des scores [^interface]
De la même manière vous pouvez trouver l'interface d'admin. Cependant celle ci ne sera accessible que lorsqu'on aura trouvé comment passer admin...
Le challenge DOM XSS demande la réalisation d’une attaque XSS .
-
Une XSS permet à un attaquant d’injecter un script dans le contenu d’un site Web ou d’une application. Lorsqu’un utilisateur visite la page infectée, le script s’exécute dans le navigateur de la victime. Dans le cas présent, ça nécessite d'ouvrir la page actuelle avec un popup et le texte “xss”.
-
Une XSS reflected (ou également appelé attaque XSS non persistante) est un type spécifique de XSS. Elle est transmise dans la requête, généralement dans l’URL. Comparé au XSS stocké, le XSS reflected nécessite que le script malveillant soit ajouté à un lien et qu’un utilisateur clique dessus [^xss-reflected]
Nous allons nous inscrire sur la boutique avec l’adresse mail bidon@gmail.com et le mot de passe 12345 en ne respectant pas les condition de mot de passe du site.
- Je me rends sur la page d’inscription et remplis les différents champs demandés.
- Lors de l’inscription, si le deuxième mot de passe n’est pas identique au premier mot de passe saisi, nous aurons une erreur.
Les mots de passes ne correspondent pas
Trouvez comment entrer un mot de passe sans respecter la règle initiale [^mdp]
Un nouveau défi, nous devons nous connecter en tant qu’administrateurs sur le site juice-shop.
Nous utiliserons l’injection SQL pour réaliser ce défi.
- L’injection SQL est une méthode d’attaque très connue. C’est un vecteur d’attaque extrêmement puissant quand il est bien exploité. Il consiste à modifier une requête SQL en injectant des morceaux de code non filtrés, généralement par le biais d’un formulaire.
- Il faut se rendre dans le formulaire de connexion au site . Nous utiliserons ici en login une instruction basique et un mot de passe pris au hasard. De nombreux exemples sur votre moteur de recherche favori...
- Vous pouvez utiliser l'outil de développement web de Firefox lors de cette première connexion
- Prenez le temps d'étudier l'erreur 500, notamment dans la partie réponse du serveur
- Cette instruction authentifiera la première personne dans la table Users (car la condition est vraie)qui se trouve être par hasard et par chance l’administrateur. [^inject-sql]
--> Au passage nous pouvons maintenant accéder à l’interface d’administration repérer dans la première partie. Nous récupérons beaucoup d’informations comme les adresses mail des utilisateurs inscrits, leurs ID sur le site, etc..
Des scanners de site comme spiders, ou encore nikto permettent de remonter rapidement des informations qui peuvent être très intéressantes dans le cadre d'une intrusion.
Dans le cas présent, nikto fera parfaitement l'affaire. Regardez bien lors du scan les répertoires qui remontent et ce qui s'y trouve. [^confidential]