در این بخش از دوره SEC542 به توضیح مطالب مربوط به آنالیز Session و آسیب پذیری Session Fixation و همچنین Authentication Bypass می پردازیم.
آنالیز session با Burp Sequencer
Burp Suite دارای یک آنالیزگر توکن session به نام Sequencer میباشد. برای آنالیز توکن باید با استفاده از Burp Proxy درخواست مورد نظر جهت آنالیز را به Sequencer فرستاد.
در واقع نحوه کار به این صورت است که پس از مواجهه با صفحه سازنده توکن در اپلیکیشن، در تب Target بر روی آن صفحه کلیک راست کرده و سپس گزینه Send to Sequencer را میزنیم. در تب Sequencer، امکان شناسایی توکن، هم بصورت دستی و هم توسط خود Burp وجود دارد.
همچنین میتوانیم توکنها را از یک فایل بارگذاری کنیم. بدین ترتیب قابلیت تشخیص میزان تصادفی بودن هر نوع توکن برای ما وجود دارد. مثلا اگر اپلیکیشن مورد تست اجازه دانلود فایل به ما داده و نام فایلها تصادفی است، ما نمونههایی از نام فایلها را در یک فایل نوشته و برای آنالیز در Sequencer بارگذاری میکنیم.
یکی دیگر از ویژگیهای خوب Sequencer، تعداد تستهایی است که اجرا میکند. همچنین توضیح بسیار خوبی راجع به هر تست و عملیات انجام شده در آن ارائه شده است.
نقصهای فراتر از ریاضیات Session
session state از حیاتیترین نقاط در اکثر اپلیکیشنهاست. اگر تشخیص دهیم که در روند تولید، استفاده مجدد و یا ذخیره توکن session نقصی وجود دارد، آنگاه ممکن است بتوانیم یک session را بدزدیم یا به اصطلاح hijack کنیم.
در بحث قبلی در خصوص آنالیز session، از ریاضیات برای تشخیص الگوریتمهای ضعیف تولید توکن استفاده کردیم اما روشهای رایجتری برای hijack کردن session یک کاربر وجود دارد.
رایجترین متد، exploit کردن یک باگ XSS و دزدیدن توکن یک کاربر authenticate شده است. گزینه دیگر اجرا کردن حمله session fixation میباشد.
Session Fixation
آسیبپذیری Session Fixation این امکان را به ما میدهد تا به جای تلاش برای پیشبینی کردن session، مقدار session ID که به یک کاربر اختصاص داده میشود را کنترل کنیم.
این آسیبپذیری به دلیل تخصیص session ID به کاربر قبل از احراز هویت وی (عدم تولید مجدد session ID بعد از احراز هویت کاربر) اتفاق میافتد. بنابراین زمانی که کاربر احراز هویت (authenticate) میشود، اپلیکیشن همچنان از توکن session قبلی، برای شناسایی او استفاده میکند.
بدین ترتیب مهاجم یک session ID از اپلیکیشن دریافت کرده و آن را در قالب یک لینک به قربانی ارسال میکند. زمانی که قربانی بر روی لینک کلیک کرده و authenticate میشود، مهاجم میتواند با همان session ID به سایت وصل شده و بجای قربانی عملیات انجام دهد.
کشف و اکسپلویت Session Fixation
کشف آسیب پذیری Session Fixation کار راحتی است. در شروع تست و در مرحله map کردن اپلیکیشن، باید به دنبال توکنهای session باشیم. سپس توکنهای دریافت شده قبل از authentication را با توکنهای استفاده شده بعد از authentication مقایسه میکنیم.
اگر همان توکنها همچنان در حال استفاده باشند، احتمال وجود session fixation افزایش مییابد. برای exploit کردن این آسیبپذیری در دنیای واقعی نیاز است تا فرد قربانی را متقاعد نمائیم تا با session مورد نظر ما با اپلیکیشن ارتباط برقرار نماید. این کار معمولا از طریق تکنیکهای social engineering اتفاق میافتد.
Authentication Bypass
همانطور که قبلا گفتیم، Authentication Bypass زمانی اتفاق میافتد که مهاجم بدون authentication به منابعی دست یابد که بطور معمول برای دسترسی به آنها نیازمند authentication است.
بدین صورت مهاجم به بخشهایی از اپلیکیشن و یا اطلاعاتی دست مییابد که اپلیکیشن سعی در حفاظت از آنها دارد. بسته به اطلاعات فاش شده، این آسیبپذیری میتواند یک مشکل حیاتی در اپلیکیشن باشد. این دسترسی ممکن است در حد کنسول مدیریتی سایت یا اکانت کاربران دیگر نیز باشد.
نکاتی در مورد تست عبور از احراز هویت در وب
زمانی که یک آزمونگر، باگ authentication bypass پیدا میکند، باید تعیین کند تاثیر این آسیبپذیری تا چه حد است. آیا او میتواند به کل سایت دست یابد یا فقط به بخشی از آن رسیده است؟
متدهای Bypass
دو روش برای دور زدن authentication وجود دارد. روش اول دستیابی به بخشهای مختلف اپلیکیشن از طریق مرور site map (نقشه سایت) و دسترسی مستقیم به صفحات (بجای دسترسی از طریق منوها) است که این روش بصورت دستی انجام میشود. روش دیگر اجرا کردن اسکریپتهایی است که نام دایرکتوریها و فایلها را brute force کرده تا مسیرها و فایلهای معتبر را پیدا کند.
یک راه آسان نیز جستجوی دستی در اپلیکیشن است. از نتایج بدست آمده در مرحله جمعآوری اطلاعات استفاده کنید. در مراحل قبل باید توانسته باشید کلیدها و شناسههایی که جهت فراخوانی صفحات استفاده میشوند را یافته باشید. این یافتهها تمرکز اصلی این حمله هستند.
البته که بهترین راه برای بهرهبرداری از باگ authentication bypass نوشتن اسکریپت است. کافیست اسکریپت سادهای بنویسید که کلیدها و شناسههای یافت شده را brute force کند. همچنین میتوانید نام صفحات را brute force کنید تا دسترسی مستقیم به صفحاتی پیدا کنید که بطور معمول نباید به آنها دسترسی داشته باشید.
مطالب این بخش توسط سرکار خانم فهیمه رضایی تهیه شده است.