
يستغل هذا النص البرمجي ثغرة CVE-2024-40094 في graphql-java
يستغل هذا البرنامج النصي الثغرة CVE-2024-40094 في graphql-java عن طريق تشغيل رفض خدمة قائم على ExecutableNormalizedFields (ENF). يقوم ببناء استعلام تفحص GraphQL مصنوع بأسماء مستعارة متداخلة عميقة، مصممة لإغراق الخادم الضعيف.
يستخدم البرنامج النصي طلبات غير متزامنة لإرسال سلسلة من استعلامات التفحص الكبيرة إلى خادم GraphQL الهدف. يتم إرسال الاستعلامات كحمولات JSON ويتم تنظيمها لاستغلال ثغرة محددة في كيفية معالجة خوادم GraphQL لاستعلامات التفحص المتداخلة بعمق. من خلال تشغيل عدد كبير من هذه الاستعلامات بالتوازي، يهدف البرنامج النصي إلى التسبب في حالة رفض الخدمة في الأنظمة الضعيفة.
asyncio و aiohttp للطلبات الفعالة غير المحظورة.يستهدف هذا الاستغلال الخوادم التي تعمل بإصدار ضعيف من graphql-java، خاصة تلك التي لا تتعامل بشكل صحيح مع استعلامات التفحص المتداخلة بعمق.
graphql-java (الإصدارات الضعيفة لـ CVE-2024-40094)لتشغيل الاستغلال، تحتاج إلى Python 3.7+ مع التبعيات التالية:
aiohttp لطلبات HTTP غير المتزامنةurllib3 للتعامل مع SSL (تعطيل تحذيرات الشهادة الذاتية التوقيع)يمكنك تثبيت التبعيات المطلوبة باستخدام pip:
pip install aiohttp urllib3
يمكن توفير جميع المعلمات الرئيسية في وقت التشغيل عبر خيارات سطر الأوامر:
--url): عنوان URL لواجهة برمجة تطبيقات GraphQL الهدف.--header): تخصيص رمز التفويض والرؤوس الأخرى حسب الحاجة. ترسل الطلبات أجسام JSON، لذا قم بتضمين Content-Type: application/json. يمكن تكرار الخيار.--job-count): عدد الوظائف المتزامنة (coroutines) التي سيتم تشغيلها. الافتراضي هو 50.--concurrency-limit): الحد الأقصى لعدد الطلبات المتزامنة عبر جميع الوظائف. يجب أن يكون ≥ JOB_COUNT. القيمة الافتراضية هي عدد الوظائف؛ قم بالزيادة بحذر.--alias-count): عدد كتل الأسماء المستعارة في الاستعلام. يتحكم هذا في عمق وحمل الاستعلام.--delay): التأخير بين الطلبات بالثواني. اضبط على 0 لعدم وجود تأخير أو قم بالتعديل حسب الحاجة لتجنب إغراق الهدف بسرعة كبيرة.--max-requests): الحد الأقصى لعدد الطلبات التي سترسلها كل وظيفة. استخدم 0 لطلبات غير محدودة.استنسخ المستودع إلى جهازك المحلي:
git clone https://github.com/kabiri-labs/CVE-2024-40094.git
cd CVE-2024-40094
قم بتشغيل البرنامج النصي، مع توفير أي خيارات مرغوبة في سطر الأوامر:
python CVE-2024-40094.py \
--url https://api.example.com/graphql \
--header "Authorization: Bearer <token>" \
--header "Host: api.example.com" \
--job-count 50 \
--alias-count 500 \
--concurrency-limit 50
سيبدأ البرنامج النصي في إرسال الطلبات إلى الخادم الهدف. سترى حالة كل طلب مطبوعة على وحدة التحكم، وسيتم كتابة السجلات في ملف السجل المحدد.
مثال على الإخراج:
[Worker-0] Status: 200, Len: 1000, Time: 0.35s, Snippet: {"data":{"__schema":{"types":[...]}...
[Worker-1] Status: 200, Len: 1050, Time: 0.37s, Snippet: {"data":{"__schema":{"types":[...]}...
لا تستخدم على أهداف غير مصرح بها: هذا البرنامج النصي مخصص للبحث الأمني والاختبار في بيئات خاضعة للرقابة. لا تستخدم هذا على خوادم إنتاج أو أنظمة بدون إذن صريح.
خطر رفض الخدمة: تشغيل هذا البرنامج النصي ضد خادم ضعيف قد يسبب توقفه عن الاستجابة أو تعطله. استخدم بحذر.
هذا البرنامج النصي مرخص بموجب ترخيص MIT. راجع ملف LICENSE لمزيد من التفاصيل.