حساب بيتزا: بابا جونز ، الذي لا يهتم بالأمن

الصورة

تم التقاط الصورة لجذب الانتباه هنا.

مطعم بيتزا بابا جونز مفتوح في العديد من البلدان ، ومحرك الموقع مختلف تقريبًا في كل مكان. ومع ذلك ، فإن المحرك ، الذي تم تطويره في مكان ما في روسيا ، يستخدم أيضًا في مواقع لبولندا وقيرغيزستان وبيلاروسيا. سننظر في ذلك.

يمكنك أن ترى المحرك نفسه على موقع للجوال لروسيا ، على سبيل المثال. لماذا المحمول؟ لأن سطح المكتب لا يحتوي حتى على نموذج تسجيل ، على الرغم من أن هذا مفسر بحقيقة أن التسجيل تلقائي عند الطلب. قررت ذات مرة للتحقق من كيف تسير الأمور مع نقاط الضعف هناك.

نظرًا لأن اختيار التطبيقات هو أسهل طريقة ، فقد أخذتها. لدهشتي ، اكتشفت أن التطبيق مجرد غلاف غريب للموقع ، على الرغم من أن الخادم يمكن أن يميز بوضوح أيضًا عن من جاء الطلب أثناء الطلبات. اتضح أنه من الممكن الاختبار بنجاح متساوي لكل من التطبيق وإصدار الهاتف المحمول. والفرق الوحيد هو أن الحقل - حقل mobSite يتم نقله لموقع الجوال ، وتقوم التطبيقات بإبلاغ النظام والإصدار.

لقد حققت النجاح على الفور ، لأنني بدأت باستعادة كلمة المرور. أقترح نظرة على كيفية حدوث ذلك.

تحتاج أولاً إلى الحصول على الرمز نفسه في الرسائل القصيرة. سنطلب الارتباط مع JSON في الجسم:

POST https://www.papajohns.ru/api/auth/recovery/requestCode { "username": "+79", "transport": "sms", "lang": "ru", "version": "1.0.34", "platform": "Android" } 

يستجيب الخادم:

 { "status": true } 

غريب ، هناك القليل من البيانات. معرّف أو جلسة على الأقل ، ولكن انظر أبعد من ذلك.

يأتي الرمز المكون من أربعة أرقام إلى الرسائل القصيرة (أرقام فقط). لن نرسلها ، لأن تغيير كلمة المرور سيحظر النقاط لمدة أسبوعين ، لكن كان لدي خطط لها. لنحاول إرسال عشوائي:

 POST https://www.papajohns.ru/api/auth/recovery/updatePassword { "code": "1234", "password": "123456qwe", "transport": "sms", "version": "1.0.34", "platform": "Android" } 

لقد تأثرت كثيرا. اتضح أنه عند طلب SMS ، يتم كتابة رقم الهاتف + الرمز إلى قاعدة البيانات في SMS ، وعندما تطلب الاسترداد بواسطة الرمز ، يتحقق الخادم من الرمز في قاعدة البيانات ، وإذا تم العثور على الرمز ، فإنه يضبط كلمة المرور المستلمة على قاعدة البيانات.

الوضع يزداد سوءًا لأنه لا يوجد قيود على تعداد التعليمات البرمجية. تجريبيا ، اكتشفت أنه من خلال المحاولة في 10 دقائق ، يتم ضمان البرنامج النصي لتعيين كلمة مرور. وإذا طلبت استرداد جميع الرموز 10000 من 0000 إلى 9999؟

في 12 مايو ، أبلغت مطور الموقع بكل التفاصيل مباشرة (حسنًا ، على الأقل قدم نفسه لهم). في 19 يونيو ، أصبحت مهتمًا بكيفية سير الأمور مع إغلاق الثغرة الأمنية. أرسل النص حوالي ثلاثمائة طلب ووقف. بعد التحقق من حالة المطور ، اكتشفت أن الخادم يحظر الآن بواسطة IP إذا تلقى 5 طلبات غير صحيحة. اليوم ، تحققت مرة أخرى مما إذا كان المنطق قد تغير ، وأنا على استعداد للإبلاغ: لم يتغير. الخادم غير مكترث أيضًا الآن: لقد أرسلت 3000 طلب دون صعوبة كبيرة ، لذلك أعتقد أن جميع الطلبات الـ 10000 ستغادر دون مشاكل.

خطر الكشف عن جميع العناوين المخزنة فقط من خلال وجود رقم هاتف محمول لا يزال كبيرا. يتم حذف البطاقات المصرفية عند إعادة تعيين كلمة المرور. حصلت على 1000 نقطة وبيتزا. البيتزا لذيذة ، لكنني لن أخزن العنوان هناك.

Source: https://habr.com/ru/post/ar418611/


All Articles