RailsGoat 是一个基于 Ruby on Rails 构建的故意存在漏洞的 Web 应用程序。它展示了 OWASP Top 10 中的真实世界安全漏洞,并为开发人员和安全专业人员提供了一个实践培训平台。
RailsGoat 是一个故意不安全的 Rails 应用程序,旨在教授 Web 应用程序安全知识。通过探索和利用其漏洞,你将学到:
当前版本: Rails 8.0 搭配 Ruby 3.4.1
RailsGoat 展示了 OWASP Top 10 中的真实世界安全漏洞,包括 SQL 注入、跨站脚本(XSS)、认证问题、不安全直接对象引用等。
有关完整漏洞列表及详细解释和教程,请访问 RailsGoat Wiki。
Ruby 新手? 请按照 GoRails 上针对你操作系统的设置指南进行操作。
克隆仓库:
git clone https://github.com/OWASP/railsgoat.git
cd railsgoat
安装依赖:
gem install bundler
bundle install
设置数据库:
rails db:setup
启动服务器:
rails server
打开浏览器:
导航至 http://localhost:3000 并开始探索!
main 分支运行 Rails 8。如需旧版本,请切换分支:
git checkout rails_3_2 # Rails 3.2
git checkout rails_4_2 # Rails 4.2
git checkout rails_5 # Rails 5.x
运行漏洞测试套件以查看存在哪些安全缺陷:
rails training
每个失败的测试都表示一个漏洞。测试输出包含指向 Wiki 教程的链接,该教程解释了:
要运行特定的漏洞测试:
rails training SPEC=spec/vulnerabilities/sql_injection_spec.rb
访问 RailsGoat Wiki 获取每个漏洞的详细教程,包括:
涵盖高级和现代 Rails 安全概念的附加文档:
要求: Docker 和 Docker Compose 1.6.0+
对于 Apple Silicon(ARM64)Mac: 必须安装 Rosetta
docker-compose build
docker-compose run web rails db:setup
docker-compose up
该应用程序将在 http://localhost:3000 可用
故障排除: 如果容器退出并显示 "A server is already running",请从你的工作目录中删除 tmp/pids/server.pid 然后重试。
某些 SQL 注入漏洞需要 MySQL。要使用 MySQL 运行:
# 创建并迁移数据库
RAILS_ENV=mysql rails db:create
RAILS_ENV=mysql rails db:migrate
# 启动服务器
RAILS_ENV=mysql rails server
RailsGoat 使用 MailCatcher 拦截电子邮件:
gem install mailcatcher
mailcatcher
在 http://localhost:1080 查看电子邮件
设置 RAILSGOAT_MAINTAINER 环境变量以验证漏洞仍然存在:
RAILSGOAT_MAINTAINER="yes" bundle exec rspec
在维护者模式下,当漏洞被正确实现时测试通过(与培训模式相反)。
我们欢迎贡献!详情请参阅我们的贡献指南。
需要帮助?
RailsGoat 旨在演示 Rails 应用程序中的安全漏洞并教授安全编码实践。它已通过 Rails 3、4、5、6 以及现在的 8 持续更新,随着框架的发展保持其相关性。
于 2013 年 11 月完成向 OWASP Top Ten 2013 的转换。
警告: 此应用程序包含严重的安全漏洞。切勿将其部署在公共服务器或网络上。仅在隔离的培训环境中使用。