أمن التطبيقات - Application Securityالمقال المثبتامن وحماية تطبيقات الويبمواضيع عامةمواضيع ومقالات

مقال : سرقة cookies من خلال ثغرات XSS بإستخدام XMLHttpRequest Method

تم أرشفة هذا المحتوى


كما نعلم أن الهدف من أي عملية إختبار الإختراق لا يتطلب فقط برهنة الخطأ البرمجي , بل يجب علينا إستغلاله للوصول إلى إختراق حقيقي للهدف يشكل خطر فعلي على الشركة أو الجهة التي طلبت أن تقوم لها بإختبار إختراق, ففي حال قمت بإكتشاف ثغرة xss على سبيل المثال في هدف معين طُلب منك أن تقوم بإختبار إختراقه ففي بعض الحالات لا يكفي فقط أن تقوم بعرض أمر إستعراضي كعرض javascript alert لكي تبرهن الثغرة , فهنا يجب عليك أن تقوم بإستكمال عملية إختبار الإختراق لبرهنة الخطر الحقيقي للثغرة كسرقة Cookies لهذا الهدف.

في فيديو سابق , قمت بشرح ثغرات Cross Site Scripting – XSS , وقمت بتوضيح بعض الأمور التي تتعلق بهذه الثغرة , وفي هذا المقال بإذن الله سوف أشرح كيفية إستغلال هذه الثغرة وإستعمالها في سرقة Cookies الخاصة بالهدف بشكل خفي دون أن نثير إنتباه الشخص بحركات غير طبيعية , حيث سوف نقوم بإستخدام Javascript لإرسال طلب GET يحتوي على Cookies دون أن نثير إنتباه الشخص , سوف نستغل الثغرة داخلة صفحة لدينا ونقوم بسرقة Cookies بإستخدام هذه التقنية.

سوف نقوم بإستخدام XMLHttpRequest وهو Object “كائن” أو “عنصر” خاص بلغة Javascript سوف نقوم بإستخدامه لإرسال طلب GET بالكوكيز الخاصة بنا , فمثلاً الكود التالي يوضح كيفية إرسال طلب معين من خلال XMLHttpRequest :

xmlhttp_xss_code

هذا الكود يقوم في البداية بتعريف متغير إسمه data , ومن ثم يقوم بإستدعاء الكائن XMLHttpRequest وتعريفه بالمتغير xmlHttp , بعد ذلك يقوم بإرسال طلب من نوع GET للعنوان 127.0.0.1:8090 مع قيمة المتغير Data لكي تكون النتيجة كالتالي :

terminal_xss

كما نلاحظ تم إرسال طلب GET يحمل just data ! وهي قيمة المتغير data , وبهذه الطريقة سوف نقوم الأن بسرقة الكوكيز من داخل سكربت مصاب بثغرة stored xss.

طبعاً أنا قمت بشرح الطريقة بشكل عام , ولكن يمكنك برمجة سكربت يعمل من جانب الخادم يقوم بتخزين الطلب وإظهاره بشكل أكثر وضوح.

الأن هذه هي الصفحة المصابة وكما نرى تقوم بحفظ الأمور التي نقوم بإدخالها بشكل سريع ومن ثم عرضها مجدداً لنا :

form_xss

كما نشاهد فور إدخال النص Just Test Text !! قام بطباعته لنا وسوف يقوم بحفظها داخل الصفحة , الأن سوف نقوم للتأكيد بإدخال javascript alert لكي نتقوم بالتحقق من إمكانية حقن أكواد Javascript والتحقق من وجود ثغرة XSS :

xss_test_code

وهنا نتيجة تنفيذ الكود , مما يؤكد لنا وجود الثغرة بهذه الصفحة :

xss_test_code2

بالطبع لن نقوم بشرح كيفية إكتشاف الثغرة بالتفصيل هنا , إنما فقط كيفية تنفيذ إستغلال بإستخدام XMLHttpReqest

من المفترض الأن أن إمكانية تنفيذ كود Javascript بالصفحة أصبحت أكيدة وأن الصفحة مصابة بثغرة Stored XSS , لذلك سوف نقوم بحقن الكود التالي الذي يقوم بإرسال طلب GET يحتوي على الكوكيز الخاصة بالمستخدم , وعليه نكون قد أتممنا إستغلال الثغرة بنجاح.

هذا الكود الذي سوف نستخدمه , قمنا فقط بتعديل بسيط جداً على الكود السابق بحيث يقوم بجلب document.cookie بدلاً من المتغير data :

final_xss_code

سوف نقوم بوضعه بالصفحة الأن كالتالي :

xss_input_code

وفور وضع الكود سوف تكون النتيجة كالتالي :

xss_done_xml

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

كما ذكرت مسبقاً أن هذا المقال فقط يوضح كيفية إستخدام الطريقة بشكل عام , يمكنكم تطويرها وكتابة سكربت يقوم بقرأة الطلب هذا وترجمته بشكل أفضل وكذلك حفظه داخل مجلد معين أو إرسال تنبيه لك عبر البريد 😉

أتمنى أن يكون المقال قد أعجبكم وبإذن الله سوف نلتقي بمقالات أخرى.

مقالات ذات صلة

‫12 تعليقات

  1. كيفك محمد انا احمد من غزة اذا ممكن نتوصال عى خاص او سكيبي
    فى شغال مهم كتير بجيب فلوس كتير من الاتصالات عبر نت
    ahmed.arafa204

  2. السلام عليكم اخوي الغالي
    الموضوع جميل ويستحق التجربه بهذه الطريقه وفعلا أكواد الأجاكس هو الحل لإخفاء الأعمال على العميل شكرا جزيلا

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى