إستخدام بروتوكول http بدون استخدام الكوكيز cookies يمكن أن يطلب منك إعادة تسجيل الدخول خلال كل خطوة أو كل عمل تقوم به وهذا أمر غير عملي لذلك تم إيجاد مفهوم إدارة الجلسة session management حيث يقوم التطبيق بحفظ مسار طلباتك بعد قيامك بعملية تسجيل الدخول، وهي تؤمن عامل أخر يكون عرضة للهجوم في تطبيق الويب.

Session-Management

التالي هو بعض أنواع الهجمات التي تستخدم لاستغلال ثغرات الجلسة :

  • سرقة الجلسة Session hijacking : يتم ذلك بسرقة مُعرف المستخدم وإعادة استخدامه من قبل مختبر الاختراق ، سرقة مُعرف المستخدم يمكن أن تتم بعدة طرق مختلفة ولكن XSS هي الطريقة الأكثر شيوعاً.
  • تثبيت الجلسة Session fixation :  تحدث عندما يقوم مختبر الاختراق بتخصيص مُعرف جلسة شرعي من التطبيق لمستخدم غير معروف.
    هذا الهجوم يحدث أيضاً عندما يقبل سيرفر الويب أي جلسة من المستخدم (أو المهاجم) ولا يقوم بتخصيص جلسة جديدة فوق المصادقة، في هذه الحالة مختبر الاختراق سوف يختار جلسته التي قام بتحديدها مسبقاً ويرسلها إلى الهدف هذا الهجوم يعمل لأن مُعرف الجلسة يُسمح بإعادة استخدامه في جلسات متعددة.
  • منح الجلسة Session donation : هذا الهجوم شبيه جداً بتثبيت الجلسة ولكن بدلاً من تخصيص مُعرف المستخدم، فإن مختبر الاختراق سيقوم بتقديم مُعرف الجلسة (جلسة المهاجم) إلى المستخدم على أمل أن يقوم المستخدم بإكمال العملية بدون معرفته.
    المثال الكلاسيكي هو هجوم التصيد phishing محاولة خداع مستخدمي الإنترنت للحصول على بياناتهم الشخصية (مثل كلمة السر أو رقم بطاقة الائتمان) عن طريق إنشاء صفحة ويب مطابقة تماما لصفحة تسجيل الدخول لموقع رسمي وعندما يقوم الهدف بإدخال اسم المستخدم وكلمة المرور سوف ترسل هذه المعلومات إلى ملف خاص بمختبر الاختراق.

عملياً فإن مهاجمة الكوكيز تتم من خلال الأمور التالية :

  • جمع عدد كبير من عينات الكوكيز(Cookies) .
  • إستخدام الهندسة العكسية لتحليل خوارزمية توليد الكوكيز(Cookies).
  • التلاعب بالكوكيز (سرقة الكوكيز(Cookies) وإعادة استخدامها).

عملية الفحص :

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

  • هل كل التعليمات Set-Cookie هي محمية.
  • هل يتم إرسال الكوكيز (Cookies) عبر قناة اتصال غير مشفرة.
  • هل الكوكيز(Cookies) دائمة أم لها فترة صلاحية محددة.
  • ماهي مدة صلاحية الكوكيز(Cookies).
  • ماهي إعدادات HTTP Cache-Control المستخدمة لحماية الكوكيز(Cookies).

جمع الكوكيز(Cookies) :

أول خطوة هي فهم كيف يقوم التطبيق بخلق وإدارة الكوكيز(Cookies) ومن أجل ذلك يجب على مختبر الاختراق الإجابة على الأسئلة التالية :

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

عمليات الفحص السابقة كلها تتم بشكل يدوي باستخدام بروكسي اعتراض مثل burp suite.

تحليل الكوكيز:

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

القيمة التالية :

192.168.100.1user:password:15:58

يتم ترميزها كالتالي :

Hex: 3139322e3136382e3130302e31757365723a70617373776f72643a31353a3538

=Base64: MTkyLjE2OC4xMDAuMXVzZXI6cGFzc3dvcmQ6MTU6NTg

MD5: f27d5db707a2d930f85b8b3b329e3afb

معرفة نوع الترميز المستخدم يسمح لمختبر الاختراق بفك ترميز الكوكيز والحصول على المعلومات الأصلية.

مُختبر الاختراق يمكن أن يقوم باستخدام هجوم القوة الغاشمة brute force من أجل معرفة نوع الترميز المستخدم.

مُختبر الاختراق يجب أن يحدد الأمور التالية :

  • ماهي الأجزاء الثابتة من الكوكيز(cookies).
  • ماهو النص الصريح الذي يتم تخزينه في الكوكيز(cookies)  (اسم المستخدم أو كلمة السر أو عنوان IP).
  • ما هي المعلومات التي يمكن استنتاجها من قيمة الكوكيز(cookies).

الهجوم على الكوكيز القابل للتطبيق يتمحور حول مبدأ إعادة استخدام الكوكيز، ليس المهم كيف يقوم مختبر الاختراق بسرقة الكوكيز أو كيف يخطط لإعادة استخدامها ولكن المهم فقط هو أن يكون تطبيق الويب يعمل بشكل كامل مع الكوكيز القديمة ،ويمكن اكتشاف ذلك بسهولة.

يمكن القيام بسلسلة من الاختبارات ضد تطبيق الويب لمعرفة اذا كانت ثغرة إعادة استخدام الكوكيز موجودة في التطبيق :

  • قم بتسجيل الخروج من التطبيق ثم قم بالضغط على زر العودة في المتصفح وقم بتحديث الصفحة لترى فيما إذا كان بإمكانك الاستمرار بالوصول إلى الصفحة في تطبيق الويب وذلك في الصفحات التي تحتاج إلى جلسة فعالة active session.
  • إنسخ وألصق مُعرف جلستك إلى مستند نصي وقم بإعادة استخدامه بعد القيام بعملية تسجيل الخروج من التطبيق، ويتم ذلك باستخدام بروكسي اعتراض intercepting proxy لإضافة مُعرف الجلسة القديم.
  • توقف عن استخدام المتصفح لفترة معينة لاختبار قيمة الفترة الزمنية للتطبيق وذلك بعد أن تتلقى مُعرف جلسة شرعي.
  • العديد من تطبيقات الويب ترسل الكوكيز إلى المستخدم عندما يقوم بزيارة الموقع حتى وأن لم يقم بعملية تسجيل الدخول ،قم بنسخ ولصق مُعرف الجلسة إلى مستند نصي ثم قم بعملية تسجيل الدخول ثم قم بعملية مقارنة لمُعرف الجلسة الذي ارسله الموقع قبل تسجيل الدخول ومُعرف الجلسة بعد القيام بعملية تسجيل الدخول، يجب أن يكون القيم مختلفة وإذا لم تكن مختلفة فهذه ثغرة كبيرة في إدارة الجلسة.

قم بعملية تسجيل الدخول إلى نفس التطبيق من متصفحين مختلفين لترى فيما إذا كان التطبيق يدعم تسجيل الدخول المزدوج، إذا كان يوجد جلستين وإذا كان يوجد مُعرف جلسة وحيد سيتم تنبيهك في المتصفح الأول بأنه تم تسجيل الدخول إلى نفس الحساب في نفس الوقت من مكان أخر.