
Una versión vulnerable de Rails que sigue el OWASP Top 10
RailsGoat es una aplicación web deliberadamente vulnerable construida con Ruby on Rails. Demuestra vulnerabilidades de seguridad del mundo real del OWASP Top 10 y sirve como plataforma de entrenamiento práctica para desarrolladores y profesionales de la seguridad.
RailsGoat es una aplicación Rails intencionalmente insegura diseñada para enseñar seguridad en aplicaciones web. Al explorar y explotar sus vulnerabilidades, aprenderás:
Versión actual: Rails 8.0 con Ruby 3.4.1
RailsGoat demuestra vulnerabilidades de seguridad del mundo real del OWASP Top 10, incluyendo inyección SQL, cross-site scripting (XSS), problemas de autenticación, referencias directas inseguras a objetos, y más.
Para una lista completa de vulnerabilidades con explicaciones detalladas y tutoriales, visita la Wiki de RailsGoat.
¿Nuevo en Ruby? Sigue la guía de configuración en GoRails para tu sistema operativo.
Clona el repositorio:
git clone https://github.com/OWASP/railsgoat.git
cd railsgoat
Instala las dependencias:
gem install bundler
bundle install
Configura la base de datos:
rails db:setup
Inicia el servidor:
rails server
Abre tu navegador:
Navega a http://localhost:3000 y ¡comienza a explorar!
La rama main ejecuta Rails 8. Para versiones anteriores, cambia de rama:
git checkout rails_3_2 # Rails 3.2
git checkout rails_4_2 # Rails 4.2
git checkout rails_5 # Rails 5.x
Ejecuta la suite de pruebas de vulnerabilidades para ver qué fallas de seguridad existen:
rails training
Cada prueba que falla indica una vulnerabilidad. La salida de las pruebas incluye un enlace a un tutorial de la wiki que explica:
Para ejecutar una prueba de vulnerabilidad específica:
rails training SPEC=spec/vulnerabilities/sql_injection_spec.rb
Visita la Wiki de RailsGoat para ver tutoriales detallados sobre cada vulnerabilidad, incluyendo:
Documentación adicional que cubre conceptos de seguridad modernos y avanzados en Rails:
Requisitos: Docker y Docker Compose 1.6.0+
Para Mac Apple Silicon (ARM64): Rosetta debe estar instalado
docker-compose build
docker-compose run web rails db:setup
docker-compose up
La aplicación estará disponible en http://localhost:3000
Solución de problemas: Si el contenedor se cierra con "A server is already running", elimina tmp/pids/server.pid de tu directorio de trabajo e inténtalo de nuevo.
Algunas vulnerabilidades de inyección SQL requieren MySQL. Para ejecutar con MySQL:
# Crear y migrar la base de datos
RAILS_ENV=mysql rails db:create
RAILS_ENV=mysql rails db:migrate
# Iniciar el servidor
RAILS_ENV=mysql rails server
RailsGoat utiliza MailCatcher para interceptar correos electrónicos:
gem install mailcatcher
mailcatcher
Visualiza los correos en http://localhost:1080
Configura la variable de entorno RAILSGOAT_MAINTAINER para verificar que las vulnerabilidades sigan existiendo:
RAILSGOAT_MAINTAINER="yes" bundle exec rspec
En modo mantenedor, las pruebas pasan cuando las vulnerabilidades están correctamente implementadas (lo opuesto al modo de entrenamiento).
¡Agradecemos las contribuciones! Consulta nuestras pautas de contribución para más detalles.
¿Necesitas ayuda?
RailsGoat fue creado para demostrar vulnerabilidades de seguridad en aplicaciones Rails y enseñar prácticas de codificación segura. Ha sido actualizado continuamente a través de las versiones de Rails 3, 4, 5, 6 y ahora 8, manteniendo su relevancia a medida que el framework evoluciona.
La conversión al OWASP Top Ten 2013 se completó en noviembre de 2013.
Advertencia: Esta aplicación contiene vulnerabilidades de seguridad graves. Nunca la implementes en un servidor o red pública. Úsala solo en entornos de entrenamiento aislados.