
التعرف تلقائياً على مشكلات إلغاء التسلسل في تطبيقات Java و .NET باستخدام المسح النشط والسلبي
إضافة لـ Burp Suite للمساعدة في كشف واستغلال مكتبات/واجهات برمجة التطبيقات الخاصة بالتسلسل.
تم تطوير هذه الإضافة المفيدة في الأصل بواسطة Nick Bloor (@nickstadb) لصالح NCC Group، وهي تستند بشكل أساسي إلى عمل Alvaro Muñoz و Oleksandr Mirosh، جمعة الثالث عشر: هجمات JSON، الذي قدموه في Black Hat USA 2017 و DEF CON 25. في عملهم، استعرضوا مجموعة من مكتبات تسلسل JSON و XML الخاصة بـ Java و .NET ووجدوا أن العديد منها يدعم تسلسل كائنات عشوائية في زمن التشغيل، ونتيجة لذلك فهي عرضة للخطر بنفس طريقة العديد من تقنيات التسلسل - يمكن التحكم في أجزاء من التعليمات البرمجية (أدوات POP) التي يتم تنفيذها أثناء أو بعد وقت قصير من إلغاء التسلسل باستخدام خصائص الكائنات المُسلسلة، مما يفتح غالبًا إمكانية تنفيذ تعليمات برمجية أو أوامر عشوائية.
كما تم تضمين وحدات إضافية تدعم تنسيقات أخرى بما في ذلك YAML و AMF، بناءً على الورقة البحثية Java Unmarshaller Security - Turning your data into code execution والأداة marshalsec بواسطة Moritz Bechler.
تنفذ إضافة Burp Suite هذه المسح السلبي والنشط لتحديد المكتبات الضعيفة واستغلالها.
يمكن لـ Freddy اكتشاف استخدام مكتبات وواجهات برمجة تطبيقات التسلسل الخطيرة بشكل سلبي من خلال مراقبة محددات الأنواع أو التوقيعات الأخرى في طلبات HTTP ومراقبة استجابات HTTP للاستثناءات الصادرة عن المكتبات المستهدفة. على سبيل المثال، تستخدم المكتبة FastJson حقل JSON $types لتحديد نوع الكائن المُسلسل.
تتضمن Freddy وظائف المسح النشط التي تحاول كشف المكتبات المتأثرة واستغلالها حيثما أمكن.
يحاول المسح النشط اكتشاف استخدام المكتبات الضعيفة باستخدام ثلاث طرق: قائمة على الاستثناءات، وقائمة على الوقت، وقائمة على Collaborator.
في المسح النشط القائم على الاستثناء، يقوم Freddy بإدخال بيانات في طلب HTTP من شأنها أن تؤدي إلى ظهور استثناء معروف خاص بالهدف أو رسالة خطأ. إذا لوحظت رسالة الخطأ هذه في استجابة التطبيق، يتم رفع مشكلة.
في بعض الحالات، يمكن استخدام الحمولات القائمة على الوقت للكشف لأن تنفيذ أوامر نظام التشغيل يتم تشغيله أثناء إلغاء التسلسل، ويؤدي هذا الإجراء إلى حظر التنفيذ حتى انتهاء أمر نظام التشغيل. يستخدم Freddy حمولات تحتوي على ping [-n|-c] 21 127.0.0.1 لإحداث تأخير زمني في هذه الحالات.
تعمل الحمولات القائمة على Collaborator إما عن طريق إصدار أمر nslookup لحل اسم المجال الذي تم إنشاؤه بواسطة Burp Suite Collaborator، أو عن طريق محاولة تحميل فئات عن بعد من اسم المجال إلى تطبيق Java. يتحقق Freddy من المشكلات الجديدة من Collaborator كل 60 ثانية ويضع علامة عليها في قائمة المشكلات بالرمز RCE (Collaborator).
الأهداف التالية مدعومة حاليًا (المائلة جديدة في v2.0):
Java
.NET
تم الإصدار بموجب ترخيص agpl-3.0، راجع LICENSE لمزيد من المعلومات.
يستخدم Freddy نظام البناء gradle.
لبناء ملف jar، تحتاج فقط إلى تشغيل gradle jar في المجلد الجذر.
سيقوم هذا بتشغيل الاختبارات، وإذا كان كل شيء صحيحًا، فسيتم إنشاء ملف jar في المجلد build/libs.