مقال : شرح ثغرة Server-side HTTP Redirection وثغرة Open Redirect
السلام عليكم
نستعرض فى هذا المقال شرح مفصل لثغرات التحويل (ثغرات اعادة التوجيه) وهما ثغرتان:
الأولى : Server-side HTTP Redirection والثانية :Open Redirect
سنشرح كل ثغرة على حدة ومدى خطورتها واسباب حدوثها وكيفية اكتشاف الثغرة ومن ثم استغلالها وسنوضح الفروق بين الثغرتين وطرق الحماية منهم ليكون هذا المقال اول واكبر مرجع عربى يتناول ثغرات Redirection .المقال يبدأ بشرح مبسط يناسب المبتدئين ثم ننتقل الى مستويات متقدمة للمحترفين.
اولا:Server-side HTTP Redirection
ببساطة هى ثغرة تقوم بتحويلك من رابط الى رابط اخر داخل التطبيق او ربما رابط خارجى
تظهر هذه الثغرة عندما يتم ادخال قيم معينة فى تطبيق الويب ثم يقوم السيرفر بمعالجة هذه القيم واضافتها الى الرابط الأصلى وبالتالى توجيه التطبيق لهذه القيمة
مثال: موقع يوفر عدة ثيمات مختلفة ليظهر بها وعندما تختار ثيم معين يقوم السيرفر بمعالجة طلبك مثل الصورة التالية
واضح من الصورة ان الموقع ياخذ طلبك ويدمجه فى بارمتر يسمى 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 وسنرى استجابة السيرفر للطلب لاحظ الصورة التالية
يستخدم هذا الإستغلال فى banner grabbing او ربما الدخول مباشرة الى الخدمة.
فتكون نتيجة الإستغلال غالبا على هذا الشكل -عرفنا البرنامج المثبت على بورت 21 واصداره وعرفنا نظام التشغيل المستخدم- وبالتالى توجيه هجمات اخرى ضده
مثال2: استغلال متقدم لثغرة Server-side HTTP Redirection
سنحاول الدخول الى الشبكة الداخلية للموقع واكتشاف الأجهزة المختلفة داخل هذه الشبكة وعمل فحص للبورتات المفتوحة على هذه الأجهزة واكتشاف الثغرات بها
نستبدل 192.168.0.1 بجموعة من ip
ونستبدل 21 بقائمة من اشهر البورتات
يمكن تنفيذ هذا الهجوم من خلال برمجة سكربت خاص “لعشاق البرمجة” او من الممكن الإعتماد على اداة burp intruder احد اداوت burp suite
مثال3: استغلال متقدم لثغرة Server-side HTTP Redirection
سندمج هذه الثغرة مع ثغرة xss ونقوم بإستغلال مزدوج
عند فحص الموقع اكتشفنا ثغرة اخرى من نوع xss فى =search.php?s
لاحظ الإستغلال فى الصورة التالية
قمنا بإستخدام بايلود يعرض كلمة 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
بالطبع سيتم تحويلك الى الرابط الجديد اذا كان الموقع مصاب “لا يتحقق من القيم”.
لإكتشاف الثغرة عليك فحص كل البارمترز الى تقوم بالتحويل الى روابط اخرى وقم بالتعديل على هذه الروابط ولاحظ استجابة الموقع :هل قام بالتحويل ام صد هذا الهجوم ؟
عملية التحويل يمكن اكتشافها فى الموقع بعدة طرق:
مباشرة من البارمترز
او من خلال رسائل التحويل التالية فى الهيدرز
اكتشاف الثغرة فى اكواد php :
هذا كود بسيط يقوم بالتحويل الى url المسند الى المتغير redirect
يعتبر هذا الكود مصاب بثغرة Open Redirect لعدم وجود اى وسيلة للتحقق من قيمة المتغير redirect وعدم وجود اى فلترة للمدخلات وتكون النتيجة كالأتى
http://www.isecur1ty.com/vuln.php?url=http://www.hacked.com
قمنا بالتحويل الى موقع اخر hacked.com وهو موقع المهاجم مثلا !!!
اكتشاف الثغرة فى اكواد javascript :
كود جافا سكريبت يقوم بعملية التحويل لكن واضح انه لا يوجد اى نوع من انواع التحقق لقيمة المتغير redirect اذن فالموقع مصاب بالثغرة وتكون النتيجة هى الأتى
http://www.isecur1ty.com/?#www.hacked.com
قمنا بالتحويل الى موقع اخر 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
3/تشفير http://
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
سندمج التشفيرة فى الرابط بهذا الشكل:
والأن سنقوم بنشفير من نوع url encoding ليصبح البايلود النهائى :
وتصبح النتيجة كالأتى :
ثغرة xss تعمل 100% فى موقع محمى من xss عن طريق ثغرة open redirect
ننتقل الأن الى طرق الحماية من هذه الثغرة :
يفضل اولا عدم استخدام عملية التحويل او اعادة التوجيه فى موقعك قدر الإمكان
اضافة فلترة قوية على قيم المدخلات
منع كل meta charachters الغير مستخدمة
كل عمليات التحويل تكون الى روابط داخلية فى موقعك وعدم السماح بإستخدام روابط خارجية
الى هنا يتنهى المقال اى استفسار لا تتردد فى السؤال عبر التعليقات او بالتواصل معى على الفيس بوك .
مقال مميز اخ محمود وشرح مميز ..بوركت
شكرا لك محمد
مفال جميل جدا ودايما من تقدم لتقدم ان شاء الله 🙂
ربنا يخليك يا احمد 😀
انا مكتشف ثغره open redirect في موقع مشهور منذ سنه واكثر
واليوم وبعد متابعة موضوعك اكتشفت ان الموقع مصاب بـ XSS ,, وناجحه الثغره مع التشفير Base64
موضوعك جداً قوي.
شكرا لك .انتظر ما هو اقوى ان شاء الله .اتمنى عدم اساءة استغلال المعلومات :]
لما احقن في المتغيير URL رابط موقع او اي كود اخر ينحقن في الـ Action تبع form تسجيل الدخول للأعضاء
توضيح
تتوقع بالامكان استطيع الوصول لليوزر والباسورد عن طريق حقن كود html او احقن اي شي يوصلني لليوزر والباسورد
ربما تستطيع ان تحقن كيلوجر “keylogger” فى حالة توصلت الى ثغرة xss من نوع strored
وربما ايضا يكون هناك ثغرة CSRF فى مكان اخر فى الموقع
الصورة التوضيحية
http://www.up-00.com/Vxgqnlfb
🙁
http://store1.up-00.com/2014-05/1401016837621.png
شرح رائع ومفصل.. أحببت طريقتك في الإلقاء.. موفق إن شاء الله وننتظر منك كل جديد.
شكرا لك عمر
مقال رائع يا محمود .. من احسن لاحسن ان شاء الله
حبيبى يا حسن ربنا يخليك
الله يبارك فيك احسن مقال قرأته لحد الان في مجال الثغرات تقبل تحياتي واحترامي
شكرا لك وانتظر الأقوى ان شاء الله
مجهود رائع وشرح واضح شكرا جزيلا
شرحك رائع ومميز
وطريقة توصيل للمعلومة بسلاسة
مبسطة ومنظمة تدل على انك ناوي تفهم الجميع حتى اللي ما بفهم بالمجال حيفهم عليك
رائع أستاذ مجمد
انا اشهد ان شرحك افضل شرح شفته وكل مقالاتك حلووووه
ما شاء الله عليك اخي شروحاتك كلها جميله ومفهومه
Just iwant to test
مفال جميل جدا
-اريد تعلم لغة البرمجة. من اين ابدء؟ او ماهيا الغة التي تقترحونها علي؟ ارجو رد .وشكرا ^-^
>textarea<jtjpj
شكرأ اخي شرح جميل الله يبارك فيك لكن فيه موقع يتم من خللها اضافة رابط معين لا يتم التحويل ال اليه مثل facebook.com/zss وعندما تغير من facebook الا يتم التحويل ولكن عند التغير في zs يتم التحويل