
Une version vulnérable de Rails qui suit le OWASP Top 10
RailsGoat est une application web volontairement vulnérable construite avec Ruby on Rails. Elle démontre des vulnérabilités de sécurité du monde réel issues de l'OWASP Top 10 et sert de plateforme de formation pratique pour les développeurs et les professionnels de la sécurité.
RailsGoat est une application Rails intentionnellement non sécurisée conçue pour enseigner la sécurité des applications web. En explorant et en exploitant ses vulnérabilités, vous apprendrez :
Version actuelle : Rails 8.0 avec Ruby 3.4.1
RailsGoat démontre des vulnérabilités de sécurité du monde réel issues de l'OWASP Top 10, notamment l'injection SQL, le cross-site scripting (XSS), les problèmes d'authentification, les références directes d'objets non sécurisées, et plus encore.
Pour une liste complète des vulnérabilités avec des explications détaillées et des tutoriels, visitez le Wiki RailsGoat.
Nouveau avec Ruby ? Suivez le guide d'installation sur GoRails pour votre système d'exploitation.
Clonez le dépôt :
git clone https://github.com/OWASP/railsgoat.git
cd railsgoat
Installez les dépendances :
gem install bundler
bundle install
Configurez la base de données :
rails db:setup
Démarrez le serveur :
rails server
Ouvrez votre navigateur :
Naviguez vers http://localhost:3000 et commencez à explorer !
La branche main exécute Rails 8. Pour les versions plus anciennes, changez de branche :
git checkout rails_3_2 # Rails 3.2
git checkout rails_4_2 # Rails 4.2
git checkout rails_5 # Rails 5.x
Exécutez la suite de tests de vulnérabilités pour voir quels défauts de sécurité existent :
rails training
Chaque test échoué indique une vulnérabilité. La sortie du test inclut un lien vers un tutoriel wiki expliquant :
Pour exécuter un test de vulnérabilité spécifique :
rails training SPEC=spec/vulnerabilities/sql_injection_spec.rb
Visitez le Wiki RailsGoat pour des tutoriels détaillés sur chaque vulnérabilité, notamment :
Documentation supplémentaire couvrant des concepts de sécurité Rails avancés et modernes :
Prérequis : Docker et Docker Compose 1.6.0+
Pour Mac Apple Silicon (ARM64) : Rosetta doit être installé
docker-compose build
docker-compose run web rails db:setup
docker-compose up
L'application sera disponible à l'adresse http://localhost:3000
Dépannage : Si le conteneur se ferme avec le message "A server is already running", supprimez tmp/pids/server.pid de votre répertoire de travail et réessayez.
Certaines vulnérabilités d'injection SQL nécessitent MySQL. Pour exécuter avec MySQL :
# Create and migrate the database
RAILS_ENV=mysql rails db:create
RAILS_ENV=mysql rails db:migrate
# Start the server
RAILS_ENV=mysql rails server
RailsGoat utilise MailCatcher pour intercepter les e-mails :
gem install mailcatcher
mailcatcher
Consultez les e-mails à l'adresse http://localhost:1080
Définissez la variable d'environnement RAILSGOAT_MAINTAINER pour vérifier que les vulnérabilités existent toujours :
RAILSGOAT_MAINTAINER="yes" bundle exec rspec
En mode mainteneur, les tests réussissent lorsque les vulnérabilités sont correctement implémentées (l'inverse du mode d'entraînement).
Nous accueillons les contributions ! Veuillez consulter nos directives de contribution pour plus de détails.
Besoin d'aide ?
RailsGoat a été créé pour démontrer les vulnérabilités de sécurité dans les applications Rails et enseigner les pratiques de codage sécurisé. Il a été continuellement mis à jour à travers les versions de Rails 3, 4, 5, 6 et maintenant 8, maintenant sa pertinence à mesure que le framework évolue.
Conversion vers l'OWASP Top Ten 2013 achevée en novembre 2013.
Avertissement : Cette application contient des vulnérabilités de sécurité graves. Ne la déployez jamais sur un serveur ou un réseau public. Utilisez-la uniquement dans des environnements de formation isolés.