مساء الخير..
ثغرة xss سبب وجودها , خطورتها (تأثيرها) و طرق استغلالها
xss اختصار ل Cross Site Scripting اي البرمجة عبر الموقع و اختصرت xss بدلا من css للتفريق بينها و بين Cascading Style Sheets
سبب حدوث الثغرة هو طباعة المخرجات بدون فلترة مما يتيح للمهاجم بإدراج اكواد HTML , Java
تنفيذية.
يوجد نوعان ل :xss
- Stored/persistent XSSمخزنة/مستمرة
Reflected XSS- غير مخزنة
DOM-Based - ان شاء الله في درس آخر
سأتطرق في الأول للثغرة الأكثر خطورة Stored xss و الذي يجعلها خطرة هو تخزن الأكواد في قاعدة بيانات السكربت اي ما يحقنه المهاجم يظل ثابت بالصفحة..
عكس النوع الغير مخزن الذي هو اكثر انتشارا لكن اقل خطورة , فالحقن عن طريقها مؤقت اي يتم تنفيذ الأكواد فقط عند الطلب.
خطورة ال Stored تسمح للمهاجم اختراق اجهزة المتصفحين و من بينهم جهاز المدير , سرقة الكوكيز , تشويه الإندكس او تغييره. لذا لا تستهينوا بها
نأتي الآن للتطبيق العملي
التطبيق سيكون على مشروع Damn Vulnerable Web Application
تنصيب السكربت سهل
localhost/path/setup.php
اضغط علىCreate/Reset Database و سيتم التنصيب تلقائيا دون الحاجة لإنشاء قاعدة او اللعب بالكونفغ.
ثم تتحول لصفحة تسجيل الدخول
Username: admin
Password: password
ثم ندخل للواجهة الرئيسية , عليك اولا تخفيض مستوى حماية السكربتات لأدنى إحتمال
مع العلم ممكن تخطي الحماية بسهولة.. لكن سأتطرق لطرق التخطي في دروس اخرى لعدم التفرغ
عظيم ادخل على الصفحة المصابة ب Stored xss
اولا خلونا نكتشف الخطء البرمجي , قم بتحرير السكربت
مثل ما شايف المبرمج طلب تنفيذ بيانات حقل message بدون فلترة مع ان الفلترة بسيطة.. تكون بوضع دالة صغيرة لحماية المتغيرات..
نرجع للصفحة المصابة..
كما ترى وضعت كود جافا (كود تحذير) و ضغطت على تنفيذ
جميل! تم تنفيذ الكود بنجاح .. و بما ان النوع Stored اي ان كل زائر سوف يرى هذه الرسالة
الآن اضغط على Setup ثم Reset Database لحذف التغيرات التي جرت بالصفحة كي نجرب كود آخر
سوف اجرب كود Redirect اي كود يحول الزائر الى موقع آخر. انا اخترت غوغل.
لكن للأسف! لا يوجد مكان كافي لوضع الكود , فالمبرمج محدد عدد الأحرف
و الحل هو عن طريق اللعب بالبارامترزTamper Data انا استخدمت ال
كما ترى حقنت الكود دون اي مشكلة
والنتيجة!
قم بتفريغ القاعدة مثل ما تعلمنا سابقا
نفس الشيء مع جميع الأكواد الكبيرة
هنا حقنت كود لتغيير الإندكس
نأتي الى الإستغلال الأخطر.! ,,
حقنت كود يقوم بفتح صفحة داخل الصفحة المصابة بعرض 200 و طول 100
لكن ماذا لو وضعنا صفحة ملغمة و بعرض و طول Null حيث لا يلاحظ المستخدمون او حتى المدير التلغيم و بهذا يتم اختراق اجهزتهم..
و الآن آخر استغلال سأشرحه هو سرقة الكوكيز و استلامه عبر البريد الإلكتروني.
لتحميل الملفات المطلوبة
ْxss.php + xss.js - Mediafire
اول ملف xss.php قمت بتحريره ,
فقط غير البريد الإلكتروني و غير موقع google.com الى اي موقع تريد ان يتم تحويل الزائر اليه , لكن الأفضل التحويل لصفحة بنفس الموقع و ذلك كي لا يتم ملاحظة ما يجري
قم بحفظ التغييرات و ارفع الملف الى استضافة
الملف الثاني xss.js
هنا يجب تغيير الرابط الى رابط السكربت المرفوع
قم بحفظ الملف و ارفعه ايضا
و الخطوة الأخيرة
نأتي الآن الى Reflected Xss اي الغير مخزن
الخطء البرمجي واضح جدا في سطر 10 عدم تأمين المخرجات.
الآن نحقن كود تحذير للتجربة
تم التنفيذ بنجاح..
بما ان الثغرة من النوع الغير مخزن فإن الزائر لن يرى اي تغيير حصل في الصفحة.. فقط يتنفذ الكود عند الطلب , لذلك فإن هذه الثغرة اقل خطورة من Stored
طريقة سحب الكوكيز بها:
كما ترى هذا رابط استغلال سرقة الكوكيز , ما عليك فعله هو ارسال الرابط للمدير و انتظاره حتى يدخل الرابط و يتم ارسال الكوكيز على الإيميل.. لكن المدير ليس غبي لهذه الدرجة فالرابط واضح جدا.. الحل هو تشفير الإستغلال
عبر هذا الموقع meyerweb او غيره المهم التشفير
بعد التشفير رابط الإستغلال يكون على الشكل التالي
طبعا هناك عدة طرق للمراوغة و جعل المدير يدخل الرابط ابحث في غوغل و اذا لزم الأمر ابتكر طريقة فالحاجة ام الإختراع.
اتمنى كون وصّلت الفكرة ولو بشكل بسيط.
باي
xss Stored L Reflected Lesson