owasp/railsgoatRailsGoat 是一个故意设计的易受***的 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 上的安装指南为您的操作系统进行设置。
克隆仓库:
bashgit clone [***] cd railsgoat
安装依赖:
bashgem install bundler bundle install
设置数据库:
bashrails db:setup
启动服务器:
bashrails server
打开浏览器:
导航至 http://localhost:3000 开始探索!
main 分支运行 Rails 8。如需旧版本,请切换分支:
bashgit checkout rails_3_2 # Rails 3.2 git checkout rails_4_2 # Rails 4.2 git checkout rails_5 # Rails 5.x
运行漏洞测试套件以查看存在哪些安全缺陷:
bashrails training
每个失败的测试都表示一个漏洞。测试输出包含指向 wiki 教程的链接,解释:
要运行特定的漏洞测试:
bashrails training SPEC=spec/vulnerabilities/sql_injection_spec.rb
访问 RailsGoat Wiki 获取每个漏洞的详细教程,包括:
要求: Docker 和 Docker Compose 1.6.0+
对于 Mac Apple Silicon(ARM64): 必须安装 Rosetta
bashdocker-compose build docker-compose run web rails db:setup docker-compose up
应用将在 http://localhost:3000 可用
故障排除: 如果容器因“服务器已在运行”退出,请从工作目录中删除 tmp/pids/server.pid 后重试。
某些 SQL 注入漏洞需要 MySQL。要使用 MySQL 运行:
bash# 创建并迁移数据库 RAILS_ENV=mysql rails db:create RAILS_ENV=mysql rails db:migrate # 启动服务器 RAILS_ENV=mysql rails server
RailsGoat 使用 MailCatcher 拦截邮件:
bashgem install mailcatcher mailcatcher
在 http://localhost:1080 查看邮件
设置 RAILSGOAT_MAINTAINER 环境变量以验证漏洞是否仍然存在:
bashRAILSGOAT_MAINTAINER="yes" bundle exec rspec
在维护者模式下,当漏洞正确实现时测试通过(与培训模式相反)。
我们欢迎贡献!请查看我们的 贡献指南 了解详情。
需要帮助?
RailsGoat 的创建旨在展示 Rails 应用中的安全漏洞并教授安全编码实践。它不断更新,经历了 Rails 3、4、5、6 版本,现在是 Rails 8,随着框架的发展保持相关性。
2013 年 11 月完成了向 OWASP Top Ten 2013 的转换。
MIT 许可协议
警告: 此应用包含严重安全漏洞。切勿在公共服务器或网络上部署。仅在隔离的培训环境中使用。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像服务
在 Docker Desktop 配置镜像
Docker Compose 项目配置
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
在宝塔面板一键配置镜像
Synology 群晖 NAS 配置
飞牛 fnOS 系统配置镜像
极空间 NAS 系统配置服务
爱快 iKuai 路由系统配置
绿联 NAS 系统配置镜像
QNAP 威联通 NAS 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
来自真实用户的反馈,见证轩辕镜像的优质服务