باگ IDOR چیست ؟ (اموزش کامل)
در این قسمت از آموزش قصد داریم شما را با باگ IDOR دبرای تست نفوذ وب آشنا کنیم.
باگ IDOR
آسیب پذیری IDOR که یک آسیب پذیری سمت سرور است
ومخفف عبارت Insecure Direct Object References است.
درک مفهومی Authentication
شما زمانی که یک حساب کاربری در یک سرویسی مانند جیمیل و هر سرویسی دیگری دارید برای اتصال به حساب کاربری خود باید ثابت کنید که شما همان شخصی هستید که صاحب اصلی اکانت هستید به همین دلیل از شما می خواهد تا پسوردی که برای حساب خود فعال کرده اید را وارد کنید تا بتوانید وارد حساب کاربری خود شوید که به این مرحله authentication گفته می شود.
در نهایت نسبت به سطح دسترسی و permission هایی که دارید قابلیت هایی در اختیار شما قرار می گیرد که می توانید از ان ها استفاده کنید، برای مثال برای مدیر یک وب سایت باید تمام امکانات موجود مدیریتی فعال باشد اما اگر کاربری محدود تر باشد قابلیت های کمتری برای ان فعال می شود که می تواند از ان ها استفاده کند .
Authorization چیست ؟
همانگونه که پیش تر گفته شد زمانی که شما در حساب کاربری خود از یک سرویسی لاگین می کنید و وارد حساب کاربری خود می شوید امکاناتی برای شما فعال می شود که امکانات موجود نسبت به نوع کاربر شما متغیر است که به دسترسی هایی که به شما داده می شود Authorization گفته می شود .
تحلیل و بررسی باگ IDOR
خلاصه باگ IDOR به این صورت است که شما در مرحله Authorization بتوانید با استفاده از متد های مختلف که در ادامه ان ها را بررسی خواهیم کرد دسترسی خود را از یک یوزر معمولی به یک یوزر سطح بالاتر ارتقا دهید و از امکانات بیشتری که در اختیارتان قرار می گیرد استفاده کنید.
تصور کنید در یک سرویسی با حساب کاربری خود لاگین کرده اید و در حال استفاده از آن سرویس هستید.
در این حالت باید به دنبال پارامتر هایی باشید که از شما ورودی دریافت می کنند (متد GET و POST)
برای مثال پارامتری در متد POST وجود دارد که ورودی شما را همراه با یوزر شما به سمت سرور از طریق یک Request ارسال می کند ،حال اگر شما بتوانید Request که برای سرور ارسال می شود را تغیر دهید و یوزرنیم دیگری را جایگزین مقدار یوزرنیم خود کنید اگر وب سایت هدف شما دارای باگ IDOR باشد نیز خواهید دید که سطح دسترسی شما ارتقا می یابد و می توانید از دیگر امکانات موجود که در اختیارتان قرار می گیرد استفاده کنید.
اما نکته ای که بسیار قابل توجه است این است که شما باید بدانید چه یوزرنیمی از سطح دسترسی بالاتری استفاده می کند تا بتوانید از ان استفاده کنید؛ به این منظور باید حمله ای مانند حمله بروت فورس را انجام دهید تا به نتیجه برسید که در ادامه این حمله را باهم بررسی خواهیم کرد .
در بعضی اوقات ممکن است در ورودی GET چنین اتفاقی رخ دهد
و شما بتوانید با تغییر یک مقدار به آبجکت های مختلف دیگری دسترسی داشته باشید .
نکات مهم
نکته اول : باگ IDOR صرفا برای تغیر دسترسی و بالا بردن دسترسی نیست و اگر شما بتوانید از طریق ورودی ها به آبجکت ها و یا حتی تصاویری که نباید به ان ها در یک سایت دسترسی داشته باشید دسترسی پیدا کنید می توان گفت که آن وب سایت دارای باگ IDOR است .
نکته دوم : توضیحی که در بالا داده شد صرفا یک مثال ساده برای درک بهتر باگ IDOR بود و کمتر سایتی وجود دارد که شما بتوانید مقدار یوزرنیم خود را از طریق متد POST و GET تغییر دهید اما دقت داشته باشید که این مورد هم ممکن است در تارگت های ما برای تست نفوذ و هک وجود داشته باشد.
اقدام به تست نفوذ با استفاده از باگ IDOR
همانگونه که در ابتدا گفته شد شما باید در قدم اول به عنوان یک کاربر بتوانید پارامتری که قابل تغیر است و تغیر دادن ان باعث افشای اطلاعات دیگر کاربران می شود را پیدا کنید و با تغیر ان بتوانید اطلاعات دیگر کاربران دسترسی داشته باشید. حال در قدم اول ما توانستیم پارامتر موجود را پیدا کنیم که از طریق متد GET می توان مقدار ان را تغیر داد.
به تصویر زیر دقت کنید :
حال اگر ابزار Burp Suite را اجرا کنید و یک بار صفحه وب را refresh کنید خواهید دید که اطلاعات هدر های http برای ما در ابزار Burp Suite شنود خواهند شد، سپس بر روی صفحه ابزار Burp Suite کلیک راست کرده و سپس بر روی گزینه Send to intruder کلیک کنید.
در قدم بعدی به تب Intruder بروید و سپس به زیرشاخه Positions وارد شوید.
در ادامه بر روی گزینه clear $ کلیک کنید تا مقدار های پیشفرض حذف شوند.
در این مرحله باید عبارتی را که قصد دارید عملیات بروت فورس را بر روی ان انجام دهید مشخص کنید و ان را select کنید که ما قصد داریم اعداد ۱ تا ۳۰۰ را تست کنیم تا بتوانیم یوزر های دیگر وب سایت را پیدا کنیم و از اطلاعات کاربری ان ها استفاده کنیم به همین منظور عبارت ۱۰۲ را که در پارامتر GET است را select می کنیم و بر روی گزینه Add $ کلیک می کنیم.
استفاده از پیلود
در مرحله بعدی به سربرگ Payloads بروید
و از قسمت Payload Type گزینه Numbers را انتخاب کنید
به این دلیل که عملیات بروت فورس ما به صورت عددی است.
سپس قسمتی برای شما اضافه خواهد شد با عنوان [Payload Options Numbers]
که باید تنظیمات پیلود مورد نظر خود را انجام دهید.
در قسمت Form باید عددی را وارد کنید که قصد دارید عملیات بروت فورس شما از ان عدد شروع شود.
در قسمت To باید عددی را وارد کنید که قصد دارید بروت فورس شما تا ان عدد ادامه یابد.
سپس در نهایت در قسمت Step باید مشخص کنید
پیلود شما پس از هر بار تست کردن چه مقداری به او اضافه شود و به مرحله بعدی برود.
سپس به تب Target بروید و بر روی گزینه Start Attack کلیک کنید تا حمله شما آغاز شود
حال نیز پنجره ای برای شما باز خواهد شد که می توانید نتیجه حمله خود را مشاهده کنید.
در قسمت Payload می توانید تک تک حملات که به صورت بروت فورس انجام شده است را مشاهده کنید.
در قسمت Status نیز می توانید کد وضعیتی که برای شما به نمایش در می اورد را مشاهده کنید
و متوجه شوید که کدام حمله شما با موفقیت و کدام حمله شما نا موفق بوده است .
حال یکی از کد هایی که در حمله بروت فورس مشخض شد که کد یک کاربر دیگر است را کپی می کنیم
و جایگزین کد خود نیز می کنیم و خواهیم دید که به اطلاعات کاربر دیگری نیز دسترسی داریم .
امنیت در برابر باگ IDOR
برای اینکه بتوانید وب سایت خود را در برابر باگ IDOR امن نگه دارید باید مقدار هایی که برای ورودی ها در نظر گرفته می شود به صورت رندوم و غیر قابل حدس باشد تا نفوذگر توانایی حدس زدن انرا نداشته باشد و نیز در نهایت به نتیجه ای نرسد .
نتیجه گیری
در این قسمت از آموزش شما را با باگ بسیار مهم و درجه بالای IDOR آشنا کردیم و در ادامه برای درک بهتر این باگ , حمله ای را بر روی یک سرویس مجازی و لوکال پیاده سازی کردیم تا مفهوم این باگ را به درستی درک کنید.
موفق باشید.
۴ دیدگاه در “باگ IDOR چیست ؟ (اموزش کامل)”
با سلام و خسته نباشید , تشکر از مطالب مفیدتان
عذر میخواهم چه تفاوتی میان پروفایل یا … کابران در این باگ هست که طی حمله بروت فروس به بعضی از انها دسترسی پیدا میکنیم و به بعضی نه تفاوت امنیتی شان چیست؟
ممنون میشوم پاسخ دهید . تشکر
درود بر شما تشکر
در هر وب سایتی که کاربران می توانند در آن عضو شوند مطمئناً یک لول کاربر وجود دارد که دسترسیهای مناسب یک کاربر عادی را دارد و بیش از آن نمی تواند کاری انجام دهد برای مثال میتواند نام خود را تغییر دهد ایمیل خود را تغییر دهد پسورد بگذارد یا موارد دیگر اما در همان وب سایت ادمین ان که وارد میشود دسترسی های بسیار بیشتری دارد برای مثال میتواند کاربران را مدیریت کند فایل اضافه کند و بر دارد یا خیلی موارد دیگر ما در باگ IDOR کاری که می کنیم باید سطح دسترسی خود را از یک کاربر عادی به حد بالاتری برسانیم برای مثال تا دسترسی ادمین اما اگر هم تا دسترسی ادمین پیش نرفت دسترسی محدود تری هم داشته باشیم که از کاربر معمولی بیشتر باشد یک باگ IDOR داریم، حمله بروت فورس بر روی اکانت انجام می شود باید ببینید که کاربر هایی که بروت فورس شدهاند و به درستی ایمیل و پسورد آن ها پیدا شده چه سطح کاربری دارند که اگر از حساب کاربری ادمین باشد شما به دسترسی ادمین رسیده اید اما در این شرایط شما باگ IDOR ندارید و فقط از طریق یک حمله ازمون خطا (بروت فورس) توانسته اید دسترسی بگیرید باگ IDOR به این صورت است که شما بتوانید دسترسی خود را بالا ببرید.
سلام، وقتتون بخیر؛
ممنون از آموزشتون، قبل از خوندنش با این باگ آشنا نبودم.
یه موردی برام سوال ایجاد کرد، شما در بخش ” امنیت در برابر باگ IDOR ” نوشتید:
” برای اینکه بتوانید وب سایت خود را در برابر باگ IDOR امن نگه دارید باید مقدار هایی که برای ورودی ها در نظر گرفته می شود به صورت رندوم و غیر قابل حدس باشد تا نفوذگر توانایی حدس زدن انرا نداشته باشد و نیز در نهایت به نتیجه ای نرسد. ”
مطمئنید که تنها راه همینه؟
یعنی ما نمیتونیم طوری کدنویسی داشته باشیم که request کاربر بر حسب cookie ذخیره شده در مرورگرش ارزیابی بشه و در صورتی که دسترسی مربوطه رو نداشت بهش response نداشته باشیم؟
درود بر شما تشکر
راه های بسیار مختلفی می توان پیاده کرد که بسته به خلاقیت برنامه نویس انجام می شوند.
روش گفته شده فقط یکی از روش های کاربردی است که می تواند از این باگ جلوگیری کند.