
Eine verletzliche Version von Rails, die dem OWASP Top 10 folgt
RailsGoat ist eine absichtlich verwundbare Webanwendung, die auf Ruby on Rails basiert. Sie demonstriert reale Sicherheitslücken aus dem OWASP Top 10 und dient als praktische Trainingsplattform für Entwickler und Sicherheitsexperten.
RailsGoat ist eine absichtlich unsichere Rails-Anwendung, die entwickelt wurde, um Webanwendungssicherheit zu vermitteln. Durch das Erkunden und Ausnutzen ihrer Schwachstellen lernen Sie:
Aktuelle Version: Rails 8.0 mit Ruby 3.4.1
RailsGoat demonstriert reale Sicherheitslücken aus dem OWASP Top 10, darunter SQL Injection, Cross-Site Scripting (XSS), Authentifizierungsprobleme, Unsichere direkte Objektreferenzen und mehr.
Eine vollständige Liste der Schwachstellen mit detaillierten Erklärungen und Tutorials finden Sie im RailsGoat-Wiki.
Neu bei Ruby? Folgen Sie der Einrichtungsanleitung auf GoRails für Ihr Betriebssystem.
Repository klonen:
git clone https://github.com/OWASP/railsgoat.git
cd railsgoat
Abhängigkeiten installieren:
gem install bundler
bundle install
Datenbank einrichten:
rails db:setup
Server starten:
rails server
Browser öffnen:
Navigieren Sie zu http://localhost:3000 und beginnen Sie mit der Erkundung!
Der main-Branch verwendet Rails 8. Für ältere Versionen wechseln Sie den Branch:
git checkout rails_3_2 # Rails 3.2
git checkout rails_4_2 # Rails 4.2
git checkout rails_5 # Rails 5.x
Führen Sie die Schwachstellen-Testsuite aus, um zu sehen, welche Sicherheitslücken vorhanden sind:
rails training
Jeder fehlschlagende Test zeigt eine Schwachstelle an. Die Testausgabe enthält einen Link zu einem Wiki-Tutorial, das Folgendes erklärt:
Um einen bestimmten Schwachstellentest auszuführen:
rails training SPEC=spec/vulnerabilities/sql_injection_spec.rb
Besuchen Sie das RailsGoat-Wiki für detaillierte Tutorials zu jeder Schwachstelle, darunter:
Zusätzliche Dokumentation zu fortgeschrittenen und modernen Rails-Sicherheitskonzepten:
Anforderungen: Docker und Docker Compose 1.6.0+
Für Mac Apple Silicon (ARM64): Rosetta muss installiert sein
docker-compose build
docker-compose run web rails db:setup
docker-compose up
Die Anwendung ist unter http://localhost:3000 verfügbar
Fehlerbehebung: Wenn der Container mit "A server is already running" beendet wird, entfernen Sie tmp/pids/server.pid aus Ihrem Arbeitsverzeichnis und versuchen Sie es erneut.
Manche SQL-Injection-Schwachstellen benötigen MySQL. So führen Sie es mit MySQL aus:
# 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 verwendet MailCatcher, um E-Mails abzufangen:
gem install mailcatcher
mailcatcher
E-Mails anzeigen unter http://localhost:1080
Setzen Sie die Umgebungsvariable RAILSGOAT_MAINTAINER, um zu überprüfen, dass die Schwachstellen noch vorhanden sind:
RAILSGOAT_MAINTAINER="yes" bundle exec rspec
Im Betreuer-Modus bestehen die Tests, wenn die Schwachstellen korrekt implementiert sind (umgekehrt zum Trainingsmodus).
Wir begrüßen Beiträge! Bitte beachten Sie unsere Richtlinien für Mitwirkende für Details.
Hilfe nötig?
RailsGoat wurde entwickelt, um Sicherheitslücken in Rails-Anwendungen zu demonstrieren und sichere Kodierungspraktiken zu vermitteln. Es wurde kontinuierlich durch die Rails-Versionen 3, 4, 5, 6 und jetzt 8 aktualisiert und behält seine Relevanz mit der Weiterentwicklung des Frameworks.
Die Umstellung auf OWASP Top Ten 2013 wurde im November 2013 abgeschlossen.
Warnung: Diese Anwendung enthält schwerwiegende Sicherheitslücken. Setzen Sie sie niemals auf einem öffentlichen Server oder Netzwerk ein. Verwenden Sie sie nur in isolierten Trainingsumgebungen.