فهم والبحث عن ثغرات Open Redirect

تم إعداد ترجمة المقال استعدادًا لبدء دورة "أمان تطبيقات الويب" .








واحدة من أكثر الثغرات شيوعًا والتي تم تجاهلها من قبل مطوري الويب هي Open Redirect (المعروفة أيضًا باسم "إعادة التوجيه وإعادة التوجيه غير المؤكدة") يعتبر موقع الويب عرضة لـ Open Redirect إذا كانت قيم المعلمات (الجزء من عنوان URL بعد "؟") في طلب HTTP GET يعيد توجيه المستخدم إلى موقع جديد دون التحقق من الموقع المستهدف. اعتمادًا على بنية الموقع المعرض للخطر ، يمكن أن تحدث إعادة التوجيه بعد إجراءات معينة ، مثل تسجيل الدخول ، وأحيانًا يمكن أن تحدث فورًا عند تحميل الصفحة.



يبدو أحد الأمثلة على ارتباط ضعيف مثل هذا: www.example.com/login.html؟RelayState=http٪3A٪2F٪2Fexample.com٪2Fnext



في هذا المثال ، تحدد معلمة "RelayState" مكان إعادة توجيه المستخدم بعد تسجيل دخول ناجح (في موقعنا المثال هو example.com/next ). إذا لم يتحقق الموقع من قيمة المعلمة "RelayState" للشرعية والأمان ، فيمكن للمهاجم استخدام هذه المعلمة لإعادة توجيه الضحية إلى صفحة مزيفة أنشأها المهاجم بنفسه: www.example.com/login.html؟RelayState=http٪3A٪2F ٪ 2FEvilWebsite.com



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



عندما يستخدم هجوم التصيد الاحتيالي Open Redirect ، فقد تتلقى الضحية رسالة بريد إلكتروني تبدو معقولة مع رابط يشير إلى المجال الصحيح والمألوف للضحية. ما قد لا يلاحظه الضحية هو أن هناك معلمات في منتصف عنوان URL تعمل على تغيير نقطة نهاية إعادة التوجيه. لتعقيد اكتشاف Open Redirect ، يمكن أن تحدث إعادة التوجيه بعد أن تدخل الضحية اسم مستخدم وكلمة مرور على موقع أصلي. وجد المهاجمون أن الطريقة الفعالة لخداع الضحية هي إعادة توجيههم إلى موقع مزيف بعد إدخال اسم المستخدم وكلمة المرور الخاصة بهم على الموقع الحقيقي. سيبدو الموقع المزيف مشابهًا للموقع الحقيقي وسيطلب من الضحية إعادة إدخال كلمة المرور. بعد أن تقوم الضحية بذلك ، سوف يكتب المهاجم كلمة المرور ،وسيتم إعادة توجيه الضحية إلى الموقع الحقيقي. إذا تم كل شيء بشكل صحيح ، فستعتقد الضحية أنها أخطأت في كلمة المرور في المرة الأولى ولن تلاحظ سرقة اسم المستخدم وكلمة المرور.



يستخدم التصيد الاحتيالي في معظم عمليات الاختراق المستهدفة الناجحة وكذلك في الهجمات الانتهازية بانتظام. بالنظر إلى مدى انتشار التصيد الاحتيالي في الحياة اليومية ، لا ينبغي استبعاد نقاط الضعف مثل Open Redirect أيضًا.



سيكون من غير العدل تحديد موقع أو شركة معينة باعتبارها عرضة لـ Open Redirect ، لأن هذه الثغرة الأمنية شائعة. بدلاً من ذلك ، سيكون من المفيد توضيح عدد هذه المواقع ومدى سهولة العثور عليها.



يعد إجراء بحث على الويب أحد أفضل الطرق للعثور على Open Redirect على موقعك وفي أي مكان آخر على الإنترنت بشكل عام.



يمنحك محرك بحث Google المرونة في كتابة استعلامات البحث ، بما في ذلك الاستعلامات التي تبحث على وجه التحديد عن عناوين URL للصفحة.



