
نسخة ضعيفة من 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.
هل أنت جديد على 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 للحصول على دروس مفصلة حول كل ثغرة، بما في ذلك:
وثائق إضافية تغطي مفاهيم أمن 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.
تحذير: يحتوي هذا التطبيق على ثغرات أمنية خطيرة. لا تنشره أبداً على خادم أو شبكة عامة. استخدمه فقط في بيئات تدريب معزولة.