در حال بارگذاری...
بررسی آسیبپذیری پازل نشست (Session Puzzling) که در آن مهاجم از نشست کاربر دیگر برای دسترسی غیرمجاز استفاده میکند.
اهداف این درس
پازل نشست (Session Puzzling) حملهای است که در آن مهاجم متغیرهای نشست را دستکاری میکند تا به منابع یا عملیاتی دسترسی پیدا کند که مجاز نیست. این حمله معمولاً از طریق تغییر مقادیر ذخیرهشده در نشست انجام میشود.
حملهای که در آن مهاجم متغیرهای نشست را دستکاری میکند تا رفتار برنامه را تغییر دهد و به منابع غیرمجاز دسترسی پیدا کند.
متغیرهای ذخیرهشده در نشست را شناسایی کنید:
1# بررسی Cookieها2curl -v https://target.com 2>&1 | grep -i 'set-cookie'34# بررسی session storage در مرورگر5# Developer Tools -> Application -> Session Storage67# بررسی API responses8curl -v https://target.com/api/user 2>&1 | grep -i 'session\|role\|permission'متغیرهای نشست را دستکاری کنید و تأثیر آنها را بررسی کنید:
1# تغییر نقش کاربر در نشست2curl -X POST https://target.com/api/set-role \3 -H "Cookie: session=abc123" \4 -d 'role=admin'56# بررسی تأثیر7curl https://target.com/admin/dashboard \8 -H "Cookie: session=abc123"910# تغییر سایر متغیرها11curl -X POST https://target.com/api/set-permission \12 -H "Cookie: session=abc123" \13 -d 'permission=full'Session Puzzling میتواند منجر به ارتقای امتیاز، دسترسی غیرمجاز به منابع، و تصاحب حساب کاربری شود.
هشدار
هرگز به متغیرهای نشست بدون اعتبارسنجی اعتماد نکنید. همیشه نقش و مجوز کاربر را از پایگاه داده بخوانید.
متغیرهای نشست باید در سمت سرور اعتبارسنجی شوند.
از ذخیره اطلاعات حساس در نشست خودداری کنید.
نشست باید بعد از تغییر وضعیت کاربر معتبر زدایی شود.
تست دستکاری متغیرهای نشست ضروری است.
Session Puzzling چه تفاوتی با Session Fixation دارد؟
Session Puzzling چیست؟
Session Puzzling حملهای است که در آن مهاجم متغیرهای نشست را دستکاری میکند تا به منابع یا عملیاتی دسترسی پیدا کند که مجاز نیست. این حمله معمولاً از طریق تغییر مقادیر ذخیرهشده در نشست انجام میشود.
چگونه از Session Puzzling جلوگیری کنیم؟
راههای جلوگیری شامل: اعتبارسنجی متغیرهای نشست در هر درخواست، عدم ذخیره اطلاعات حساس در نشست، معتبر زدایی نشست بعد از تغییر وضعیت کاربر، و استفاده از اصل حداقل دسترسی.