مقال: حل التحدي الرابع وأسماء الفائزين
السلام عليكم
بعد تقديم عمر التحدي الثالث للحصول على نتائج للحل لكن لم نحصل الا على ثلاث حلول سوف نقوم الان بحل التحدي بكل طرقه .
اولاً : المعلومات الاولية
رابط التحدي
http://isecur1ty-challenges.com/xss/mid/myvideo.php
النص المصدري للصفحة
المتغير المصاب (xss)
ثانياً: بداية الحل
الان لنرى ما ستقوم الصفحة بعرضه في حال ادخلنا رقم لنعرف اين يتم الحقن في الصفحة
http://isecur1ty-challenges.com/xss/mid/myvideo.php?xss=123
الحقن في اتربيوت name وهو الاسم في وسم video الان لنضع كود js
من الحقن الاتي نلاحظ امرين :
- الفلتر يحول المعطيات الى htmlentities لذلك حقن الاقواس <> و حقن ” غير ممكن لان سيتم تحويلها الى htmlentities وتعطيل عملها .
- لاحظ ان الكود لم يظهر كله وتم قص جزء منه لذلك فالمتغير محدود جداً ولا يمكن حقن العديد من الامور به وغير ممكن حقن كود طويل .
الان بعد ان عرفنا الكثير من المعطيات لنقوم بعمل البايلود اللازم .
الان لناتي هل في الوسم video اي عمليات تنفذ كود javascript الجواب نعم لكنه يعمل فقط في متصفح اوبرا
http://isecur1ty-challenges.com/xss/mid/myvideo.php?xss=”poster=javascript:alert(1)//x
لم يظهر الكود كاملاً بالاضافة الى انه تم تاشيره من قبل المتصفح على انه هجوم جافا سكربت لذلك نلغي فكرة الposter
نرجع الى الevent handler الخاصة بجافا سكرتب مثل onerror, onload .. etc لكن في مقال التحدي الشروط الاساسية :
- تدخل المستخدم غير مسموح لذلك وجب علينا ان نجد event handler من غير تدخل المستخدم او طريقة لتشغيله
- يجب اظهار دومين الموقع ولذلك يجب ان تحتوي رسالة الalert دومين الموقع يمكن ذلك عن طريق domain او document.domain . وكلا الكلمتين طويليتن سنواجه مشكلة هنا .
ايجاد حدث مناسب
الان لنبحث عن event في جافا سكربت من دون تدخل المستخدم هناك العديد منها لكن يمكن جعل الاحداث غير التلقائية تلقائية ببعض الخدع لكن بما ان الكود قصير لايمكن استخدامها .
لنعرض بعض الاحداث التلقائية التي يمكن ان تضع في وسم video :
onload ,onerror ,onshow ,onloadstart,onloadeddata,onprogress,oncanplay
سوف نقوم الان بوضع بعضها لنرى اي منها سيعمل :
onload مفلتر (xss-event)
onerror مفلتر (xss-event)
onshow مفلتر (xss-event)
onloadeddata مفلتر (xss-event)
onprogress مفلتر (xss-event)
oncanplay مفلتر (xss-event)
onloadstart غير مفلتر !!
الان عرفنا ان حدث onloadstart غير مفلتر لنقوم الان بالاستفادة منه
المتغير طويل جداً ولا يمكن تنفيذه بالاضافة الى انه تم ابطاله بواسطة حماية المتصفح .
مفتاح الحل
هناك طرق لوضع كود طويل في كود قصير عن طريق خصائص الصفحة مثل ما فعلت في مقال اختراق حساب medium هنا
في هذا التحدي ستحتاج خاصية من الصفحة و دالة من دوال جافا سكربت وتعد من اخطر الدوال.
خاصية الصفحة هي الاسم او name هي اقصر خاصية ( حسب علمي )
والدالة هي eval .
دالة eval
دالة eval هي دالة خطيرة لانها تنفذ الstring ككود جافا سكربت وهذا امر خطير جداً لانه من الممكن ادخال نص وتنفيذه كجافا سكربت
باعتبار دالة Name تجعل الاسم string سوف نقوم بتنفيذها على شكل كود باستخدام دالة eval
هناك العديد من الطرق التي يمكن ان تقوم بعمل اسم للصفحة المفتوحة سوق نقوم بابسطها هنا للعلم هناك ثلاث طرق .
طريقة 1
استعمال وسوم الرابط anchor
بعد ان عرفنا ادوات التحدي الان لنقوم بتجميع الباي لود
http://isecur1ty-challenges.com/xss/mid/myvideo.php?xss=%27%27onloadstart=eval(name)x
الطول مقبول والفلتر لم يقم بكشفه الان لنضع كود جافا سكربت في خاصية name
x<a href=”http://isecur1ty-challenges.com/xss/mid/myvideo.php?xss=”onloadstart=eval(name)&video=http://123.com” target=’javascript:alert(domain)’>click here</a>x
في خاصية target نضع الكود وحين يفتح الصفحة الجديدة ستكون حاملة اسم javascript:alert(domain)xءء
وحين نذهب للصفحة الاخرى سوف تقوم دالة eval بتنفيذ اسم الصفحة كجافا سكربت وبذلك تم حل التحدي 🙂
طريقة 2
يمكنك عمل ايفريم ووضع الاسم له على الشكل التالي
<iframe name=”javascript:alert(domain)” src=”http://isecur1ty-challenges.com/xss/mid/myvideo.php?xss=%27%27onloadstart=eval(name)”></iframe>
اذا جربته لن يعمل لانه تم وضع مصيدة للiframe يمكن تخطيها سوف نقوم بشرح الامر لاحقاً
اسماء الفائزين
تحياتي وتحيات فريق isecur1ty نلتقي في تحديات جديدة
يا أخي جربت الطريقتين من علي الموبيل ولم يظهر رساله التحذير هل المشكله من استخدام الموبيل مع أنها تشتغل أكواد الجافا اسكربت ومع اني نزلت بيئة تشغيل جافا اسكربت ورسائل التحذير شغاله علي المتصفحات من دون مشاكل وحين تتبع الشرح وجدت أن الثغرة في Attributes context وأضافت الرابط http://isecur1ty-challenges.com/xss/mid/myvideo.php?xss='e'onloadstart=alert(1);
على أن يكون الحدث كمتغير مظاف إلى تاج الفيديو الذي يمكن أن يعمل كما هو متعارف وحتى الآن لم أعرف أين المشكله
حاول فتحه من متصفح على الحاسوب
في الحقيقة تم تخطي هذه الحماية اطلع على الموضوع اكثر في الرابط تم شرح كيفية عمل استغلال مع لتطبيق واتس اب