اليوم بإذن الله سوف نشرح أحد أهم “أنواع الهجمات” الموجودة في تطبيقات الويب حيث كما هو واضح من العنوان سوف نتكلم عن SSRF حيث يتم إعتبار SSRF عبارة عن أحد أنواع الهجمات وليس ثغرة بحد ذاتها لكن سنشرحها كثغرة لسهولة الفهم هي إختصار لـ (Sever Side Request Forgery ) وتظهر حينما يكون المهاجم له القدرة في إرسال طلب بأستخدام السيرفر المصاب .

عادة يتم أستخدام SSRF في الهجوم على الشبكة الداخلية لسيرفر ما والتي تكون محمية بجدار ناري للعامة لكن لنفس السرفر يسمح بدخول حزم المعلومات (سيتم استغلالها في SSRF) . ويمكن ايضاً معرفة الخدمات المتوفرة على السيرفر والتنصت الى واجهة الاسترجاع او ما يرد به السيرفر على الطلب .

 

كيف يتم ذلك ؟ 

لو فرضنا مثلا انه لدينا موقع يقوم بجلب البيانات من الlocalhost الخاص به فرضاً سيكون الطلب كالاتي :

 

الان لنعمل تحقق ونغير الوجهة الى localhost ونضع منفذ معين في حالة ان المنفذ يعمل سيرجع 200 ok واذا كان لا يعمل سيرد اي كود من اكواد الاخطاء 500 404 الخ … اكثرها سوف يكون 304 في حالة عدم العمل .

فائدة ثغرات SSRF  

  • البحث ومهاجمة الشبكة الداخلية للسيرفر .
  • عد و مهاجمة الخدمات التي تعمل على تلك الاستضافات .
  • استغلال خدمات المصادقة المستندة إلى المضيف (سيتم شرحها في اجزاء اخرى) .
  • تخطي SOP للمتصفحات وجلب محتوى خارجي .

بالاعتماد على السيرفر المصاب هناك العديد من الاحتمالات القابلة للاستغلال مثلا لو كان السيرفر يستخدم cURL  التي تدعم الاتصال باكثر من برتكول غير HTTPS و HTTP .فلو كان السيرفر المصاب يعمل بي cURL يمكن ايضاً استخدام (dict://) لارسال بيانات معينة وطلب معين لاي ايبي وعلى اي منفذ .

يمكن استخدام (dict://locahost:11211/stat) سيجعل السيرفر يتصل بlocalhost عن طريق المنفذ 11211 بارسال stat كبيانات .

معلومة مهمة جداً منفذ 11211 هو المنفذ الافتراضي لMemcached والتي لها دور في تحسين وتسريع قواعد البيانات وتكون غير قابلة للدخول من الشبكة العنكبوتية . ولكن باستخدام SSRF يمكن الدخول لها وتفصح المعلومات وارسال طلبات كبيرة لها قد يسبب في عمل هجوم DoS  على السيرفر نفسه .

 

Slide1

 

المورد المُهاجم قد يكون :

  • ملف مشترك بين السيرفرات الداخلية
  • قواعد البيانات
  • عميل

وغيره .. ونقصد بمهاجمة منها فحص وكشف وتحديد بعض الخدمات وليس اختراق مباشر حيث يُمكن إستخدام SSRF لعمل DoS على سيرفرات داخلية او خارجية باستخدام قدرة السيرفر كما يتم استخدام SSRF لفحص البورتات للمهاجم باسم السيرفر او بعنوان السيرفر نفسه لكي لا يتم تحديد الايبي للمهاجم.

إستخدام SSRF السليم :

يكون الاستخدام السليم حين يتم السيطرة على الوجهة الخاصة بالحزمة ونوعها ، مثلاً شركة فيس بوك تستعمل SSRF للتاكد من ان الرابط سليم وموجود حتى تتجنب التصيد وغيره.

ولو وضعنا في فيسبوك ماسنجر الرابط (http://www.isecur1ty.org:80) سوف يظهر محتوى الموقع والبنر الخاص به كما بالصورة التالية :

 

2-20-2016 8-35-37 PM

لان المنفذ 80 مفتوح  ولكن ماذا لو وضعنا منفذ مغلق ؟

 

SSRF-2

 

لم يظهر بنر الموقع دليل على ان المنفذ مغلق وتم الفحص عن طريق سيرفر فيس بوك حصراً وهناك عدة طرق لاستغلال SSRF يمكن ربطه مع RFI او LFI (سيتم شرح هذا الجزء في وقت اخر) .

مثال أخر 

لو فرضنا وجود موقع مصاب نقوم بعمل اتصال للlocalhost عن طريق منفذ 631

http://target/proxy.php?csurl=http://localhost:631

منفذ 631 يستخدم للCUPS HTTP  والتي تستعمل “للطابعات” وعند الذهاب للرابط ظهرت لنا الصحفة التالية :

CUPSImage

مثل ما قلت سابقاً ان CUPS يستعمل للطابعات ولكن ليس هذا هدفنا من هذا الامر فبعض اصدارات الـ CUPS كانت مصابة بثغرة Shellshock والـ CUPS لا تعمل إلا على الشبكات الداخلية ولا يُمكن الإتصال بها مباشرةً ولكن عن طريق SSRF تم الاتصال بها وتم الكشف عن اصدار الـ CUPS ، والاجمل من هذا ان الـ CUPS لا تعمل الا  ROOT لذلك حين يتم استغلال Shellshock سوف تكون لك القابلية على استعمال صلاحيات الROOT عن طريق ارسال طلب POST للـ CUPS والذي هو مدعوم في proxy.php .

يمكن عمل brute force على المنافذ المفتوحة ايضاً في الlocalhost بنفس الطريقة.

أسماء اخرى 

  •   Cross Site Port Attack.

روابط مفيدة 

كلمة اخيرة 

مثل ما قلت في بداية المقال ان SSRF لا تعد ثغرة بقدر ما تعد نوع من الهجوم يمكن ان يتم استخدامه مع XXE ,LFI,RFI وغيره من الهجمات كما سيتم عمل تطبيق عملي في حال إنتهاء السكربت البرمجي المخصص للتدريب وفي مختبرات isecur1ty ايضاً.