x32x01
أدارة أكتب كود
- بواسطة x32x01 ||
ماهي XSS؟
تعد XSS من أشهر الهجمات على الويب والتي تتم عبر حقن موقعك بسكريبت يقوم بتنفيذ أوامر خبيثة على حواسيب الزوار، أي أن موقعك يتحول إلى وسيلة لاصطياد الضحايا عبر سكريبت يزرعه المخترق في موقعك.
في XSS لا يستهدف المخترق موقعك بدرجة أولى، وإنما يستعمله كجسر للعبور إلى الضحايا الذين يتصفحونه، حيث يستغل ثغرة في موقعك يتسلل من خلالها إلى زوار موقعك للهجوم عليهم.
و XSS هي اختصار ل Cross Site Scripting، هل لاحظت شيئا؟
نقول XSS بينما الاختصار ينبغي أن يكون CSS، فلماذا يا ترى؟
حتى لا نخلط بين مسمى الثغرة وبين لغة الأنماط CSS المعروفة، لذلك تم استبدال حرف C ب X دلالة على Cross والتي تعني بالانجليزية شارة التقاطع وهي ترسم على هيئة X، لذلك تسمى Cross Site Scripting اختصارا ب XSS.
نعود ونعرف باختصار، ثغرة XSS هي ثغرة تسمح للمخترق بزرع أو حقن سكريبت بأي لغة يدعمها المتصفح الذي يستعمله زائر موقعك، وغالبا ما يكون هذا السكريبت بلغة جافاسكريبت، وعند تصفح الموقع يتم تنفيذ هذا السكريبت مما يهدد الزائر.
كيف تعمل XSS؟
أولا في هجوم XSS عندنا ثلاث فاعلين وهم كالتالي:
- الضحية وهو زائر موقعك
- الوسيلة أو الجسر وهو موقعك نفسه
- ثم المخترق وهو الذي يستغل موقعك للإيقاع بالزوار
وفي هجوم XSS يقوم المخترق باستغلال إحدى طرق إدخال البيانات إلى الموقع، وليكن مثلا عبر حقول إدخال النص Input Text Fields، فيرسل بيانات على شكل سكريبت، بعد ذلك يتم تنفيذ هذا السكريبت على متصفح الزائر، وتختلف هجمات XSS باختلاف طريقة التعامل مع السكريبت المحقون، إما أن يخزن في قاعدة بيانات ثم ينفذ عند استدعائه، وإما أن ينفذ مباشرة دون أن يحفظ عبر دمجه في رابط معين.
طبعا الكلام مايزال مبهما بعض الشيء، لكن بالمثال يتضح المقال.
ماهي أنواع XSS؟
توجد ثلاثة أنواع من هجمات XSS كلها قائمة على نفس المبدأ المتمثل في استغلال موقع عبر إرسال سكريبت يتم تنفيذه على مستوى متصفح الزائر.
وهذه الأنواع الثلاثة من أنواع XSS كما يلي:
• Stored XSS وتسمى كذلك Persistent XSS: وتحدث هذه الثغرة حينما يقوم المخترق باستغلال أحد مدخلات الموقع فيقوم بإرسال سكريبت يتم تخزينه على مستوى سيرفر الموقع وغالبا في قاعدة البيانات Database، كأن يرسل السكريبت من مربع كتابة التعليقات في الموقع، أو على شكل رسالة، أو من أي مكان في الموقع يسمح بتخزين القيم في قاعدة البيانات، وحينما يأتي زائر ليستعرض الصفحة التي تحتوي على القيم القادمة من قاعدة البيانات يتم تنفيذ هذا السكريبت. على سبيل المثال قمت ببرمجة مدونة Blog من أجل نشر المقالات عليها، في إحدى مقالاتك دخل المخترق وبدل أن يكتب لك تعليقا قام بكتابة سكريبت، هذا السكريبت سيتم تخزينه في قاعدة البيانات، وبالتالي حينما سيأتي زائر ما ليستعرض مقالتك سيتم تحميل التعليقات من قاعدة البيانات ومعها التعليق الملغوم.
• Reflected XSS وتسمى كذلك Non-persistent XSS، وتحدث حينما يستغل المخترق إحدى مدخلات الموقع دون الحاجة إلى تخزين السكريبت في قاعدة البيانات، فيقوم بإرسال رابط الموقع مدموجا بسكريبت ملغوم إلى الضحية عبر إيميل مثلا، أو من خلال نشر هذا الرابط على موقع ما أو على مواقع السوشيال ميديا، وحينما يضغط الضحية على الرابط سيذهب به إلى الموقع وستم تنفيذ السكريبت المدمج معه وبالتالي سيحصل المخترق على ما يشاء، إما عبر سرقة Cookies أو من خلال KeyLogging أو القيام بعمليات أخرى.
• Dom-based XSS: وهو شبيه جدا بالنوع Reflected XSS، غير أنه يرتكز بالأساس على التحكم في Dom الخاص بالصفحة عبر تنفيذ سكريبت مكان إرسال قيمة معينة.
كيف تستطيع جافا سكريبت التأثير على بيانات الزائر؟
تنفيذ جافاسكريبت على متصفح الزائر لا يشكل أي خطر على الإطلاق ماعدا ما سنذكره لاحقا، لأن جافاسكريبت تشتغل في بيئة محدودة الصلاحيات تمنعها من الوصول إلى ملفات المستخدم وإلى نظام التشغيل، ويمكنك تجربة ذلك بنفسك، من خلال فتح مفكرة نوتباد ومحاولة حذف ملف أو إعادة تسميته من خلال أوامر جافاسكريبت ستجد أن ذلك غير ممكن باستخدام جافاسكريبت لوحدها.
لكن تأتي خطورة جافاسكريبت من قدرتها على الوصول إلى بعض بيانات المستخدم الحساسة ك Cookies، ومن قدرتها على إرسال HTTP Requests لمحتوى معين إلى وجهة معينة من خلال أجاكس أي تستطيع إرسال البيانات إلى السرفر، وكذلك من قدرتها على تعديل HTML الخاص بالصفحة التي ينفذ عليها سكريبت بسبب DOM methods.
هنا تتجلى الخطورة في تنفيذ أوامر جافاسكريبت على متصفح الزائر، بحيث يكفي تنفيذ أمر document.cookie للحصول على Cookie المرتبط بالموقع ومن ثم إرساله إلى السرفر الخاص بالمخترق من أجل العثور على بعض المعلومات الحساسة مثل معرف Session ID.
أو من خلال تسجيل الحروف Keylogging بحيث يتم قنص الحدث الخاص بالضغط على أزرار لوحة المفاتيح وتسجيل كل ما يتم كتابته وإرساله بعد ذلك إلى سرفر المخترق وقد تشمل النصوص المكتوبة كلمات السر وأرقام بطاقة الائتمان وغيرها..
كما يمكن للمخترق أن يغير DOM الخاص بالصفحة من خلال إضافة فورم إلى الموقع ويضع في action attribute وجهة الإرسال وبالتالي يمكنه استغلال هذا الأمر في عملية Phishing عبر دفع المستخدم إلى إدخال بعض المعلومات الحساسة وهو يظن أنه يدخلها في الموقع وفي الحقيقة سيتم إرسالها إلى سيرفر المخترق.
تعد XSS من أشهر الهجمات على الويب والتي تتم عبر حقن موقعك بسكريبت يقوم بتنفيذ أوامر خبيثة على حواسيب الزوار، أي أن موقعك يتحول إلى وسيلة لاصطياد الضحايا عبر سكريبت يزرعه المخترق في موقعك.
في XSS لا يستهدف المخترق موقعك بدرجة أولى، وإنما يستعمله كجسر للعبور إلى الضحايا الذين يتصفحونه، حيث يستغل ثغرة في موقعك يتسلل من خلالها إلى زوار موقعك للهجوم عليهم.
و XSS هي اختصار ل Cross Site Scripting، هل لاحظت شيئا؟
نقول XSS بينما الاختصار ينبغي أن يكون CSS، فلماذا يا ترى؟
حتى لا نخلط بين مسمى الثغرة وبين لغة الأنماط CSS المعروفة، لذلك تم استبدال حرف C ب X دلالة على Cross والتي تعني بالانجليزية شارة التقاطع وهي ترسم على هيئة X، لذلك تسمى Cross Site Scripting اختصارا ب XSS.
نعود ونعرف باختصار، ثغرة XSS هي ثغرة تسمح للمخترق بزرع أو حقن سكريبت بأي لغة يدعمها المتصفح الذي يستعمله زائر موقعك، وغالبا ما يكون هذا السكريبت بلغة جافاسكريبت، وعند تصفح الموقع يتم تنفيذ هذا السكريبت مما يهدد الزائر.
كيف تعمل XSS؟
أولا في هجوم XSS عندنا ثلاث فاعلين وهم كالتالي:
- الضحية وهو زائر موقعك
- الوسيلة أو الجسر وهو موقعك نفسه
- ثم المخترق وهو الذي يستغل موقعك للإيقاع بالزوار
وفي هجوم XSS يقوم المخترق باستغلال إحدى طرق إدخال البيانات إلى الموقع، وليكن مثلا عبر حقول إدخال النص Input Text Fields، فيرسل بيانات على شكل سكريبت، بعد ذلك يتم تنفيذ هذا السكريبت على متصفح الزائر، وتختلف هجمات XSS باختلاف طريقة التعامل مع السكريبت المحقون، إما أن يخزن في قاعدة بيانات ثم ينفذ عند استدعائه، وإما أن ينفذ مباشرة دون أن يحفظ عبر دمجه في رابط معين.
طبعا الكلام مايزال مبهما بعض الشيء، لكن بالمثال يتضح المقال.
ماهي أنواع XSS؟
توجد ثلاثة أنواع من هجمات XSS كلها قائمة على نفس المبدأ المتمثل في استغلال موقع عبر إرسال سكريبت يتم تنفيذه على مستوى متصفح الزائر.
وهذه الأنواع الثلاثة من أنواع XSS كما يلي:
• Stored XSS وتسمى كذلك Persistent XSS: وتحدث هذه الثغرة حينما يقوم المخترق باستغلال أحد مدخلات الموقع فيقوم بإرسال سكريبت يتم تخزينه على مستوى سيرفر الموقع وغالبا في قاعدة البيانات Database، كأن يرسل السكريبت من مربع كتابة التعليقات في الموقع، أو على شكل رسالة، أو من أي مكان في الموقع يسمح بتخزين القيم في قاعدة البيانات، وحينما يأتي زائر ليستعرض الصفحة التي تحتوي على القيم القادمة من قاعدة البيانات يتم تنفيذ هذا السكريبت. على سبيل المثال قمت ببرمجة مدونة Blog من أجل نشر المقالات عليها، في إحدى مقالاتك دخل المخترق وبدل أن يكتب لك تعليقا قام بكتابة سكريبت، هذا السكريبت سيتم تخزينه في قاعدة البيانات، وبالتالي حينما سيأتي زائر ما ليستعرض مقالتك سيتم تحميل التعليقات من قاعدة البيانات ومعها التعليق الملغوم.
• Reflected XSS وتسمى كذلك Non-persistent XSS، وتحدث حينما يستغل المخترق إحدى مدخلات الموقع دون الحاجة إلى تخزين السكريبت في قاعدة البيانات، فيقوم بإرسال رابط الموقع مدموجا بسكريبت ملغوم إلى الضحية عبر إيميل مثلا، أو من خلال نشر هذا الرابط على موقع ما أو على مواقع السوشيال ميديا، وحينما يضغط الضحية على الرابط سيذهب به إلى الموقع وستم تنفيذ السكريبت المدمج معه وبالتالي سيحصل المخترق على ما يشاء، إما عبر سرقة Cookies أو من خلال KeyLogging أو القيام بعمليات أخرى.
• Dom-based XSS: وهو شبيه جدا بالنوع Reflected XSS، غير أنه يرتكز بالأساس على التحكم في Dom الخاص بالصفحة عبر تنفيذ سكريبت مكان إرسال قيمة معينة.
كيف تستطيع جافا سكريبت التأثير على بيانات الزائر؟
تنفيذ جافاسكريبت على متصفح الزائر لا يشكل أي خطر على الإطلاق ماعدا ما سنذكره لاحقا، لأن جافاسكريبت تشتغل في بيئة محدودة الصلاحيات تمنعها من الوصول إلى ملفات المستخدم وإلى نظام التشغيل، ويمكنك تجربة ذلك بنفسك، من خلال فتح مفكرة نوتباد ومحاولة حذف ملف أو إعادة تسميته من خلال أوامر جافاسكريبت ستجد أن ذلك غير ممكن باستخدام جافاسكريبت لوحدها.
لكن تأتي خطورة جافاسكريبت من قدرتها على الوصول إلى بعض بيانات المستخدم الحساسة ك Cookies، ومن قدرتها على إرسال HTTP Requests لمحتوى معين إلى وجهة معينة من خلال أجاكس أي تستطيع إرسال البيانات إلى السرفر، وكذلك من قدرتها على تعديل HTML الخاص بالصفحة التي ينفذ عليها سكريبت بسبب DOM methods.
هنا تتجلى الخطورة في تنفيذ أوامر جافاسكريبت على متصفح الزائر، بحيث يكفي تنفيذ أمر document.cookie للحصول على Cookie المرتبط بالموقع ومن ثم إرساله إلى السرفر الخاص بالمخترق من أجل العثور على بعض المعلومات الحساسة مثل معرف Session ID.
أو من خلال تسجيل الحروف Keylogging بحيث يتم قنص الحدث الخاص بالضغط على أزرار لوحة المفاتيح وتسجيل كل ما يتم كتابته وإرساله بعد ذلك إلى سرفر المخترق وقد تشمل النصوص المكتوبة كلمات السر وأرقام بطاقة الائتمان وغيرها..
كما يمكن للمخترق أن يغير DOM الخاص بالصفحة من خلال إضافة فورم إلى الموقع ويضع في action attribute وجهة الإرسال وبالتالي يمكنه استغلال هذا الأمر في عملية Phishing عبر دفع المستخدم إلى إدخال بعض المعلومات الحساسة وهو يظن أنه يدخلها في الموقع وفي الحقيقة سيتم إرسالها إلى سيرفر المخترق.