
Uma versão vulnerável do Rails que segue o OWASP Top 10
RailsGoat é uma aplicação web deliberadamente vulnerável construída em Ruby on Rails. Ela demonstra vulnerabilidades de segurança do mundo real do OWASP Top 10 e serve como uma plataforma de treinamento prática para desenvolvedores e profissionais de segurança.
RailsGoat é uma aplicação Rails intencionalmente insegura projetada para ensinar segurança em aplicações web. Ao explorar e explorar suas vulnerabilidades, você aprenderá:
Versão Atual: Rails 8.0 com Ruby 3.4.1
RailsGoat demonstra vulnerabilidades de segurança do mundo real do OWASP Top 10, incluindo injeção SQL, cross-site scripting (XSS), problemas de autenticação, referências diretas inseguras a objetos e mais.
Para uma lista completa de vulnerabilidades com explicações detalhadas e tutoriais, visite o RailsGoat Wiki.
Novo no Ruby? Siga o guia de configuração em GoRails para o seu sistema operacional.
Clone o repositório:
git clone https://github.com/OWASP/railsgoat.git
cd railsgoat
Instale as dependências:
gem install bundler
bundle install
Configure o banco de dados:
rails db:setup
Inicie o servidor:
rails server
Abra seu navegador:
Navegue para http://localhost:3000 e comece a explorar!
O branch main roda Rails 8. Para versões mais antigas, troque de branch:
git checkout rails_3_2 # Rails 3.2
git checkout rails_4_2 # Rails 4.2
git checkout rails_5 # Rails 5.x
Execute o conjunto de testes de vulnerabilidade para ver quais falhas de segurança existem:
rails training
Cada teste com falha indica uma vulnerabilidade. A saída do teste inclui um link para um tutorial na wiki explicando:
Para executar um teste de vulnerabilidade específico:
rails training SPEC=spec/vulnerabilities/sql_injection_spec.rb
Visite o RailsGoat Wiki para tutoriais detalhados sobre cada vulnerabilidade, incluindo:
Documentação adicional cobrindo conceitos avançados e modernos de segurança em Rails:
Requisitos: Docker e Docker Compose 1.6.0+
Para Mac Apple Silicon (ARM64): Rosetta deve estar instalada
docker-compose build
docker-compose run web rails db:setup
docker-compose up
A aplicação estará disponível em http://localhost:3000
Solução de problemas: Se o container sair com "A server is already running", remova tmp/pids/server.pid do seu diretório de trabalho e tente novamente.
Algumas vulnerabilidades de injeção SQL requerem MySQL. Para executar com MySQL:
# Crie e migre o banco de dados
RAILS_ENV=mysql rails db:create
RAILS_ENV=mysql rails db:migrate
# Inicie o servidor
RAILS_ENV=mysql rails server
RailsGoat usa MailCatcher para interceptar e-mails:
gem install mailcatcher
mailcatcher
Veja os e-mails em http://localhost:1080
Defina a variável de ambiente RAILSGOAT_MAINTAINER para verificar se as vulnerabilidades ainda existem:
RAILSGOAT_MAINTAINER="yes" bundle exec rspec
No modo mantenedor, os testes passam quando as vulnerabilidades são implementadas corretamente (oposto do modo de treinamento).
Aceitamos contribuições! Por favor, veja nossas diretrizes de contribuição para detalhes.
Precisa de ajuda?
RailsGoat foi criado para demonstrar vulnerabilidades de segurança em aplicações Rails e ensinar práticas de codificação segura. Ele tem sido continuamente atualizado através das versões 3, 4, 5, 6 e agora 8 do Rails, mantendo relevância à medida que o framework evolui.
Conversão para o OWASP Top Ten 2013 concluída em novembro de 2013.
Aviso: Esta aplicação contém vulnerabilidades de segurança graves. Nunca a implante em um servidor ou rede pública. Use apenas em ambientes de treinamento isolados.