
Уязвимая версия Rails, соответствующая OWASP Top 10
RailsGoat — это намеренно уязвимое веб-приложение, созданное на Ruby on Rails. Оно демонстрирует реальные уязвимости безопасности из OWASP Top 10 и служит практической обучающей платформой для разработчиков и специалистов по безопасности.
RailsGoat — это намеренно небезопасное Rails-приложение, предназначенное для обучения безопасности веб-приложений. Исследуя и эксплуатируя его уязвимости, вы научитесь:
Текущая версия: 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
Каждый падающий тест указывает на уязвимость. Вывод теста содержит ссылку на учебное пособие в вики, объясняющее:
Для запуска конкретного теста уязвимости:
rails training SPEC=spec/vulnerabilities/sql_injection_spec.rb
Посетите RailsGoat Wiki для получения подробных учебных материалов по каждой уязвимости, включая:
Дополнительная документация, охватывающая продвинутые и современные концепции безопасности Rails:
Требования: Docker и Docker Compose 1.6.0+
Для Mac на Apple Silicon (ARM64): должна быть установлена 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:
# 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 использует MailCatcher для перехвата электронных писем:
gem install mailcatcher
mailcatcher
Просматривайте письма по адресу http://localhost:1080
Установите переменную окружения RAILSGOAT_MAINTAINER, чтобы проверить, что уязвимости всё ещё существуют:
RAILSGOAT_MAINTAINER="yes" bundle exec rspec
В режиме сопровождающего тесты проходят, когда уязвимости реализованы корректно (в отличие от режима обучения).
Мы приветствуем вклад! Подробнее см. в наших правилах участия.
Нужна помощь?
RailsGoat был создан для демонстрации уязвимостей безопасности в Rails-приложениях и обучения практикам безопасного программирования. Он постоянно обновлялся через версии Rails 3, 4, 5, 6 и теперь 8, сохраняя актуальность по мере развития фреймворка.
Переход к OWASP Top Ten 2013 завершён в ноябре 2013 года.
Предупреждение: Это приложение содержит серьёзные уязвимости безопасности. Никогда не разворачивайте его на публичном сервере или в сети. Используйте только в изолированных учебных средах.