
إثبات مفهوم لثغرة traefik CVE لفهم التأثير
مرحبًا بك في تحدي Shadow Corp لالتقاط العلم (CTF)! سيختبر هذا التحدي مهاراتك في تحديد واستغلال الثغرات المتعلقة بترويسات الأمان وسلوك بروكسي HTTP. مهمتك هي تجاوز وسائل الحماية وكشف الأسرار المخبأة داخل تطبيق الويب الخاص بـ Shadow Corp.
اكتشفت واجهة الويب العامة لـ Shadow Corp، وهي منظمة سيئة السمعة متورطة في تجسس إلكتروني سري. تشير الشائعات إلى أنهم قاموا بتأمين نقطة نهاية محمية لا يمكن الوصول إليها إلا للمطلعين الموثوقين. ومع ذلك، توجد همسات بأنه باستخدام التقنيات الصحيحة، يمكنك خداع النظام لكشف نقطة النهاية المخفية وكشف أسرار Shadow Corp.
مهمتك: الوصول إلى نقطة النهاية المحمية واسترجاع العلم المخفي!
يمكن تشغيل هذا التحدي محليًا، وستحتاج إلى تثبيت تطبيق الويب وتكوينه.
مطلوب docker compose لتشغيل هذا التطبيق يُوصى باستخدام curl للاستعلام عن نقاط النهاية واختبارها.
استنسخ المستودع وانتقل إلى دليل المشروع:
cd traefik-CVE-2024-45410-poc
شغّل التحدي
docker compose up
هدفك الأساسي هو الوصول إلى نقطة النهاية /protected واسترجاع العلم السري. ومع ذلك، ستلاحظ أن الوصول المباشر محظور ما لم تتحقق شروط معينة. يتحقق النظام من المصادر الموثوقة من خلال التحقق من ترويسة X-Forwarded-Host.
صُمم التطبيق للسماح بالوصول فقط من localhost (127.0.0.1). ومع ذلك، إذا فحصت ترويسات HTTP بعناية، فقد تكتشف طريقة "لخداع" الخادم ليصدق أنك مصدر موثوق. ابحث في ترويسات بروكسي HTTP وكيف يمكن التلاعب بها.
هل سبق أن استكشفت الترويسات العابرة للقفزات (hop-by-hop)؟ تُستخدم هذه الترويسات بشكل شائع بواسطة البروكسيات للتحكم في سلوك الطلبات المُعاد توجيهها أو تعديله. من خلال التلاعب بهذه الترويسات بشكل صحيح، قد تتمكن من إقناع الخادم بأنك قادم من موقع موثوق، حتى لو لم تكن كذلك.
يمكن أن تكون ترويسة Connection عاملًا حاسمًا. ماذا لو تمكنت من إدخال ترويسة يثق بها النظام ضمنيًا؟ استكشف كيف يمكنك تعديل ترويسات الطلب لتضمين X-Forwarded-Host بطريقة قد لا يتوقعها الخادم.
مثال على أمر (ليس حلًا) إليك مثال على كيفية البدء بالتجربة باستخدام curl:
curl -i http://localhost:5000/protected
سيُظهر لك هذا أن الوصول مرفوض افتراضيًا.
في بعض الأنظمة، تُعتبر ترويسات معينة عابرة للقفزات (hop-by-hop)، مما يعني أنها تتحكم في سلوك كل وسيط في سلسلة طلبات HTTP. تُجرد هذه الترويسات أو تُعدَّل بواسطة البروكسيات. ومع ذلك، إذا تلاعبت بالترويسات بذكاء وحددت الترويسة العابرة للقفزات الصحيحة، فقد تجد طريقة لتجاوز آليات أمنية معينة. ركّز على كيفية عمل ترويسة Connection وكيف يمكنك التأثير على ترويسات أخرى لا تُمرَّر عادةً إلى ما بعد قفزة واحدة. قد يساعدك هذا في خداع الخادم ليعتقد أنك عميل موثوق.
ابدأ في التفكير في كيفية تعديل طلبك للوصول إلى الهدف. يكمن الحل في كيفية تعامل التطبيق مع ترويسات المضيف الموثوق. تذكر، قد يكون التلاعب بالترويسات هو مفتاح حل هذا التحدي.