رایتاپ
Broken Access control writeup

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

سیاست کنترل دسترسی(access control)، دسترسی کاربر را در یک چارچوب محدود می‌کند. آسیب‌پذیری در این قسمت معمولا منجر به افشا، تغییر و یا از بین رفتن اطلاعات می‌شود و دلیل این موضوع دسترسی مهاجم به قسمت‌های خارج از سطح کاربر معمولی است. این رایتاپ مثال واقعی از آسیب‌پذیری Broken Access Control است که در ادامه به این موضوع می‌پردازیم.

بعضی از عملکردهای سایت منوط به انجام فرایندهای احرازهویت میباشد و در صورتی که این فرایند انجام نشود امکان تراکنش وجود ندارد. ولی با در اختیار داشتن ریکوئست بخش‌های خارج از سطح امکان دور زدن محدودیت‌ها کاربر معمولی وجود دارد و  با استفاده از این آسیب‌پذیری کاربر احرازهویت نشده امکان انجام تراکنش را دارد.

مراحل بررسی:

      1.       برای این تست به دو کاربر با سطح دسترسی متفاوت نیاز داریم(کابر احراز هویت شده و کاربر احراز هویت نشده).

      2.       کاربر احرازهویت نشده فقط امکان اجرای تراکنش محدود را دارد که برای اکسپلویت آسیب‌پذیری مقداری حساب را شارژ می‌کنیم.

      3.       در مسیر https://example.com/Trx?market=pr امکان تراکنش بیشتر برای کاربر احرازهویت نشده وجود ندارد.

      4.       با استفاده از اکانت کاربر احراز هویت شده، تراکنش مورد نظر را انتخاب می‌کنیم.

      5.       ریکوئست تراکنش بیشتر را به repeater از نرم‌افزار burp suite ارسال میکنیم. سپس نشست کاربر احراز هویت نشده (هدر Authorization) با نشست کاربر احراز هویت شده جابجا شود.

      6.       ریکوئست تغییر پیدا کرده را به سمت سرور ارسال میکنیم و عملیات تراکنش مورد نظر برای کاربر احرازهویت نشده انجام می‌شود.

 POST /api /neworder HTTP/1.1 Host: example.com Content-Length: 103 Sec-Ch-Ua: " Not A;Brand";v="99", "Chromium";v="96", "Google Chrome";v="96" Accept: application/json, text/plain, / Content-Type: application/json Authorization: Bearer Sec-Ch-Ua-Mobile: ?0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Sec-Ch-Ua-Platform: "Windows" Origin: https://example.com.com Sec-Fetch-Site: same-origin Sec-Fetch-Mode: cors Sec-Fetch-Dest: empty Referer: https://example.com/trx?market=pr Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q=0.9,fa;q=0.8 Connection: close {"market":"PR","funds":"2448000","size":"0.0016","side":"TRX","type":"LIMIT","price":"1530000000"}