آسیب پذیری IDOR

آسیب پذیری IDORچیست؟آموزش بررسی آسیب پذیریIDORدر وب اپلیکشین

آسیب پذیری IDOR چیست ؟

آسیب پذیری IDOR یا Insecure Direct Object   زیر مجموعه امنیت وب بوده و زمانی رخ می دهد که یک برنامه دسترسی مستقیم به اشیاء را بر اساس ورودی ارائه شده توسط کاربر فراهم می کند. در نتیجه  آسیب پذیری IDOR ، مهاجمان می توانند مجوز را دور بزنند و مستقیماً به منابع موجود در سیستم دسترسی پیدا کنند ، به عنوان مثال پرونده ها یا پرونده های پایگاه داده. IDOR به مهاجمان این امکان را می دهد که با تغییر مقدار پارامتری که برای اشاره مستقیم به یک شی مورد استفاده قرار می گیرد ، مجوز را دور زده و مستقیماً به منابع دسترسی پیدا کنند. چنین منابعی می توانند ورودی های پایگاه داده متعلق به سایر کاربران ، فایل های موجود در سیستم و موارد دیگر باشند. این امر به این دلیل ایجاد می شود که برنامه ورودی ارائه شده توسط کاربر را گرفته و از آن برای بازیابی یک شیء بدون انجام بررسی های مجوز کافی استفاده می کند.

آموزش شناسایی آسیب پذیری(Vulnerability) IDOR :

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

بهترین روش برای آزمایش Direct Object داشتن حداقل دو کاربر (اغلب بیشتر) برای پوشش اشیاء و توابع مختلف است. به عنوان مثال دو کاربر که هرکدام به اشیاء مختلف (مانند اطلاعات خرید ، پیام های خصوصی و غیره) دسترسی دارند و (در صورت لزوم) کاربران با امتیازات مختلف (به عنوان مثال کاربران سرپرست) تا ببینند آیا به عملکرد برنامه اشاره مستقیم وجود دارد یا خیر. با استفاده از چندین کاربر ، آزمایشگر در آزمایش زمان ارزشمندی در حدس زدن نام اشیاء مختلف صرفه جویی می کند ، زیرا می تواند به اشیاء متعلق به کاربر دیگر دسترسی پیدا کند.

در زیر چندین سناریوی معمولی برای این آسیب پذیری و روش هایی برای آزمایش هر یک آورده شده است:

مقدار پارامتر به طور مستقیم برای بازیابی رکورد پایگاه داده استفاده می شود:

Sample Request:
http://foo.bar/somepage?invoice=12345

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

از آنجا که ارزش فاکتور مستقیماً در کوئری قرار می گیرد ، با تغییر مقدار پارامتر ، می توانید هر شیء فاکتور را بدون توجه به کاربری که فاکتور به آن تعلق دارد ، بازیابی کنید. برای آزمایش در این مورد ، آزمایش کننده باید شناسه فاکتور متعلق به یک کاربر آزمایشی دیگر را بدست آورد (اطمینان حاصل کنید که وی نباید این اطلاعات را بر اساس منطق تجاری برنامه مشاهده کند) ، و سپس بررسی کند که آیا دسترسی به اشیاء بدون مجوز امکان پذیر است یا خیر.

مقدار پارامتر به طور مستقیم برای انجام عملیات در سیستم استفاده می شود:

Sample Request:
http://foo.bar/changepassword?user=someuser

در این مورد ، مقدار پارامتر کاربر برای نشان دادن برنامه ای که باید برای کدام کاربر رمز عبور را تغییر دهد استفاده می شود. در بسیاری از موارد این مرحله بخشی یک عملیات چند مرحله ای خواهد بود. در مرحله اول ، برنامه درخواستی مبنی بر تغییر رمز عبور کاربر دریافت می کند و در مرحله بعدی کاربر رمز جدیدی (بدون درخواست رمز فعلی) ارائه می دهد.

پارامتر کاربر برای ارجاع مستقیم به شیء کاربری که عملیات تغییر رمز برای او انجام می شود ، استفاده می شود. برای آزمایش این مورد ، آزمایش کننده باید سعی کند نام کاربری آزمایشی متفاوتی با نام کاربری فعلی ارائه دهد و بررسی کند که آیا امکان تغییر رمز عبور کاربر دیگر وجود دارد یا خیر.

مقدار پارامتر به طور مستقیم برای بازیابی منبع سیستم فایل استفاده می شود

Sample Request:
http://foo.bar/showImage?img=img00011

در این حالت ، از مقدار پارامتر فایل استفاده می شود تا به برنامه بگوید کاربر قصد دارد چه پرونده ای را بازیابی کند. با ارائه نام یا شناسه یک فایل متفاوت (به عنوان مثال فایل = image00012.jpg) مهاجم می تواند اشیاء متعلق به سایر کاربران را بازیابی کند.

برای آزمایش این مورد ، آزمایش کننده باید مرجعی را که کاربر نمی تواند به آن دسترسی داشته باشد بدست آورد و سعی کند با استفاده از آن به عنوان مقدار پارامتر فایل به آن دسترسی پیدا کند.

توجه: آسیب پذیری IDOR اغلب همراه با آسیب پذیری Directory/Path Traversal مورد سوء استفاده قرار می گیرد.

مقدار پارامتر به طور مستقیم برای دسترسی به عملکرد برنامه استفاده می شود

Sample Request:
http://foo.bar/accessPage?menuitem=12

در این مورد ، از مقدار پارامتر menuitem استفاده می شود تا به برنامه گفته شود کاربر در تلاش است به کدام آیتم منو (و بنابراین کدام عملکرد برنامه) دسترسی پیدا کند. فرض کنید کاربر باید محدود باشد و بنابراین پیوندهایی برای دسترسی به آیتم های منو 1 ، 2 و 3 در دسترس است. با تغییر مقدار پارامتر menuitem ، می توانید مجوز را دور زده و به عملکردهای اضافی برنامه دسترسی پیدا کنید. برای آزمایش در این مورد ، آزمایش کننده مکانی را مشخص می کند که در آن عملکرد برنامه با اشاره به یک مورد منو تعیین می شود ، مقادیر آیتم های منو را که کاربر آزمایشی می تواند به آنها دسترسی داشته باشد ، ترسیم می کند و سپس موارد دیگر منو را امتحان می کند.

اشتراک گذاری

دیدگاهتان را بنویسید

لطفا امتیاز دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *