مقال : ثغرة CSRF في Flickr لتغير تفاصيل الصور
في عام 2014 وحين كنت أبحث عن برامج الجوائز صادفني أن شركة ياهو (Yahoo) تضع موقع Flicker وتطبيقاته ضمن برامج الجوائز الخاصة بهم حيث يُعتبر Flickr من أشهر مواقع مشاركة الصور في العالم لذا تحدي نفسي لابحث فيه على ثغرات فلا شيء هو محمي 100% ومع خبراتي القليلة ببرامج للجوائز سابقاً
لذا بدات التحري حول الموقع وجدته يستخدم PHP ويملك 87 مليون مستخدم ، انا أحب أن أبحث عن الأمر التي يكون الموقع مصمم من اجلها لانها تكون مهمة ومهمة الموقع مرتكزة عليها في حال Flickr فهي الصور حيث بدأت بالبحث عن XSS ,CSRF,permission bypass .
بعد البحث وجدت ان الحماية المطبقة لموقع Flickr لCSRF هي متغير مميز يدخل في كل طلب عن طريق الصفحة وليس في الHTTP HEADER وكان اسمه “magic_cookie“ حيث في كل طلب يتم ادخاله مع الطلب ويتاكد الموقع من صحته من خلال مطابقة ال“magic_cookie“ الموجود في الطلب والصفحة مع الموجود في السيرفر وبهذا يمنع ادخال الطلبات من صفحات اخرى
هذه هي الميكانيكية المستخدمة في اغلب المواقع حيث يتم توليد رقم عشوائي في الصفحة الذي يوجد بها FORMS ويتم ادخاله في الطلبات للتاكد من ان الطلب الخاص بالفورم ياتي من نفس الصفحة .
وبذلك بدات البحث في الطلبات وحاولت ان اكتشف خلل في (التعديل , الحذف ,الرفع, ..الخ ).
الخطوات
اول ما قمت به هو رفع صورة عن طريق الموقع الاساسي (ليس النسخة الحديثة).
تم رفع الصورة وبعدها يطلب منك وضع عنوان او اي تفاصيل عن طريق صفحة اخرى (تم تغيرها) .
وبعد ان تضع عنوان وتفاصيل سوف يكون الطلب كالاتي :
Host: www.flickr.com User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Cookie: Long one !!! Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 208 edit_done=1&upload_ids=14401638983&just_photo_ids=&set_id= &magic_cookie=32e285e98bbef3aa6afd8c879891c01b&title_14401638983=XSRF+bug+POC1 &description_14401638983=XSRF+bug+POC1&tags_14401638983=XSRF+POC1 &tags_14401638983=XSRF+POC2&Submit=SAVE
لاحظت من الطلب ان “magic_cookie” عبارة عن MD5 مميز .
حاولت ان اغير به الى قيم اخرى او تقصيره او اطالته من اجل التاكد من ان السيرفر يطابقه مع الصفحة وبعد عدة محاولات كان يتم تحويل الصفحة الى صفحة الصورة بدون اي تغير على المحتوى
كنت اقوم بادخال قيم جديدة للمتغيرات كاسم الصورة والتفاصيل واقوم بتغير ال”magic_cookie” في الطلب اذا تم الطلب وتم تغير المحتوى الخاص بالصورة فان الثغرة نجحت اما اذا لم يتم تغير شيء يعني ان الصفحة غير مصابة
كل ما قمت به كان في ظرق ربع ساعة فقد مسحت magic_cookie في اول طلب لي لكن الوضع لم يفلح في تغير المحتوى ولكن انتبهت اني وضعت قيم id ليست لصورة املكها لذلك عدت وسمحت قيمة magic_cookie وتركتها فارغة وارسلت الطلب وتغير محتوى الصورة !!!!!
لذلك قمت بعمل سكربت بسيط ك POC لاقدمه لشركة ياهو ..
ستحتاج الى تغير قيم upload_ids&tags_{id here}&title_{id here}& description_{id here})
بحيث بعد كل شارحة سفلى ضع الايدي الخاص بالصورة والذي يمكن الحصول عليه من الرابط وراسل الصفحة هذه الى الضحية بمجرد ضغط الزر سوف يتم تغير محتوى الصورة الخاصة به بدون ان يتدخل .
بعدها قمت بالابلاغ بسرعة لاني ضننت انها ستكون مكررة كالعادة لكن بعد يومين استلمت رد من شركة ياهو تخبرني انهم سيصلحون الثغرة في اقرب وقت حيث تم إصلاح الثغرة بعد 12 ساعة من الرسالة الخاصة بياهو وبعدها انتظرت اكثر من شهرين لاستلام الجائزة وكانت مخيبة للامل .
اتصلت بفريق ياهو لانشر الكتابة الخاصة بالثغرة قبل الجائزة ووافق الفريق .
ونشرتها في المدونة الخاصة بي (هنا) وتم كتابة مقال عنها في موقع the hacker news
لاي استفسار اترك تعليق او تواصل معي وأتمنى أن يكون المقال قد نال إعجابكم .
هذا المطلوب
شكرا على تقديم الخبرة في زبدة
كلام
لك مني كل الاحترام
استمر 🙂
كم قيمة bug فهي الحالة ؟