تو این مقاله میخواهیم بطور خلاصه آسیب پذیری IDOR را توضیح دهیم. IDOR مخفف Insecure Direct Object Reference میباشد. این آسیب پذیری به مهاجم اجازه میدهد تا بدون داشتن اجازه به منابع دسترسی داشته باشد و یا اعمالی بر روی وب اپلیکیشن انجام دهد. این کار با تغییر دادن پارامترهای درخواستی هایی که به سمت سرور ارسال میشود تا بتوان چیزهایی همچون (اسناد، فایل ها و داده ها) را بدست آورد. این کار با نبود تاییدیه که سمت سرور است و یک درخواست بدون تایید این که این چیز متعلق به درخواست شخص باشد که درخواستی را میفرستد.
این آسیب پذیری چگونه صورت میگیرد؟
برای اینکه بتوانید این آسیب پذیری را پیدا کنید باید چشمانتان به ID ها باشد. به عنوان مثال فرض کنید که یک آدرس در سرویس های آنلاین بوجود آوردید و پروفایل شما از طریق آدرس زیر قابل دسترسی است: http://example.com/profile?user_id=100
و اگر توانستید در این آدرس user_id را از 100 به 101 تغییر دهید (http://example.com/profile?user_id=101) و توانستید به آدرس پروفایل دیگری دسترسی داشته باشید در حقیقت توانسته اید یک آسیب پذیری IDOR پیدا کنید.
البته باید توجه داشته باشید که همه ID ها بصورت ساده رمزنگاری نیستند و یا که به سادگی قابل فهم باشند. برخی از آنها بصورت Hash شده قرار گرفته اند. در این مرحله ممکن است از خود بپرسید که "اگر نمیتوانید مقدار ID را متوجه شوید، پس چگونه میتوانید با کنترل آن آسیب پذیری IDOR پیدا کنید؟" خب خبر خوب این است که شما میتوانید مقدار را رمزشکنی و رمزنگاری کنید. :)
بعنوان مثال فرض کنید که url با مقدار http://example.com/profile?user_id=100 آغاز میشود، ولی بجای این url مقدار http://example.com/profile?user_id=MTAw وجود دارد. این یک مثال از رمز نگاری کد base64 است. گرفتن مقدار MTAw و تبدیل این مقدار به مقدار دیگر که بوسیله ابزاری همچون https://www.base64decode.org صورت گرفته، مقدار را بصورت اصلی که همان 100 است نشان میدهد. سپس با استفاده از ابزار https://www.base64decode.org و رمزنگاری مقدار 101 و با دوباره درخواست وب فرستادن امکانش هست ببینید که این آسیب پذیری وجود دارد یا خیر.
آسیب پذیری IDOR در چندین جا امکان دارد دارد یافت شود. ما تا به الان یک مکان برای یافتن آن را پیدا کردیم که آن هم میتواند در address bar باشد. مکان های دیگری که میتوان این آسیب پذیری را پیدا کرد با نگاه کردن به محتوای فرم های HTML در یک وبسایت است.
در عکس بالا، یک درخواست به سمت سرور فرستاده میشود که برای آپدیت کردن پسورد استفاده میشود. با تغییر دادن مقدار "name" و "value" و با دوباره تایید کردن آن و فرستادن آن به سرور به شما امکان این را میدهد تا user و password اکانت دیگر را تغییر داده و آنرا set کنید.
همچنین ممکن است این آسیب پذیری را در cookie ها هم پیدا کنید. معمولا کوکی ها برای این استفاده میشوند که ID های session در آنها نگهداری شود ولی گاهی اوقات توسعه دهندگان اشتباهاً ID کاربر را ذخیره میکنند. تغییر دادن این مقدار میتواند اطلاعات کاربری دیگری را نشان دهد. برای اینکار هم میتوانید از developer tools مرورگر استفاده کنید تا اطلاعات کوکی ها و درخواست های HTTP را تغییر داده و مشاهده کنید.
برای حل تمرین های این بخش هم میتوانید از سایت https://portswigger.net/web-security/access-control/idor استفاده کنید!!! در آخر دوست دارم نظر شما رو در رابطه با این آسیب پذیری بدونم. ??
این مقاله صرفا ترجمه از سایت medium که توسط کاربر @kaorrosi نوشته شده در آدرس زیر قابل مشاهده هم است: https://medium.com/@kaorrosi/what-is-an-idor-vulnerability-7af668b6a0a6