
لعبة تدريبية تطبيقية على AWS WAF تتضمن دروسًا تعليمية ومختبرات مُقيَّمة وامتحانات، حيث يكتب اللاعبون قواعد Web ACL لحجب أشكال الهجمات الحقيقية مع تجنّب الإيجابيات الكاذبة.
لعبة تدريب عملية لتعلّم AWS WAF من خلال الدفاع ضد هجمات حقيقية.
English | 日本語
للمسؤولين: كيفية بناء البيئة، وتوزيعها على المشاركين، وتشغيلها، وتنظيفها مشروحة في دليل المسؤول (docs/ADMIN.md)، والنشرة التعريفية للمشاركين هي البدء للاعبين (docs/PLAYER_GUIDE.md). كلا الدليلين حاليًا باللغة اليابانية.
بيئة عملية لتعلّم AWS WAF أثناء التعرض للهجوم.
العب منفردًا أو تنافس مع الآخرين.

التسلسل من قراءة هجوم الدرس التعليمي وخطواته، إلى تصميم قاعدة في مختبر ثغرات، وإطلاق الهجوم، ومراجعة النقاط والإجابة النموذجية، وأخيرًا فتح مسابقة من صفحة المسؤول (حوالي 70 ثانية). تتوفر نسخة بجودة أعلى على docs/demo-en.mp4.
تم التسجيل في وضع التطوير (
make dev)، الذي يحتسب النقاط باستخدام الإجابة النموذجية بدلاً من AWS WAF حقيقي.
┌───────────────────── per player ──────────────────┐
Browser ── Lambda Function URL (gameapi: UI + API) │
│ async invoke │
▼ │
Lambda (trafficgen) ── HTTPS ─▶ ALB ◀── Web ACL (edited by the player)
│ │ │
│ ▼ │
│ Lambda (targetapp: dummy online shop) │
▼ └────────────────────────────────────┘
DynamoDB (runs, best scores, locks)
wafdojo-<name>-cf، us-east-1). يتقدم CloudFront مباشرةً أمام Lambda Function URL الخاص بالتطبيق الوهمي بدلًا من ALB، لذا لا تنطبق قواعد Web ACL الخاصة بـ ALB هناك. اضبط enable_cloudfront = false لتخطيه.X-Forwarded-For (يُفترض أن الموقع يقع خلف CDN).| المعرّف | الموضوع | ما ستتعلمه |
|---|---|---|
| tutorial-1-sqli | حقن SQL | مجموعات القواعد المُدارة |
| tutorial-2-xss | XSS في نموذج المراجعة | القواعد المخصصة (Rule builder)، فحص الجسم، تحويلات النص |
| tutorial-3-ipset | عناوين IP في قائمة تهديدات | مجموعات IP، CIDR، X-Forwarded-For |
| tutorial-4-useragent | ماسحات الثغرات | مطابقة النصوص في الترويسات، عبارات OR، تحويل الأحرف الصغيرة |
| tutorial-5-ratelimit | فيضانات من عنوان IP واحد | القواعد القائمة على المعدل، مفاتيح التجميع |
| tutorial-6-ja4 | كاشط يتنكر في هيئة متصفح | كيف تعمل بصمات JA4 وكيفية قراءتها (a_b_c)، مطابقة JA4 الدقيقة، تحليل سجلات WAF |
| المعرّف | الموضوع | ما ستتعلمه |
|---|---|---|
| game-1-fakebot | كاشط يتنكر في هيئة Googlebot | الجمع بين AND / NOT (UA يقول Googlebot AND عنوان IP ليس تابعًا لـ Google) |
| game-2-admin | وصول خارجي إلى لوحة الإدارة | شروط مسار URI + قائمة IP المسموح بها، حساسية حالة الأحرف |
| game-3-traversal | اجتياز المسار | تكديس تحويلات النص (فك الترميز المزدوج)، تجنب الإيجابيات الكاذبة |
| game-4-cms | قاعدة XSS تحجب محرريك | بناء الاستثناءات، أولوية القواعد، إعادة النظر في القواعد الموجودة |
| game-5-bruteforce | تخمين كلمة مرور تسجيل الدخول + NAT للشركات | عبارات تحديد النطاق، تصميم العتبة |
| game-6-ja4regex | جيش من البوتات يعدّل JA4 باستمرار + شريك يستخدم المكتبة نفسها | التعبيرات النمطية لـ JA4 (التقاط الجزء b المشترك)، الاستعداد للمتغيرات غير المرئية، الاستثناءات باستخدام AND NOT |
تبقى القواعد التي أنشأتها في الدروس التعليمية في مكانها، لذا تتسبب أحيانًا في وضع اللعبة في إيجابيات كاذبة (المرحلتان 4 و5). تحتاج إلى إعادة النظر في القواعد الموجودة، وليس فقط إيقاف الهجمات الجديدة.
يُقرأ كل تحدٍّ كالتالي: "ظهرت ثغرة جديدة. يمكن حجبها في ظل هذه الشروط. اكتب القاعدة." الهدف هو أن تكون قادرًا على كتابة قواعدك الخاصة كلما ظهرت ثغرة جديدة. بعد محاولة واحدة يمكنك رؤية JSON الخاص بقاعدة الإجابة النموذجية (جاهزًا للصق في محرر Rule JSON في وحدة التحكم) وشرحًا. تتضمن العديد من تحديات المستوى 2 و3 أيضًا قاعدة "المزالق الشائعة" وسبب فشلها.
| المستوى | المحتوى | التحديات |
|---|---|---|
| المستوى 1: اتبع الإرشاد | حوّل الإرشادات التي توضح ما يجب فحصه، وكيفية المطابقة، والنصوص الدقيقة إلى قاعدة دقيقة | Log4Shell، Spring4Shell، Shellshock، Confluence OGNL، F5 BIG-IP iControl REST، تجاوز Next.js middleware، اجتياز Apache HTTP Server، Text4Shell، Metabase GeoJSON (CVE-2021-41277)، ProxyLogon (CVE-2021-26855)، Confluence Velocity (CVE-2023-22527) |
| المستوى 2: ترجم الإرشاد إلى WAF | اختر المكوّن المفحوص، والتحويلات، ونوع المطابقة بنفسك من الشروط النصية | PHP-CGI (CVE-2024-4577)، Citrix ADC، FortiOS SSL-VPN، WebLogic console، Confluence setup، Spring Cloud Function، Struts 2 S2-045، vCenter vROps، XXE، GraphQL introspection، ProxyNotShell، حقن CRLF، X-Original-URL، F5 BIG-IP TMUI (CVE-2020-5902)، TeamCity (CVE-2024-27198) |
| المستوى 3: استنتجها من PoC | لا يوجد إرشاد للتخفيف. اعثر على جوهر الهجوم واستعد لكلا المتغيرين والإيجابيات الكاذبة | Log4Shell المُشوَّه، SSRF (metadata)، SSTI، حقن أوامر نظام التشغيل، تلوث النموذج الأولي (prototype pollution)، إعادة التوجيه المفتوح، رفع الملفات، PAN-OS GlobalProtect (CVE-2024-3400)، قراءة الإرشادات الأصلية: Ivanti Connect Secure (CVE-2023-46805 / CVE-2024-21887)، GitLab (CVE-2023-7028) |
| المستوى 4: القواعد المُدارة وحدود WAF | عندما تحجب قاعدة مُدارة حركة مرور مشروعة، أصلحها مع الحفاظ على الحماية (تجاوز Count لكل قاعدة + مطابقة التسمية). استعد لحدود WAF نفسها مثل حد فحص الجسم | مجموعة القواعد الأساسية SizeRestrictions_BODY (عمليات الرفع الكبيرة)، NoUserAgent_HEADER (أجهزة IoT)، GenericRFI_QUERYARGUMENTS (أداة webhook داخلية)، حاجز 8 KB (حد فحص الجسم والتعامل مع الأحجام الزائدة؛ ثابت عند 8 KB على ALB)، توسيع حاجز 16 KB في CloudFront إلى 64 KB (تم اختباره مباشرةً على CloudFront الخاص باللاعب) |
ما الذي تبنيه التحديات: