السلام عليكم

نستعرض فى هذا المقال شرح مفصل لثغرات التحويل (ثغرات اعادة التوجيه) وهما ثغرتان:

الأولى : Server-side HTTP Redirection والثانية :Open Redirect

سنشرح كل ثغرة على حدة ومدى خطورتها واسباب حدوثها   وكيفية اكتشاف الثغرة ومن ثم استغلالها وسنوضح الفروق بين الثغرتين وطرق الحماية منهم ليكون هذا المقال اول واكبر مرجع عربى يتناول ثغرات Redirection .المقال يبدأ بشرح مبسط يناسب المبتدئين ثم ننتقل الى مستويات متقدمة للمحترفين.

اولا:Server-side HTTP Redirection

ببساطة هى ثغرة تقوم بتحويلك من رابط الى رابط اخر داخل التطبيق او ربما رابط خارجى

تظهر هذه الثغرة عندما يتم ادخال قيم معينة فى تطبيق الويب ثم يقوم السيرفر بمعالجة هذه القيم واضافتها الى الرابط الأصلى وبالتالى توجيه التطبيق لهذه القيمة

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

1

واضح من الصورة ان الموقع ياخذ طلبك ويدمجه فى بارمتر يسمى theme

ثم يعرض اختيارك فى المتصفح وهو الثيم الأول

سبب الثغرة فى الأساس هو ان السيرفر لا يقوم بالتحقق من مدخلات المستخدم حيث يستطيع المستخدم تغيير قيم البارامتر theme بدون اى حظر  على القيم اى ان هذه الثغرة تعتبر بروكسى -وسيط- بين المهاجم وبين السيرفر

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

لإكتشاف هذه الثغرة يجب عليك البحث عن كل البارمترز الى تقوم بالتحويل من صفحة الى صفحة اخرى .ابحث عن البارمترز التى تحتوى على روابط او على Ip كالتالى

theme=isecur1ty.com/themes/theme1

theme=192.168.1.1

اجمع كل البارمترز من هذا النوع لنبدا فى عملية الإستغلال:

سنقوم بالتعديل على قيمة البارمتر theme=isecur1ty.com/files ونرى استجابة السيرفر للطلب .اذا تم توجيهك لهذا المسار الجديد فالموقع مصاب .بالتأكيد تسطيع استبدال قيمة البارمتر بأى رابط سواء داخل الموقع او رابط خارجى وسيتم توجيهك الى الرابط الجديد وبالتالى تستطيع الدخول الى كثير من صفحات الموقع بدون اى صلاحيات .

مثال1: استغلال متقدم  لثغرة Server-side HTTP Redirection

سنحاول الإتصال بخدمة ftp من خلال هذه الثغرة .كما تعلمون خدمة ftp تعمل على بورت 21 وسنرى استجابة السيرفر للطلب لاحظ الصورة التالية

2

يستخدم هذا الإستغلال فى banner grabbing او ربما الدخول مباشرة الى الخدمة.

فتكون نتيجة الإستغلال غالبا على هذا الشكل -عرفنا البرنامج المثبت على بورت 21 واصداره وعرفنا نظام التشغيل المستخدم- وبالتالى توجيه هجمات اخرى ضده

3

 

مثال2: استغلال متقدم لثغرة Server-side HTTP Redirection

سنحاول الدخول الى الشبكة الداخلية للموقع واكتشاف الأجهزة المختلفة داخل هذه الشبكة وعمل فحص للبورتات المفتوحة على هذه الأجهزة واكتشاف الثغرات بها

4

نستبدل 192.168.0.1 بجموعة من ip

ونستبدل 21 بقائمة من اشهر البورتات

يمكن تنفيذ هذا الهجوم من خلال برمجة سكربت خاص “لعشاق البرمجة” او من الممكن الإعتماد على اداة burp intruder احد اداوت burp suite

5

 

 

مثال3: استغلال متقدم  لثغرة Server-side HTTP Redirection

سندمج هذه الثغرة مع ثغرة xss ونقوم بإستغلال مزدوج

عند فحص الموقع اكتشفنا ثغرة اخرى من نوع xss فى  =search.php?s

لاحظ الإستغلال فى الصورة التالية

6

قمنا بإستخدام بايلود يعرض كلمة hacked يمكنك استخدام بايلود اخر يناسب احتياجاتك .

اذن استخدمنا ثغرة التحويل وقمنا بالتحويل الى صفحة اخرى مصابة بثغرة xss وذلك يقوى من الثغرتين ويزيد من مساحة الإختراق فى الموقع.

ثانيا:Open Redirect

ببساطة هى ثغرة تقوم بالتحويل الى صفحات او روابط اخرى ولكنها اقل خطورة تستخدم بشكل رئيسى فى هجمات phishing “الصفحات المزورة” حيث بقوم بتحويل الضحية من الموقع الأصلى الى صفحة مزورة لسرقة البيانات وتعتبر اكثر قوة واقناعا من هجمات phishing التقليدية لأن التحويل يتم على الموقع الأصلى بدون اى مشاكل فيعطى الضحية الكثير من الثقة والراحة .

