
WebGoat v2026.5
Application web volontairement vulnérable avec des leçons interactives et des défis pour apprendre la sécurité des applications web et les techniques de test d'intrusion.
WebGoat : Une application web délibérément non sécurisée
Introduction
WebGoat est une application web délibérément non sécurisée maintenue par OWASP conçue pour enseigner des leçons sur la sécurité des applications web.
Ce programme est une démonstration de failles courantes d'applications côté serveur. Les exercices sont destinés à être utilisés par des personnes souhaitant apprendre les techniques de sécurité des applications et de tests d'intrusion.
AVERTISSEMENT 1 : Lors de l'exécution de ce programme, votre machine sera extrêmement vulnérable aux attaques. Vous devez vous déconnecter d'Internet pendant l'utilisation de ce programme. La configuration par défaut de WebGoat se lie à localhost afin de minimiser l'exposition.
AVERTISSEMENT 2 : Ce programme est uniquement à des fins éducatives. Si vous tentez ces techniques sans autorisation, vous avez de très fortes chances d'être pris. Si vous êtes pris en train de pratiquer du hacking non autorisé, la plupart des entreprises vous licencieront. Prétendre que vous faisiez de la recherche en sécurité ne fonctionnera pas, car c'est la première chose que tous les hackers prétendent.

Instructions d'installation :
Pour plus de détails, consultez le guide de contribution
1. Exécution avec Docker
Si vous avez déjà un navigateur et ZAP et/ou Burp installés sur votre machine, vous pouvez dans ce cas exécuter directement l'image WebGoat avec Docker.
Chaque version est également publiée sur DockerHub.
docker run -it -p 127.0.0.1:8080:8080 -p 127.0.0.1:9090:9090 webgoat/webgoat
Pour certaines leçons, vous avez besoin que le conteneur s'exécute dans le même fuseau horaire. Pour cela, vous pouvez définir la variable d'environnement TZ. Par exemple
docker run -it -p 127.0.0.1:8080:8080 -p 127.0.0.1:9090:9090 -e TZ=America/Boise webgoat/webgoat
Si vous souhaitez utiliser OWASP ZAP ou un autre proxy, vous ne pouvez plus utiliser 127.0.0.1 ou localhost, mais vous pouvez utiliser des entrées d'hôte personnalisées. Par exemple :
127.0.0.1 www.webgoat.local www.webwolf.local
Vous pouvez ensuite exécuter le conteneur avec :
docker run -it -p 127.0.0.1:8080:8080 -p 127.0.0.1:9090:9090 -e WEBGOAT_HOST=www.webgoat.local -e WEBWOLF_HOST=www.webwolf.local -e TZ=America/Boise webgoat/webgoat
Rendez-vous ensuite sur http://www.webgoat.local:8080/WebGoat/ et http://www.webwolf.local:9090/WebWolf/
2. Exécution avec Docker et un bureau Linux complet
Au lieu d'installer des outils localement, nous disposons d'une image Docker complète basée sur l'exécution d'un bureau dans votre navigateur. Ainsi, vous n'avez qu'à exécuter une image Docker, ce qui vous offrira la meilleure expérience utilisateur.
docker run -p 127.0.0.1:3000:3000 webgoat/webgoat-desktop
3. Autonome
Téléchargez la dernière version de WebGoat depuis https://github.com/WebGoat/WebGoat/releases
export TZ=Europe/Amsterdam # or your timezone
java -Dfile.encoding=UTF-8 -jar webgoat-2023.8.jar
Cliquez sur le lien dans le journal pour démarrer WebGoat.
3.1 Exécution sur un port différent
Si pour une raison quelconque vous souhaitez exécuter WebGoat sur un port différent, vous pouvez le faire en ajoutant le paramètre suivant :
java -jar webgoat-2023.8.jar --webgoat.port=8001 --webwolf.port=8002
Dans le JAR combiné, --server.port est un alias de --webgoat.port. Utilisez --webwolf.port pour définir le port de WebWolf séparément.
Pour les paramètres disponibles, consultez les propriétés WebGoat et les propriétés WebWolf.
4. Exécution depuis les sources
Prérequis :
- Java 25
- Votre IDE préféré
- Git, ou le support Git dans votre IDE
Ouvrez un shell/invite de commandes :
git clone [email protected]:WebGoat/WebGoat.git
Commençons maintenant par compiler le projet.
cd WebGoat
git checkout <<branch_name>>
# On Linux/Mac:
./mvnw clean install
# On Windows:
./mvnw.cmd clean install
If you have ran WebGoat before, you should first run mvn clean -Pcleanall to clean up files from your temp and home directories which could fail the tests due to changes in lessons!
# Using docker or podman, you can than build the container locally
docker build -f Dockerfile . -t webgoat/webgoat
Nous sommes maintenant prêts à exécuter le projet. WebGoat utilise Spring Boot.
# On Linux/Mac:
./mvnw spring-boot:run
# On Windows:
./mvnw.cmd spring-boot:run
... vous devriez avoir WebGoat en cours d'exécution sur http://localhost:8080/WebGoat d'ici un instant.
Remarque : le lien ci-dessus vous redirigera vers la page de connexion si vous n'êtes pas connecté. Connectez-vous/créez un compte pour continuer.
Pour changer l'adresse IP, ajoutez la variable suivante au fichier WebGoat/webgoat-container/src/main/resources/application.properties :
server.address=x.x.x.x
4. Exécution avec un menu personnalisé
Réservé aux spécialistes. Il est possible de configurer WebGoat avec un menu personnalisé. Vous pouvez omettre certaines catégories de menu ou leçons individuelles en définissant certaines variables d'environnement.
Par exemple, en exécutant en tant que jar sur Linux/macOS, cela ressemblera à ceci :
export TZ=Europe/Amsterdam # or your timezone
export EXCLUDE_CATEGORIES="CLIENT_SIDE,GENERAL,CHALLENGE"
export EXCLUDE_LESSONS="SqlInjectionAdvanced,SqlInjectionMitigations"
java -jar target/webgoat-2023.8-SNAPSHOT.jar
Ou dans un docker run, cela ressemblerait (une fois cette version poussée sur docker hub) à ceci :
docker run -d -p 127.0.0.1:8080:8080 -p 127.0.0.1:9090:9090 -e EXCLUDE_CATEGORIES="CLIENT_SIDE,GENERAL,CHALLENGE" -e EXCLUDE_LESSONS="SqlInjectionAdvanced,SqlInjectionMitigations" webgoat/webgoat