ستسمح عوامل التشغيل والأحرف الخاصة التالية لأي مستخدم بإنشاء استعلامات ذات علامات يمكن أن تساعد في اكتشاف Open Redirect:



  • allinurlهو العامل الذي يطلب من Google البحث في عنوان URL عن جميع الكلمات الرئيسية المحددة. على سبيل المثال: allinurl:ReturnUrlسيبحث عن جميع صفحات الويب التي تحتوي على جزء ReturnUrl في العنوان.
  • site- عامل يقول أنه يعرض فقط تلك النتائج الموجودة على مجال أو موقع ويب معين. مثال: site:example.comالبحث عن صفحات الويب بواسطة example.com.
  • "" - علامات الاقتباس المزدوجة هي أحرف خاصة تستخدم للإشارة إلى البحث عن مجموعة دقيقة من الكلمات والأحرف داخل علامات الاقتباس.
  • * - علامة النجمة هي حرف بدل يمثل كلمة واحدة أو أكثر.


يتيح لنا استخدامها العثور على إشارات تدل على إمكانية إعادة توجيه Open Redirect: يمكننا في الوقت نفسه البحث عن وجود الرموز المميزة "http" و "https" في معلمات طلب GET. على سبيل المثال:



allinurl:%3Dhttps*
allinurl:%253Dhttps*
allinurl:%3Dhttp*
allinurl:%253Dhttp*


يمكننا أيضًا البحث عن كلمات عامة محددة تتعلق بإعادة التوجيه في منطقة معلمات طلب GET. على سبيل المثال:



allinurl:"<keyword>=https"
allinurl:"<keyword>=http"
allinurl:<keyword>=https
allinurl:<keyword>=http
allinurl:<keyword>%3Dhttps
allinurl:<keyword>%3Dhttps*
allinurl:<keyword>%253Dhttps
allinurl:<keyword>%253Dhttps*
allinurl:<keyword>%3Dhttp
allinurl:<keyword>%3Dhttp*
allinurl:<keyword>%253Dhttp
allinurl:<keyword>%253Dhttp*
allinurl:<keyword>


بدلاً من ذلك <keyword>، سنستخدم إحدى الكلمات التالية الخاصة بإعادة التوجيه: RelayState ، ReturnUrl ، RedirectUri ، Return ، Return_url ، Redirect ، Redirect_uri ، Redirect_url ، RedirectUrl ، Forward ، Forward_url ، SuccessUrl ، Redir ، Exit_url ، Destination . هذه ليست قائمة كاملة من الكلمات الرئيسية. يمكنك العثور على المزيد من خلال تحليل نتائج استعلامات بحث URL الأكثر عمومية في قسم معلمات طلب GET.



لعمليات البحث المستهدفة ، يمكنك إضافة «site:<domain_name>»إلى نهاية عمليات البحث الخاصة بك على Google. يمكن أن تساعدك هذه الطريقة في العثور على نقاط الضعف في Open Redirect على موقعك.



من خلال هذا البحث البسيط ، يمكنك العثور على العشرات من نقاط ضعف Open Redirect في غضون دقائق. تتضمن قائمة المواقع المعرضة للخطر مواقع البنوك والشركات الدولية والشركات الموثوق بها والمشاريع المفضلة والعديد من مواقع المنظمات الصغيرة. كمكافأة إضافية ، في كل مرة يتعثر فيها زاحف Google على مواقع من Open Redirect ، سنتلقى نتائج محدثة من خلال الاستعلامات.



أفضل طريقة لتجنب ثغرة Open Redirect هي تجنب إعادة توجيه المعلمة الخاصة بالمستخدم أو طلب GET. إذا كانت إعادة التوجيه أمرًا لا مفر منه ، فيمكن التعامل معها عن طريق التحقق من صحة الموقع المستهدف وتصفية سمعته من خلال قائمة بيضاء من عناوين URL التي تم التحقق من صحتها.



أود أن أشجعك على إخبار أصدقاء مطوري الويب عن Open Redirect. يمكنك إعادة توجيه هذه المقالة إليهم ، أو حتى اكتشاف الثغرات باستخدام الطريقة المذكورة أعلاه وإبلاغ الشركة بها مع وصف تفصيلي للمشكلة. لنجعل هجمات التصيد أكثر صعوبة معًا!



إذا كنت ترغب في مشاركة عمليات بحث Google التي تعمل من أجل اكتشاف Open Redirect ، فيمكنك القيام بذلك في التعليقات.






تعلم المزيد عن الدورة







All Articles