Burp Suite برای تست نفوذ: افزونه Autorize
بهمنظور حفاظت از داراییهای آنلاین، تست امنیتی وباپلیکیشن یکی از عناصر حیاتی در راستای ایمنسازی آنها محسوب میشود. Burp Suite طی سالهای متمادی در این حوزه پیشرو بوده و همچنان توسط متخصصان امنیت و هکرهای اخلاقی مورد استفاده قرار میگیرد. یکی از افزونههایی که در جامعه تست امنیت وب برجسته است، Autorize نام دارد که مجموعهای گسترده از قابلیتهای اضافی را برای ارتقاء توانمندیهای Burp Suite ارائه میدهد. این افزونه یک مجموعه قدرتمند از ویژگیها را در اختیار کاربر قرار میدهد که فرآیند تست احراز هویت (Authentication) و کنترل دسترسی (Authorization) را سادهتر میسازد.
مجوزدهی شامل هر روشی است که یک سیستم از طریق آن دسترسی به دادهها یا انجام اقدامات خاص را اعطا یا لغو میکند. در مقابل احراز هویت فرآیندی است که طی آن یک فرد یا سیستم هویت خود را بهعنوان همان کسی که ادعا میکند، تأیید مینماید.
آسیبپذیریهای رایج شناساییشده توسط Autorize
درک عملکرد
نصب و راهاندازی
گزینههای پیکربندی
نمایش عملی از عملکرد Autorize
آسیبپذیریهای رایج شناساییشده توسط Autorize
در ابتدا، Autorize بر شناسایی آسیبپذیریهای مرتبط با مجوزدهی تمرکز دارد. این افزونه به کشف چندین نوع آسیبپذیری مهم کمک میکند، از جمله:
- کنترل دسترسی مبتنی بر نقش ناکافی :
Autorize مشکلاتی را شناسایی میکند که در آن نقشها یا مجوزهای کاربران بهدرستی اعمال نمیشوند و باعث میشود کاربران به عملکردها یا دادههای حساس دسترسی پیدا کنند که نباید داشته باشند. - شکست در کنترل دسترسی:
این افزونه مواردی را شناسایی میکند که کنترلهای دسترسی ناکام میمانند و منجر به دسترسی غیرمجاز به منابع یا اقدامات میشوند. - ارجاعات مستقیم ناامن به اشیاء IDOR :
Autorize سناریوهایی را کشف میکند که در آن مهاجمان با دستکاری ورودیها، به دادههای دیگر کاربران دسترسی پیدا میکنند یا اقدامات محدودشده را انجام میدهند. - مرور اجباری:
این افزونه موقعیتهایی را برجسته میکند که مهاجمان با دسترسی مستقیم به URLهای محدود، محدودیتها را دور میزنند. - مجوزدهی ناکافی:
Autorize ضعف در اعمال مجوزهای کاربران را آشکار میکند که امکان انجام اقدامات غیرمجاز را فراهم میسازد. - افزایش سطح دسترسی افقی و عمودی :
این افزونه نقصهایی را پیدا میکند که به مهاجمان اجازه میدهد خود را به جای کاربران دیگر معرفی کنند یا دسترسیهای بیشتری کسب کنند. - اشکالات منطق کسبوکار:
Autorize دستکاری جریانهای کاری را که منجر به فعالیتهای غیرمجاز یا نشت دادهها میشود، شناسایی میکند.
درک عملکرد Autorize
حال بیایید بررسی کنیم که Autorize چگونه کار میکند. فرض کنید، بهعنوان مثال، یک وباپلیکیشن از کنترل دسترسی مبتنی بر نقش و احراز هویت مبتنی بر کوکی استفاده میکند.
کاربر عادی :
دسترسی به امکانات عمومی دارد، اما نمیتواند به عملکردهای مدیریتی دسترسی پیدا کند یا پایگاه داده را تغییر دهد (فقط دسترسی خواندنی).
کاربر مدیر :
به تمام بخشها دسترسی دارد و میتواند با مجوز کامل خواندن و نوشتن فعالیت کند.
میتوانید کوکیهای کاربر عادی را دریافت کرده و به Autorize اضافه کنید. سپس بهعنوان کاربر مدیر دوباره وارد شوید، به امکانات ویژه مدیر دسترسی پیدا کنید و پایگاه داده را بهروزرسانی کنید.
در این مرحله، Autorize چه کاری انجام میدهد؟ این افزونه هر درخواست را رهگیری میکند، کوکیهای مدیر را با کوکیهای کاربر عادی جایگزین میکند و آن را به سرور ارسال مینماید. اگر پاسخ سرور مشابه پاسخ مورد انتظار برای مدیر باشد (مثلا OK 200 ) و هیچ خطایی نمایش داده نشود، Autorize آن را بهعنوان Red Bypass! برجسته میکند. در مقابل، درخواستهایی که بهصورت امن محافظت شدهاند، بهصورت Green Enforced! نمایش داده میشوند.
علاوه بر این، برای هر درخواستی که کلاینت ارسال میکند، Autorize تستهای خودکار انجام میدهد. در وباپلیکیشنهای بزرگ با بیش از ۳۰ صفحه دینامیک، این قابلیت روند تست را بسیار ساده میکند. از آنجا که تعداد زیادی URL برای تست دستی وجود دارد، Autorize بخش زیادی از بار شناسایی آسیبپذیریها را بر عهده میگیرد.
بهطور مشابه، Autorize مسائل مربوط به API Endpoint را به همین روش شناسایی میکند. شما باید روش احراز هویت هر API را بررسی کنید. بهعنوان مثال، اگر یک API از توکن JWT استفاده میکند، میتوانید هدر Authorization را تغییر دهید تا آسیبپذیریهای دورزدن مجوز در API شناسایی شود.
نصب و راهاندازی
از Bapp Store میتوانید این افزونه را دانلود و نصب کنید. برای این کار، در Extensions گزینه Bapp Store را انتخاب نمایید. میتوانید برای یافتن افزونه، عبارت ‘Autorize’ را جستجو کنید یا صرفاً صفحه را پایین بیایید و آن را پیدا کنید. سپس روی آن کلیک کرده و به سمت راست صفحه اسکرول کنید.
این افزونه با Python توسعه یافته است، بنابراین ابتدا لازم است Jython نصب شود تا افزونه بهدرستی کار کند.
برای دانلود ‘Jython Standalone’ به لینک زیر مراجعه کنید:
https://www.jython.org/download.html
پس از دانلود، به مسیر Settings > Extension بروید و در سمت راست، زیر بخش Python Environment، فایل Jython را مرورکرده و انتخاب کنید. با این کار، محیط Jython بهصورت موفقیتآمیز راهاندازی خواهد شد.
برنامه Burp را مجدداً راهاندازی کنید و مسیر زیر را برای نصب Autorize در BApp Store دنبال کنید. خواهید دید که دکمه Install فعال شده است. کافی است روی آن کلیک کرده و افزونه را نصب کنید.
پس از نصب موفقیتآمیز، تب Authorize در نوار ابزار ظاهر خواهد شد.
گزینههای پیکربندی
در بخش Authorize دو تب وجود دارد:
۱. Request/Response Viewers
۲. Configuration
Request/Response Viewers
تب Request/Response اطلاعات کامل مربوط به هر درخواستی را که در Autorize ضبط و انتخاب میکنید، نمایش میدهد.
- Modified Request: درخواست دستکاریشده در این بخش نمایش داده میشود.
- Original Request: درخواست اصلی یا بدون تغییر در این تب نشان داده میشود.
- Unauthenticated Request: درخواستهای غیرمجاز یا بدون احراز هویت در این بخش قابل مشاهده هستند.
گزینههای پیکربندی
در تب Configuration مشاهده خواهید کرد که Autorize بهصورت پیشفرض غیرفعال است. زمانی که آماده ضبط درخواستها هستید، ابتدا Autorize را فعال کنید.
همچنین گزینههایی برای ضبط درخواستها و کد وضعیت سرور وجود دارد که بسته به ترجیح خود میتوانید آنها را انتخاب کنید.
جایگزینی موقت هدر و توکن
در این بخش، در کادر Temporary Header، باید توکن/کوکیها/مقدار هدر کاربر عادی را قرار دهید که میخواهید در درخواست اصلی جایگزین شود. بهعنوان مثال، اگر یک وباپلیکیشن از توکن JWT برای مکانیزم احراز هویت استفاده میکند، باید آن مقدار را در اینجا وارد کنید.
میتوانید مقدار احراز هویت را بهصورت دستی وارد کنید یا از گزینههای موجود برای دریافت آن از آخرین درخواست استفاده کنید:
- اگر میخواهید هدر کوکیها آخرین درخواست را اضافه کنید، روی Fetch Cookies Header کلیک کنید.
- اگر میخواهید هدر Authorization اضافه شود، روی Fetch Authorization Header کلیک کنید.
بهطور کلی، کوکیهای نشست در بخش Cookies Header و توکن احراز هویت در بخش Authorization Header قرار دارد.
راهاندازی Enforcement Detector
پس از بارگذاری کوکیهای نشست ،باید به Autorize مشخص کنید که کدام درخواستها باید رهگیری شوند و رفتار استاندارد برنامه هنگام مواجهه با درخواستهای غیرمجاز یا درخواستهایی با مجوز ناکافی چگونه باشد.
با Enforcement Detector شروع کنید و ویژگی پاسخ برنامه را وارد کنید که انتظار دارید زمانی که یک کاربر با سطح دسترسی محدود اقدام به انجام عملی کند که مجوز کافی ندارد، نمایش داده شود.
در تجربه من، استفاده از گزینه:
“Body (simple string): enforced message body contains”
سادهترین روش برای راهاندازی است و بهخوبی کار میکند. نوع و محتوایی را انتخاب کنید که با نیازهای خاص شما مطابقت داشته باشد و فراموش نکنید که روی دکمه “Add filter” کلیک کنید.
استفاده از فیلترهای متعدد
علاوه بر این، لازم است بدانید که Autorize بهصورت خودکار مقایسه پیشفرض را روی “And” تنظیم میکند هنگام ارزیابی چندین فیلتر. بنابراین، اگر برنامه پیامهای خطای متفاوتی تولید میکند، مانند یکی برای تلاش برای خواندن یک فایل و دیگری برای دسترسی به امکانات مدیریتی، باید برای هر سناریو یک فیلتر جداگانه ایجاد کنید و گزینه “And” را به “Or” تغییر دهید.
راهاندازی Unauthenticated Detector
برای Unauthenticated Detector نیز همان روند را دنبال کنید.
فیلتر رهگیری
فیلتر رهگیری فقط “Scope items only” را رهگیری میکند، بدون توجه به محتوای درخواست. از میان این درخواستها، درخواستهای Spider و URLهایی که دارای پسوند تصاویر هستند نادیده گرفته میشوند.
میتوانید بر اساس ترجیح خود نوع فیلتر را انتخاب کرده و پس از تعیین نوع، روی “Add filter” کلیک کنید.
قابلیت Match/Replace
علاوه بر این، Autorize دارای قابلیتی به نام Match/Replace است. از این قابلیت زمانی استفاده میشود که نیاز به تغییر یک هدر خاص یا پارامتر در بدنه درخواست داشته باشید.
برای مثال، اگر پارامتر u.name در بدنه درخواست باید با EID کاربر مدیر (مانند a.name) جایگزین شود، میتوانید Autorize را طوری پیکربندی کنید که این تغییر را بهصورت خودکار انجام دهد.
در این بخش، میتوانید از طریق افزودن مقادیر موردنظر، به Autorize اعلام کنید که چگونه جایگزینی انجام شود.
سفارشیسازی فیلترها و مدیریت پاسخ ها
میتوانید نوع درخواستهایی را که مایلید مشاهده کنید، در بخش Table Filter انتخاب نمایید:
- bypassed!: نشان میدهد که Endpoint ممکن است نسبت به آسیبپذیری IDOR حساس باشد.
- Is enforced!: نشان میدهد که Endpoint بهنظر میرسد محافظت شده است، اما لازم است دوباره بررسی شود.
- Enforcing!: در برابر IDOR، این پیام نشان میدهد که Endpoint بهطور واضح محافظت شده است.
در نهایت، میتوانید دادههای فیلترشده را برای تحلیلهای بیشتر با استفاده از تب Save/Restore ذخیره و صادر (Export) کنید.
نمایش عملی Autorize در عمل
بیایید برای درک سادهتر یک نمایش عملی (Demo) انجام دهیم. برای این منظور، از یک لابراتوار آمادهشده PortSwigger استفاده میکنیم با عنوان:
“Method-based access control can be circumvented”.
روی گزینه Access the Lab کلیک کنید و وارد برنامه تحت وب شوید.
این آزمایش یک آسیبپذیری Broken Access Control را نمایش میدهد که شامل دو کاربر با نقشها و سطح دسترسی متفاوت (کاربر با دسترسی پایینتر و کاربر با دسترسی بالاتر) است. همین مفهوم میتواند برای کاربرانی با سطح دسترسی مشابه نیز اعمال شود.
ابتدا باید کوکیهای کاربر با سطح دسترسی پایین را دریافت کنیم. برای این کار از اطلاعات کاربری پیشفرض استفاده میکنیم:
Wiener : peter
سپس وارد برنامه (Login) میشویم تا کوکی نشست کاربر عادی را دریافت کنیم.
تعدادی جزئیات بیشتر اضافه شد.
شما کوکی نشست زیر را در درخواست ورود مشاهده خواهید کرد. اکنون این هدر کوکی را کپی کنید.
این مقدار هدر کوکی را در تب Autorize وارد کنید، همانطور که در تصویر/مثال زیر نشان داده شده است.
و Autorize را فعال نگه دارید.
برای بررسی Auth Bypass، اکنون باید با کاربر با دسترسی بالا وارد شوید. دوباره به صفحه ورود بروید و از اطلاعات کاربری مدیر استفاده کنید:
Administrator : admin
پس از ورود موفقیتآمیز و مرور تمام URLهای ویژه مدیر ، میتوانید زیر تب Autorize برخی از درخواستهای هایلایتشده را مشاهده کنید.
تفسیر نتایج و درک وضعیتهای مجوزدهی
- Authz. Status: نشان میدهد که کدام Endpoints برای Wiener (کاربر عادی) قابل دسترسی هستند.
- Unauth. Status: مربوط به کاربران غیرمجاز است، که بهطور مؤثر کوکیها و تمام هدرهای احراز هویت حذف میشوند. میتوانید با غیرفعال کردن گزینه “Check unauthenticated” در تب Configuration در Autorize، این ویژگی را غیر فعال کنید.
معانی رنگها و وضعیتها:
- Red [Bypassed!]: Endpoint ممکن است در برابر مشکلات کنترل دسترسی / IDOR آسیبپذیر باشد.
- Orange [Is enforced!]: Endpoint بهنظر محافظتشده است، اما با جایگزینی مقدار کوکی باید بهصورت دستی بررسی شود.
- Green [Enforced!]: Endpoint بهطور واضح در برابر مشکلات کنترل دسترسی / IDOR محافظت شده است.
همانطور که در تصویر بالا مشاهده میکنید، درخواستهای ۱، ۲، ۶ و ۷ دارای مشکل Broken Access Control هستند.
به خاطر داشته باشید که نتایج Autorize را بهصورت کورکورانه دنبال نکنید. هایلایت قرمز به این معنا نیست که تمام Endpoints آسیبپذیر یا دور زده شدهاند. ممکن است مثبت کاذب وجود داشته باشد؛ بنابراین باید تأیید متقابل انجام شود.
برخی سناریوهای دیگر: فرض کنید شما مسائل احراز هویت را با دو کاربر همسطح بررسی میکنید. در این حالت، Authz. Status ممکن است Bypassed! و Unauth. Status نشان دهد Enforced!. در این شرایط، درخواست نشاندهنده مجوزدهی نامناسب است، به این معنا که کاربر دوم میتواند به Endpoint خاص دسترسی داشته باشد، اما سیستم بهطور صحیح برای کاربران غیرمجاز، مجوزدهی را اعمال کرده است.
زمانی که هر درخواست هایلایتشده را انتخاب کنید، در سمت راست میتوانید اطلاعات جزئی مربوط به درخواست و پاسخها شامل Modified Request، Original Request و Unauthenticated Request را مشاهده کنید.
نتیجهگیری
برای انجام بازبینیهای جامع امنیتی، افزونه “Autorize Burp” یک ابزار ضروری به شمار میرود. با خودکارسازی فرآیند احراز هویت و امکان تست مناطق محدود شده، این افزونه کارایی و اثربخشی ارزیابیهای امنیتی را بهطور قابل توجهی افزایش میدهد. این ابزار برای انجام تستهای جامع و شناسایی آسیبپذیریهای بالقوه که تنها برای کاربران احراز هویتشده قابل دسترسی هستند، کاملاً ضروری است.