
Una versione vulnerabile di Rails che segue la OWASP Top 10
RailsGoat è un'applicazione web volutamente vulnerabile costruita su Ruby on Rails. Dimostra vulnerabilità di sicurezza reali della OWASP Top 10 e funge da piattaforma di formazione pratica per sviluppatori e professionisti della sicurezza.
RailsGoat è un'applicazione Rails intenzionalmente insicura progettata per insegnare la sicurezza delle applicazioni web. Esplorando e sfruttando le sue vulnerabilità, imparerai:
Versione attuale: Rails 8.0 con Ruby 3.4.1
RailsGoat dimostra vulnerabilità di sicurezza reali della OWASP Top 10, tra cui SQL injection, cross-site scripting (XSS), problemi di autenticazione, riferimenti diretti a oggetti non sicuri e altro ancora.
Per un elenco completo delle vulnerabilità con spiegazioni dettagliate ed esercitazioni, visita la Wiki di RailsGoat.
Sei nuovo a Ruby? Segui la guida di configurazione su GoRails per il tuo sistema operativo.
Clona il repository:
git clone https://github.com/OWASP/railsgoat.git
cd railsgoat
Installa le dipendenze:
gem install bundler
bundle install
Configura il database:
rails db:setup
Avvia il server:
rails server
Apri il browser:
Vai su http://localhost:3000 e inizia a esplorare!
Il ramo main esegue Rails 8. Per le versioni precedenti, cambia ramo:
git checkout rails_3_2 # Rails 3.2
git checkout rails_4_2 # Rails 4.2
git checkout rails_5 # Rails 5.x
Esegui la suite di test delle vulnerabilità per vedere quali difetti di sicurezza esistono:
rails training
Ogni test che fallisce indica una vulnerabilità. L'output del test include un link a un tutorial della wiki che spiega:
Per eseguire un test di vulnerabilità specifico:
rails training SPEC=spec/vulnerabilities/sql_injection_spec.rb
Visita la Wiki di RailsGoat per tutorial dettagliati su ogni vulnerabilità, tra cui:
Documentazione aggiuntiva che copre concetti di sicurezza Rails avanzati e moderni:
Requisiti: Docker e Docker Compose 1.6.0+
Per Mac Apple Silicon (ARM64): Rosetta deve essere installata
docker-compose build
docker-compose run web rails db:setup
docker-compose up
L'applicazione sarà disponibile su http://localhost:3000
Risoluzione dei problemi: Se il container termina con "A server is already running", rimuovi tmp/pids/server.pid dalla tua directory di lavoro e riprova.
Alcune vulnerabilità di SQL injection richiedono MySQL. Per eseguire con 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 usa MailCatcher per intercettare le email:
gem install mailcatcher
mailcatcher
Visualizza le email su http://localhost:1080
Imposta la variabile d'ambiente RAILSGOAT_MAINTAINER per verificare che le vulnerabilità esistano ancora:
RAILSGOAT_MAINTAINER="yes" bundle exec rspec
In modalità manutentore, i test passano quando le vulnerabilità sono implementate correttamente (l'opposto della modalità training).
Siamo lieti di ricevere contributi! Consulta le nostre linee guida per i contributi per maggiori dettagli.
Hai bisogno di aiuto?
RailsGoat è stato creato per dimostrare le vulnerabilità di sicurezza nelle applicazioni Rails e insegnare pratiche di codifica sicura. È stato aggiornato continuamente attraverso le versioni 3, 4, 5, 6 e ora 8 di Rails, mantenendo la sua rilevanza man mano che il framework si evolve.
La conversione alla OWASP Top Ten 2013 è stata completata a novembre 2013.
Avvertenza: Questa applicazione contiene gravi vulnerabilità di sicurezza. Non distribuirla mai su un server o una rete pubblici. Utilizzala solo in ambienti di formazione isolati.