
سكريبت إثبات مفهوم مبني على بايثون يوضح ثغرة CVE-2018-25031 XSS في Swagger UI باستخدام Selenium للكشف الآلي عبر نقاط نهاية متعددة.
يحتوي هذا المستودع على نص برمجي بلغة Python يوضح إثبات المفهوم (POC) لثغرة Cross-Site Scripting (XSS) في Swagger UI، باستخدام مكتبة Selenium. الهدف من هذا الإثبات هو تحديد المواقع المعرضة لهذه الثغرة من خلال استغلال Swagger UI بحمولة ضارة.
Swagger UI هي أداة شائعة الاستخدام لعرض والتفاعل مع واجهات برمجة التطبيقات (APIs) من خلال واجهة مستخدم سهلة. ومع ذلك، في الإصدار 2.9.2، تم تحديد ثغرة Cross-Site Scripting (XSS) قد تسمح للمهاجم بحقن كود JavaScript ضار في صفحات Swagger UI المحملة.
يحدث XSS عندما لا يقوم التطبيق بالتحقق بشكل صحيح من البيانات التي يدخلها المستخدم قبل عرضها على الصفحة. في هذه الحالة، يمكن للمهاجم استغلال الثغرة عن طريق إدخال كود JavaScript ضار في حقول الإدخال في Swagger UI، والذي سيتم تنفيذه في سياق متصفح المستخدمين الآخرين الذين يصلون إلى نفس الصفحة المخترقة.

ملاحظة: توضح الصورة أعلاه مثالاً لكيفية قيام المهاجم بإدخال حمولة XSS في Swagger UI، مستغلاً ثغرة أمنية في الإصدارات المتأثرة.
الطريقة الأكثر فعالية للتخفيف من هذه الثغرة هي ضمان تحديث Swagger UI إلى إصدار غير متأثر. تحقق من أحدث إصدارات Swagger UI وحافظ على تحديثها باستمرار.
بالنسبة للمطورين الذين يرغبون في استخدام أو تخصيص Swagger UI، من الضروري إجراء التحقق المناسب من بيانات الإدخال قبل عرضها في الواجهة. يُعد تجنب العرض المباشر لـ HTML أو JavaScript الذي أدخله المستخدم ممارسة موصى بها لتجنب ثغرات XSS.
فيما يلي مثال مبسط لكيفية استغلال الثغرة باستخدام Swagger UI:
هذا القسم مخصص للأغراض التعليمية والإعلامية فقط. لا تشجع أو تشارك في أنشطة ضارة أو غير قانونية. اتبع دائمًا ممارسات الإفصاح المسؤول عند الإبلاغ عن الثغرات.
تأكد من تثبيت المتطلبات الأساسية التالية قبل تشغيل البرنامج النصي:
pip install selenium
استنسخ أو قم بتنزيل هذا المستودع على جهازك.
قم بتحرير الملف sites_para_testar.txt وأدخل عناوين URL للمواقع التي ترغب في اختبارها، كل عنوان في سطر منفصل.
افتح محطة طرفية في مجلد المستودع وقم بتشغيل البرنامج النصي باستخدام الأمر التالي:
python main.py
سيقوم البرنامج النصي بتصفح المواقع المدرجة في الملف sites_para_testar.txt، والوصول إلى عناوين URL الخاصة بـ Swagger UI الخاصة بها، والتحقق من وجود تنبيه XSS تم اكتشافه. سيتم تسجيل النتائج في ثلاثة ملفات: valido.txt لعناوين URL التي يحتمل أن تكون ضعيفة، talvezvalido.txt لعناوين URL التي قد تكون ضعيفة، و naovalido.txt لعناوين URL غير الضعيفة.
يستخدم البرنامج النصي مكتبة Selenium لأتمتة التفاعل مع متصفح Chrome. يقوم بتحميل عناوين URL الخاصة بـ Swagger UI المُعدة في الملف sites_para_testar.txt، ويضيف حمولة ضارة إلى المعامل configUrl، ويتحقق مما إذا تم تشغيل تنبيه XSS.
يتبع البرنامج النصي الخطوات التالية:
استيراد المكتبات اللازمة من Selenium والتبعيات الأخرى.
تكوين خيارات ChromeDriver لتجاهل أخطاء SSL والشهادة.
تهيئة مشغل Chrome.
قراءة المواقع المراد اختبارها من الملف sites_para_testar.txt والتكرار عليها.
فتح كل عنوان URL من Swagger UI مع إضافة الحمولة الضارة.
محاولة التحقق مما إذا تم تشغيل تنبيه XSS.
بناءً على نتيجة التحقق، تسجيل عناوين URL في الملفات valido.txt أو talvezvalido.txt أو naovalido.txt.
إنهاء مشغل Chrome.
يتم توفير هذا البرنامج النصي للأغراض التعليمية والتوعوية حول الأمن السيبراني فقط. لا ينبغي استخدامه لأغراض ضارة أو غير قانونية. لا يتحمل المؤلف أي مسؤولية عن أي استخدام غير مناسب لهذا البرنامج النصي أو عن أي أضرار ناتجة عن استخدامه.
إذا وجدت أي طريقة لتحسين هذا البرنامج النصي أو كانت لديك اقتراحات، فلا تتردد في إنشاء طلب سحب (Pull Request).
هذا المشروع مرخص بموجب رخصة MIT.