21 تغريدة 35 قراءة Feb 05, 2021
ثغرة الـ XSS من أشهر ثغرات الويب تم اكتشافها في أكتوبر 2005 عن طريق Samy Kamkar في Myspace وكانوا يسمونها Samy Myspace worm لسبب مذكور في التغريدة الي بعد هذي، طبعاً سامي قدر يستغل الثغره وكانت من نوع stored XSS ويخزن فيها Javascript payload في بروفايله.
الـ Javascript payload الي حاطه سامي في بروفايله يصيب كل يوزر مسجل دخول وزار صفحة سامي ويخلي هاليوزر يضيف سامي وينكتب ببروفايله؛
“but most of all, samy is my hero"
ويحقن بروفايل اليوزر المصاب بنفس البيلود فيصير اي احد مسجل دخول يزور صفحة هاليوزر المصاب يصاب مثله ايضاً وبكذا ينتشر
مو هذي قصتنا، قصتنا عن مصطفى @strukt93 الي كان يبحث عن تذكره في موقع
United Airlines الى ان وصل الى الـ sub domain
checkin.united.com ، وبعد زيارته لهالرابط حوله لصفحة بنفس السب دومين بس كان فيه متغير بأسم “SID”، ولقى أن قيمة هالمتغير تتكرر بالصفحة 60+ مره بدون لا يفلترونه
على طول جرّب البيلود هذا؛
“><svg onload=confirm(1)>
عشان يحصل على الـ alert box بس ماش ما طلع شي، شاف سورس الصفحة ولقى البليود موجوده 60+ مره بالشكل الصحيح بدون فلتره ولكن الغريب انه ما اشتغل الـ javascript payload ...
وكما ذُكر بالكتاب الاخضر الي مو حق القذافي، أنه بدلاً من الاستسلام، قرر الاستاذ مصطفى انه يفتح كل ملفات الـ javascript بالموقع ويفتش فيهم
الين وصل لملف يحمل في بطنه القمنده ( بالصوره أدناه) من أسمه
XSS prevention via JavaScript
بغض النظر عن معرفتك بالـ javascript من تشوف مكتوب الـ function XSSObject.proxy أنه له ٤ arguments الي يهمنا منهم الثاني والرابع
وبأخر ٦ سطور تشوف أن فيه alert و false كك arguments للفنقشن قد يتراود لذهنك وهذا الصحيح أن الموقع قاعد يحمي نفسه بتعطيل بعض الـ JavaScript attributes
فف الي قاعد يصير الحين هو أن أخونا فالله كل ما يحط بيلود والموقع يشوف هل فيه attributes من الي موجوده بملف الـ javascript الي فوق ؟ اذا ايه فف الموقع يعطل تشغيل هالـ attribute فف ما يظهر له الـalert box
بعد البحث والتحري قدر مصطفى أنه يرجع document.write() الى حالتها الاصليه بهذا البيلود الي بالصوره الي انا مصورها، صراحة ماني متأكد من فهمي ولكن الي فهمته أن الـJavascript هي object oriented وكل object له prototype اذا سوينا له call يجي بصيغته الاصليه
والعلم الأكيد عند @strukt93
هو قدر يطبع كلمة 'STRUKT' بالصفحه كما هو موضح بالبيلود والصوره .. ولكن للحين ما وصل للي يبيه
والى هذي النقطه قرر مصطفى يستعين بب @brutelogic Rodolfo Assis ويقول الاستاذ مصطفى أن خوينا رودولفو أرشده لهذا المقال
trustwave.com
وبعد الفحص والتمحيص أكتشفوا أن ملف الـ js تبع حماية الموقع ناسين لا يفلترون فنقشن مهمه الي هي writeln والي هي أخت write بس الفرق أن أم ln تضيف سطر بعد طباعة/كتابة الكلام، فف خوينا ابو أزيز قال كأني حصلتها يابو حسن وسواله بيلود ذكي قدر يتجاوز نص الحماية نقدر نقول ...
البيلود الموجود أدناه بدا بب
“;} عشان يسكر/ينهي الـ javascript code الي قاعد ينحقن فيه البيلود
وبعدها كتب } عشان يبدا البيلود وسوى call لل document.writeln عشان يكتب على الـ DOM
واستدعى decodeURI([encoded url]) عشان يسوي decode للكلام الي داخل القوسين الي بيكون encoded as url
للتوضيح فقط الdecode يخلي مثلاً %22 تصير " طبعا بتقول (بموووت شدخل) انا احط الرابط مو encoded ليه تبي تسويله decode العلم عند الله ولكن المتصفح أظن انه يرسل الـ request وهو مسوي encode للرابط + حتى لو مو encoded .. ما يضر البيلود لانه هو بس يسوي decode لل جزء الـ encoded as url
وداخل الـ decodeURI حطينا location.hash وهي تعني الكلام الي بعد الـ # بالرابط
وبعدها سكر البيلود بب "- عشان نحافظ على الـ JS syntax
وبعدها حطوا الهاش #
وبعدها بيلود xss بما معناه هو ان نستدعي صوره بب رابط مو موجود ونقول للموقع اذا الرابط مو موجود او فيه خطأ طلع لنا alert box
ولكن للأسف ما ضبط ولا طلع alert box
وكان الموقع يقول؛
ما كل ما يتمناه المرء يدركهُ
تجري الرياح بما لا تشتهي السفن
وكأن ابو أزيز وابو حسن يقولون؛
تجري الرياح كما تجري سفينتنا
نحن الرياح ونحن البحر والسفن
إن الذي يرتجي شيئاً بهمّته
يلقاه لو حاربته الانس والجن
مصطفى و رودولفو قالوا نحتاج صفحة ما فيها فلاتر للـ Javascript attributes بس تكون بنفس الوقت لها access لمعلومات الموقع مثل معلومات الـ cookies والامور الثانيه فف طلعوا بب بيلود عبقري أثار أعجابي انا شخصياً
هذا هو بالصوره ادناه
iFrame tag فيه ميزه الي هي انه يقدر يسحب لك HTML خارجي بس عطه الرابط فف الي سووه انه بدال ما يعطونه رابط خلوا الرابط javascript وبكذا قدروا يطلعون alert box يطبع بداخله رابط الصفحة
وبكذا انتهى الكاتب من قصة المكافح الاستاذ مصطفى ولكن ما ختم كلامه بل ذكر ثلاث قيم المفروض علينا تعلمها من القصه الجميله
1- لازم نتعلم الاصرار من مصطفى وكيف انه ما استسلم على طول بعد ما شاف ان الكود ما يشتغل بل صمل فيهم لين حقق مراده - ما شاء الله والله لا يضره -.
2- لازم نعرف أن ما دام فيه blacklist أن فيه احتمال كبير أن الثغره موجوده ويمدينا نتخطى الـ blacklist
3- أهمية المعرفة البرمجية وهو شبه جواب لمن يتسأل، هل البرمجه مهمه في امن المعلومات؟ هي تساعدك كثير في استغلال الثغرات حتى لو كان الاستغلال صعب وتساعدك في تخطي الحمايات نفس قصتنا هذي ولكن ماهي شي الزامي بنفس الوقت
أن زان حظك باعلك واشترالك
وأن خاب حظك لا اشترالك ولا باع
المصادر ؛
- الكتاب الاخضر Real-world Bug Hunting
- strukt93.blogspot.com
هذا كان وقتي معاكم
كان معاكم أحمد الهكرجي
لا تنسونا من اللايك والاشتراك والشير واذا كنت مشترك فعل جرس التنبيهات ...

جاري تحميل الاقتراحات...