
إضافة متكاملة لـ Burp Suite لاكتشاف واستغلال ثغرات إلغاء تسلسل Java
Java Deserialization Scanner هو مكوّن إضافي (plugin) لـ Burp Suite يهدف إلى اكتشاف ثغرات إلغاء تسلسل Java واستغلالها. تمت كتابته بواسطة Federico Dotta، المحلل الأمني الرئيسي في HN Security.
يتكوّن المكوّن الإضافي من ثلاثة مكونات مختلفة:
يمكن العثور على مقال موجز يحتوي على دليل استخدام مصغّر حول كيفية استخدام المكونات المختلفة للمكوّن الإضافي على الرابط التالي: https://web.archive.org/web/20201130104913/https://techblog.mediaservice.net/2017/05/reliable-discovery-and-exploitation-of-java-deserialization-vulnerabilities/
يستخدم Java Deserialization Scanner حمولات مخصصة (payloads) تم توليدها باستخدام نسخة معدّلة من "ysoserial"، وهي أداة أنشأها frohoff و gebl، لاكتشاف ثغرات إلغاء تسلسل Java. الأداة الأصلية (https://github.com/frohoff/ysoserial) تولّد حمولات لتنفيذ الأوامر على النظام باستخدام دالة Runtime.exec. ومع ذلك، عادةً لا يمكن رؤية مخرجات الأمر، وبالتالي ليس من السهل كتابة ماسح يعتمد على هذا النوع من الدوال. لهذا السبب، يتم استخدام نسخة معدّلة من ysoserial لتوليد أنواع مختلفة من الحمولات، وهي مفيدة لاكتشاف المشكلة بدلاً من استغلالها:
حاليًا، تبلغ الفحوصات السلبية لماسح Java Deserialization Scanner عن وجود كائنات Java متسلسلة في طلبات HTTP، بينما تفحص الفحوصات النشطة بنشاط عن وجود دوال إلغاء تسلسل ضعيفة إلى جانب وجود المكتبات الضعيفة التالية:
علاوة على ذلك، تم تقديم حمولة URLSNDS للكشف النشط عن إلغاء تسلسل Java دون أي مكتبات ضعيفة. إذا وجد المكوّن الإضافي مشكلة URLDNS فقط (دون مكتبات ضعيفة)، فمن المحتمل أن يتمكن المهاجم من تنفيذ هجمات حجب الخدمة (DoS)، ولكن لتحقيق تنفيذ التعليمات البرمجية عن بُعد (RCE) يلزم بذل المزيد من الجهد. راجع هذا الرابط لمزيد من التفاصيل.
تدعم جميع مكونات المكوّن الإضافي طرق الترميز التالية:
يوجد في مجلد الاختبار (test) بعض تطبيقات خوادم Java البسيطة التي يمكن استخدامها لاختبار المكوّن الإضافي. يستخدم كل تطبيق مكتبة Java ضعيفة مختلفة.
يوفر المكوّن الإضافي تبويبًا مخصصًا لإطلاق الكشف باستخدام حمولات sleep و DNS على نقاط الإدراج المخصصة، من أجل التحقق من ثغرات إلغاء تسلسل Java في الحالات الخاصة التي لا تسمح فيها نقاط الدخول غير المعتادة بالكشف عبر الماسح. يمكن إدراج نتائج المختبر اليدوي ضمن نتائج ماسح Burp Suite.
يوفر المختبر اليدوي طريقة كشف إضافية: كشف CPU. تعتمد طريقة كشف CPU على عمل Wouter Coekaerts’ SerialDOS (https://gist.github.com/coekie/a27cc406fc9f3dc7a70d) وهي قادرة على اكتشاف مشاكل إلغاء التسلسل دون وجود أي مكتبة ضعيفة، وذلك باستخدام كائن يستهلك العديد من دورات المعالج (CPU cycles) في مهمة إلغاء التسلسل والتحقق من زمن الاستجابة. لا يتم تضمين طريقة كشف CPU افتراضيًا في فحوصات المسح النشط، لأنه يجب استخدامها بحذر: قد يتسبب إرسال عدد كبير من حمولات SerialDOS "الخفيفة" في مشاكل على الأنظمة القديمة أو عالية التحميل.
بعد العثور على ثغرة إلغاء تسلسل Java، يمكن استغلال المشكلة بنشاط من خلال التبويب المخصص "Exploiting". يوفر تبويب "Exploiting" واجهة مريحة لاستغلال ثغرات إلغاء التسلسل. يستخدم هذا التبويب أداة ysoserial لتوليد متجهات الاستغلال ويضمّن الحمولة المولّدة في طلب HTTP. تأخذ ysoserial مكتبة ضعيفة وأمرًا كوسيطات، وتولّد كائنًا متسلسلاً بشكل ثنائي يمكن إرساله إلى التطبيق الضعيف لتنفيذ الأمر على النظام الهدف (من الواضح إذا كان التطبيق الهدف ضعيفًا). يدعم تبويب Exploiting نفس تنسيقات الترميز المستخدمة في أقسام الكشف في المكوّن الإضافي.

من أجل تحسين هذا المكوّن الإضافي، يرجى الإبلاغ عن أي مشكلة يتم العثور عليها فيه. علاوة على ذلك، إذا كنت ترغب في إبلاغي عن أي مكتبة Java معلنة مفيدة لاستغلال هذا الضعف، وإذا توفر لدي الوقت، سأضيف فحصًا نشطًا لها في المكوّن الإضافي الخاص بي.
تم إنشاء هذا البرنامج لأغراض البحث الأكاديمي وتطوير تقنيات دفاعية فعالة فقط، وليس المقصود منه مهاجمة الأنظمة إلا في الحالات المصرح بها صراحةً. القائمون على صيانة المشروع غير مسؤولين عن سوء استخدام البرنامج. استخدمه بمسؤولية.
حقوق الطبع والنشر (c) 2020 Java Deserialization Scanner
يُمنح هذا الإذن مجانًا لأي شخص يحصل على نسخة من هذا البرنامج وملفات التوثيق المرتبطة به ("البرنامج")، للتعامل مع البرنامج دون قيود، بما في ذلك على سبيل المثال لا الحصر حقوق الاستخدام والنسخ والتعديل والدمج والنشر والتوزيع والترخيص من الباطن و/أو بيع نسخ من البرنامج، والسماح للأشخاص الذين تم تزويدهم بالبرنامج بذلك، مع مراعاة الشروط التالية:
يجب تضمين إشعار حقوق الطبع والنشر أعلاه وإشعار الإذن هذا في جميع النسخ أو الأجزاء الجوهرية من البرنامج.
يُقدَّم البرنامج "كما هو"، دون أي ضمان من أي نوع، صريح أو ضمني، بما في ذلك على سبيل المثال لا الحصر ضمانات القابلية للتسويق والملاءمة لغرض معين وعدم الانتهاك. لا يكون المؤلفون أو أصحاب حقوق الطبع والنشر مسؤولين بأي حال من الأحوال عن أي مطالبة أو أضرار أو مسؤولية أخرى، سواء في إطار عقد أو تقصير أو غير ذلك، تنشأ عن البرنامج أو فيما يتعلق به أو عن استخدامه أو التعامل معه.