تظهر هذه الثغرة عندما يقبل تطبيق الويب مدخلات اى بارمتر ويقوم بتنفيذه بدون التحقق من قيمة المدخلات

http://www.isecur1ty.com?redirect=http://www.isecur1ty.org

فى المثال السابق هناك بارمتر يسمى redirect يقوم بالتحويل من isecur1ty.com الى isecur1ty.org لكن ماذا اذا قمنا بالتعديل على قيمة البارمتر واسندنا له قيمة جديدة :

http://www.isecur1ty.com?redirect=http://www.phishing.com

بالطبع سيتم تحويلك الى الرابط الجديد اذا كان الموقع مصاب “لا يتحقق من القيم”.

لإكتشاف الثغرة عليك فحص كل البارمترز الى تقوم بالتحويل الى روابط اخرى وقم بالتعديل على هذه الروابط ولاحظ استجابة الموقع :هل قام بالتحويل ام صد هذا الهجوم ؟

عملية  التحويل يمكن اكتشافها فى الموقع بعدة طرق:

مباشرة من البارمترز

او من خلال رسائل  التحويل التالية فى الهيدرز

7

8

اكتشاف الثغرة فى اكواد php :

9

هذا كود بسيط يقوم بالتحويل الى url المسند الى المتغير redirect

يعتبر هذا الكود مصاب بثغرة Open Redirect لعدم وجود اى وسيلة للتحقق من قيمة المتغير redirect وعدم وجود اى فلترة للمدخلات وتكون النتيجة كالأتى

قمنا بالتحويل الى موقع اخر  hacked.com وهو موقع المهاجم مثلا !!!

اكتشاف الثغرة فى اكواد javascript :

10

كود جافا سكريبت يقوم بعملية التحويل لكن واضح انه لا يوجد اى نوع من انواع التحقق لقيمة المتغير redirect اذن فالموقع مصاب بالثغرة وتكون النتيجة هى الأتى

قمنا بالتحويل الى موقع اخر  hacked.com وهو موقع المهاجم مثلا !!!

ولكن ماذا اذا كان الموقع يقوم بعملية تحقق من القيم المدخلة ؟!! سيتوجب علينا التلاعب بالرابط قليلا ومحاولة تخطى الفلترة او كود التحقق من خلال تشفير الرابط url encoding سنستعرض الأن بعض هذه الطرق المتقدمة .

مثال1: استغلال متقدم  لثغرة Open Redirect

لاحظ الإستغلال التالى :استغلال عادى ولكن عندما قمنا به لم تنجح عملية التحويل

http://www.isecur1ty.com/vuln.php?url=http://www.hacked.com

سنستخدم بعض الحيل لتخطى هذه الفلترة :

1/اضافة null byte قبل الرابط احيانا تخدع waf وتتخطى الفلترة

2/ تشفير كل الرابط url encoding

12

3/تشفير http://

13

4/التلاعب فى حالة الحروف

مثلا نحول http الى HtTp وهكذا

http://www.isecur1ty.com/vuln.php?url=HtTp://www.hacked.com

 

5/التكرار

http://www.isecur1ty.com/vuln.php?url=http://http://www.hacked.com

 

مثال2: استغلال متقدم  لثغرة Open Redirect

عندما فحصنا الموقع من ثغرات xss لم نكتشف اى ثغرة فالموقع محمى جيدا من ثغرات xss لذا قررنا محاولة استخدام ثغرة Open Redirect لإكتشاف واستغلال ثغرة xss

هذا استغلال ثغرة التحويل كما تعلمنا:

http://www.isecur1ty.com/vuln.php?url=http://www.hacked.com

محاولة اكتشاف ثغرة xss:

<http://www.isecur1ty.com/vuln.php?url=<script>alert(1);</script

لكن لا جديد فالموقع محمى جيدا من ثغرات xss .فما الحل ؟

سنقوم بتشفير البايلود base64 ليصبح بالشكل التالى

=PHNjcmlwdD5hbGVydCgxKTs8L3NjcmlwdD4

سندمج التشفيرة فى الرابط بهذا الشكل:

14

والأن سنقوم بنشفير من نوع url encoding ليصبح البايلود النهائى :

15

وتصبح النتيجة كالأتى :

16

ثغرة xss تعمل 100% فى موقع محمى من xss عن طريق ثغرة open redirect

 

ننتقل الأن الى طرق الحماية من هذه الثغرة :

يفضل اولا عدم استخدام عملية التحويل او اعادة التوجيه فى موقعك قدر الإمكان

اضافة فلترة قوية على قيم المدخلات 

منع كل meta charachters الغير مستخدمة

كل عمليات التحويل تكون الى روابط داخلية فى موقعك وعدم السماح بإستخدام روابط خارجية 

 الى هنا يتنهى المقال اى استفسار لا تتردد فى السؤال عبر التعليقات او بالتواصل معى على الفيس بوك .