با این فرض که سایت صرافی مورد نظرxyz.exchange بوده باشد بعد از ثبت نام و انجام انواع تست های اولیه متوجه وجود آسیب پذیر پذیری های متعددی شدیم که برای وبسایتی با این حجم از سرمایه، آسیبپذیری به چنان رخنه هایی شگفتآور است.
شرح:
وقتی یک برنامه بر اساس ورودی های دریافتی از کاربر، دسترسی مستقیم به یه شئ میدهد، گفته میشود که به IDOR آسیب پذیری است.IDOR مخفف Insecure Direct Object References بوده و نتیجهی وجود این آسیب پذیری این است که حملهکننده میتواند با دستکاری کردن مقدار یک پارامتر، اجازهها (authorization) را دور زده و به صورت مستقیم به منابع سیستم مثل رکورد های دیتابیس یا فایلها دست پیدا کند.
این اتفاق وقتی میافتد که برنامه، ورودی های ایجاد شده از سمت کاربر را دریافت و از آن برای بازیابی یک شئ استفاده کند بدون آنکه بررسی های اجازهها به اندازهی کافی صورت گرفته باشد.
Reference: https://www.owasp.org/index.php/Top_10_2010-A4-Insecure_Direct_Object_References
تست و اکسپلویت:
این حمله در اصل از دو آسیب پذیری تشکیل میشه:
IDOR در بخش بازیابی پسور + دورزدن 2fa
IDOR در عملیات بازیابی پسورد:
درصورت درخواست بازیابی پسورد، این لینک برای کاربر ایمیل میشود:
http://xyz.exchange/#/reset_password/cet6YhGBFVD89jnuOiVMwfdr4mcsaeEwk2OimSc0LtVg
با بررسی درخواست ارسالی در ابزار Burp متوجه میشویم که آن صرفا یک درخواست POST بوده که در
/api/reset_password ایجاد میگردید.
این درخواست یک پارامتر ID دارد. در سیستم هر کاربر یک ID میگیرد که حالت افزایشی (incremental ) دارد. در صورت تغییر پارامتر ID چه اتفاقی میافتد؟ این کار با ساخت دو حساب کاربری تست و مشخص شد که بازیابی پسورد کاملا به IDOR آسیبپذیر است.
بخش دوم حمله:
به دست گرفتن کامل حساب کاربری بدون در دست داشتن توکن 2fa درست ممکن نیست. برای تایید توکن 2fa این درخواست ارسال میشده.
یک کد توکن 2fa آماده شده و ازBurp برای نشان دادن جواب استفاده کردیم. جواب به این شکل بود:
پس کافیست پاسخ را از false به true برگردانیم. به این ترتیب به حساب کاربری دسترسی پیدا خواهیم کرد حتی اگر توکن به عنوان مثال ۱۲۳۴۵۶ باشد.
در نهایت، ایمیل ادمین و id متناظر با آن را از طریق IDOR در سیستم تیکت وبسایت پیدا کردیم.