در حال بارگذاری...
بررسی روشهای دور زدن مکانیزمهای مجوز دسترسی و دسترسی غیرمجاز به منابع محافظتشده در برنامههای وب.
اهداف این درس
دور زدن مجوز دسترسی (Authorization Bypass) زمانی رخ میدهد که مهاجم بتواند بدون داشتن مجوز کافی، به منابع محافظتشده دسترسی پیدا کند. این آسیبپذیری یکی از رایجترین و خطرناکترین مشکلات امنیتی در برنامههای وب است.
مکانیزمی که تعیین میکند کاربر احراز هویت شده به چه منابعی دسترسی دارد و چه عملیاتی میتواند انجام دهد.
حملهای که در آن کاربر به منابع کاربران همسطح خود دسترسی پیدا میکند. مثلاً کاربر A به اطلاعات کاربر B دسترسی پیدا کند.
حملهای که در آن کاربر به منابع سطح بالاتر دسترسی پیدا میکند. مثلاً کاربر عادی به پنل مدیریت دسترسی پیدا کند.
دور زدن مجوز دسترسی میتواند منجر به دسترسی غیرمجاز به اطلاعات حساس کاربران، تغییر یا حذف دادهها، اجرای عملیات مدیریتی، و نقض حریم خصوصی شود. طبق OWASP Top 10، نقض کنترل دسترسی یکی از رایجترین آسیبپذیریها است.
تمام منابع و عملیاتی که نیاز به مجوز دسترسی دارند را شناسایی کنید. این شامل صفحات، APIها، فایلها و عملیات CRUD است.
با حسابهای کاربری با سطوح دسترسی مختلف تست کنید:
پارامترهای URL، فرمها و APIها را تغییر دهید:
1# تغییر ID کاربر در URL2curl "https://target.com/api/user/123" -H "Cookie: session=user456"3# تغییر به ID کاربر دیگر4curl "https://target.com/api/user/456" -H "Cookie: session=user456"56# تغییر نقش کاربر در فرم7curl -X POST "https://target.com/api/profile" -d 'role=admin'89# تغییر HTTP method10curl -X PUT "https://target.com/api/user/123" -d 'role=admin'11curl -X DELETE "https://target.com/api/user/123"1213# دسترسی مستقیم به URL محافظتشده14curl "https://target.com/admin/dashboard"15curl "https://target.com/api/admin/users"APIها معمولاً endpointهای متفاوتی برای عملیات مختلف دارند. تمام endpointها را تست کنید:
| عملیات | روش HTTP | مثال |
|---|---|---|
| خواندن | GET | /api/users/123 |
| ایجاد | POST | /api/users |
| بهروزرسانی | PUT | /api/users/123 |
| حذف | DELETE | /api/users/123 |
| لیست | GET | /api/users |
| جستجو | GET | /api/users?role=admin |
دور زدن مجوز دسترسی میتواند منجر به نقض حریم خصوصی کاربران، سرقت اطلاعات حساس، تغییر یا حذف دادهها، اجرای عملیات غیرمجاز، و آسیب به اعتبار سازمان شود.
1# بررسی مجوز دسترسی در سمت سرور2def get_user_profile(request, user_id):3 # بررسی احراز هویت4 if not request.user.is_authenticated:5 return Response(status=401)6 7 # بررسی مجوز دسترسی8 if request.user.id != user_id and not request.user.is_admin:9 return Response(status=403)10 11 # دریافت اطلاعات12 user = get_object_or_404(User, id=user_id)13 return Response(user.profile)توصیه عملی
همیشه مجوز دسترسی را در سمت سرور بررسی کنید. هرگز به ورودی کلاینت اعتماد نکنید. از ابزارهایی مثل Burp Suite برای تست مجوز دسترسی استفاده کنید.
مکانیزمهای مجوز دسترسی نباید فقط بر اساس ورودی کاربر باشند.
هر درخواست باید در سمت سرور اعتبارسنجی شود.
مخفی کردن URL یا دکمه به معنای امنیت نیست.
تست مجوز دسترسی باید با حسابهای مختلف انجام شود.
کدام نوع حمله زمانی رخ میدهد که کاربر عادی به منابع مدیر دسترسی پیدا کند؟
تفاوت بین Authentication و Authorization چیست؟
Authentication (احراز هویت) فرآیند تأیید هویت کاربر است (مثل ورود با نام کاربری و رمز عبور). Authorization (مجوز دسترسی) فرآیند تعیین این است که کاربر احراز هویت شده به چه منابعی دسترسی دارد. ممکن است کاربر احراز هویت شده باشد اما مجوز دسترسی به منبع خاصی نداشته باشد.
انواع کنترل دسترسی چیست؟
انواع اصلی کنترل دسترسی شامل: DAC (Discretionary Access Control)، MAC (Mandatory Access Control)، RBAC (Role-Based Access Control) و ABAC (Attribute-Based Access Control) است. در برنامههای وب معمولاً از RBAC استفاده میشود.
Horizontal و Vertical Privilege Escalation چیست؟
Horizontal Privilege Escalation یعنی دسترسی به منابع کاربران همسطح (مثل دیدن پروفایل کاربر دیگر). Vertical Privilege Escalation یعنی دسترسی به منابع سطح بالاتر (مثل دسترسی مدیریتی بهعنوان کاربر عادی).