بررسی Browser Cache Weaknesses
در این بخش از دوره آموزشی OWASP-WSTG به چهارمین بخش از استاندارد WSTG با شناسه WSTG-ATHN-06 می پردازیم که مربوط به بررسی Browser Cache Weaknesses می باشد.
خلاصه
در این مرحله، تست نفوذگر بررسی میکند که آیا برنامه به درستی مرورگر را راهنمایی میکند تا دادههای حساس را حفظ نکند.
مرورگرها میتوانند اطلاعات را برای اهداف caching و history ذخیره کنند.
Caching برای بهبود عملکرد مورد استفاده قرار میگیرد، به طوری که اطلاعات نمایشدادهشده قبلی نیازی به دانلود مجدد نداشته باشند. مکانیزمهای History برای راحتی کاربر مورد استفاده قرار میگیرند، بنابراین کاربر میتواند دقیقا آنچه را که در زمان بازیابی منبع دیدهاست، ببیند.
اگر اطلاعات حساس (مانند آدرس آنها، جزئیات کارت اعتباری، شماره امنیت اجتماعی یا نام کاربری) به کاربر نمایش داده شود، آنگاه این اطلاعات میتوانند برای اهداف Caching یا History ذخیره شوند و بنابراین از طریق بررسی Cache مرورگر یا با فشار دادن دکمه Back مرورگر بازیابی شوند.
اهداف تست
• بررسی نمایید که آیا برنامه اطلاعات حساس را در سمت کلاینت ذخیره میکند یا خیر.
• بررسی کنید که آیا دسترسی بدون مجوز به اطلاعات، امکان پذیر است یا خیر
چگونه تست را انجام دهیم
History مرورگر
از لحاظ فنی، دکمه Back یک History بوده و یک Cache نیست. (به این لینک مراجعه نمایید: Caching in HTTP History Lists) cache و history دو ماهیت مختلف هستند. با این حال، آنها همان ضعف ارائه اطلاعات حساس که قبلا نمایش داده شدهاند را دارند.
اولین و سادهترین آزمایش شامل ورود اطلاعات حساس به برنامه و خروج از برنامه(Logout) است. سپس تست نفوذگر بر روی دکمه Back مرورگر کلیک میکند تا بررسی کند که آیا اطلاعات حساس که قبلا نمایش داده شدهاند را میتوان در حالی که اعتبار سنجی نشده اند، مورد دسترسی قرار داد یا خیر.
اگر با فشار دادن دکمه Back، تست نفوذگر بتواند به صفحات قبلی دسترسی داشته باشد اما به صفحات جدید دسترسی نداشته باشد، در این صورت این یک موضوع احراز هویت نیست، بلکه یک موضوع مربوط به History مرورگر است. اگر این صفحات حاوی دادههای حساس باشند، به این معنی است که برنامه، مرورگر را از ذخیره آن منع نمیکند.
تایید هویت لزوما نیازی به درگیر شدن در این تست را ندارد. به عنوان مثال، زمانی که یک کاربر برای ثبتنام در یک خبرنامه وارد آدرس ایمیل خود میشود، این اطلاعات اگر به درستی مدیریت نشوند، قابل بازیابی هستند.
این مشکل که با فشردن دکمه Back دادههای حساس نمایش داده شود را می توان توسط موارد زیر متوقف نمود:
• ارائه یا Deliver نمودن صفحه از طریق HTTPS
• تنظیم مقدار Cache – Control : must – revalidate
Cache مرورگر
در اینجا تست نفوذگرها بررسی میکنند که برنامه هیچ داده حساس را به حافظه نهان مرورگر نشت نمیدهد. به منظور انجام این کار، آنها میتوانند از یک پروکسی (مانندOWASP ZAP یا ابزارBurp Suite) استفاده کنند و از طریق پاسخهای سرور متعلق به جلسه، جستجو کنند و بررسی کنند که برای هر صفحهای که حاوی اطلاعات حساس است، سرور به مرورگر دستور دادهاست که هیچ دادهای را Cache نکند. این کار را میتوان در header پاسخ HTTP با دستورالعملهای زیر انجام داد:
• Cache-Control: no-cache no-store
• Expires: 0
• Pragma: no-cache
این دستورالعمل ها به طور کلی قوی هستند، اگرچه ممکن است Flagهای دیگری برای هدر Cache-Control لازم باشد تا از فایلهای پیوسته پیوند داده شده در سیستم فایل به گونه بهتری جلوگیری کند. این شامل:
Cache – Control : must-revalidate , max-age = 0 , s-maxage = 0
برای مثال، اگر تست نفوذگر در حال تست یک برنامه تجارت الکترونیک باشد، باید به دنبال تمام صفحاتی باشد که شامل یک شماره کارت اعتباری یا برخی اطلاعات مالی دیگر هستند و بررسی کند که تمام آن صفحات دستورالعمل no-cache را اجرا میکنند. اگر وی صفحاتی را پیدا کند که حاوی اطلاعات حیاتی هستند اما نمیتوانند مرورگر را راهنمایی کنند که محتوای خود را Cache نکند، آنها میدانند که اطلاعات حساس بر روی دیسک ذخیره خواهند شد و میتوان این را به سادگی با جستجوی صفحه در Cache مرورگر دوباره بررسی نمود.
مکان دقیق ذخیره اطلاعات به سیستمعامل کلاینت و مرورگر مورد استفاده بستگی دارد. در اینجا چند مثال آورده شدهاست.
بازبینی اطلاعات Cache شده
فایرفاکس قابلیت نمایش اطلاعات Cache شده را فراهم میکند که ممکن است به نفع شما به عنوان یک تست نفوذگر باشد. البته این صنعت همچنین برنامههای کاربردی جانبی و متنوعی را تولید کردهاست که شما ممکن است آنها را برای کروم، اینترنت اکسپلورر یا Edge ترجیح دهید یا نیاز داشته باشید.
جزئیات Cache نیز از طریق ابزارهای توسعه دهنده در اکثر مرورگرهای مدرن مانند فایرفاکس، کروم و Edge در دسترس هستند. با فایرفاکس، استفاده از نشانی اینترنتی about:cache برای بررسی جزئیات Cache نیز امکان پذیر است.
بررسی نحوه رسیدگی به مرورگرهای موبایل
کنترل راهنمایی Cache ممکن است برای مرورگرهای تلفن همراه کاملا متفاوت باشد. بنابراین، تست نفوذگر باید یک جلسه مرور جدید با حافظه پاک (Clean Cache) آغاز کند و از ویژگیهایی مانند Device Mode در کروم یا Responsive Design Mode فایرفاکس برای آزمایش مجدد یا آزمایش جداگانه مفاهیم مشخصشده در بالا استفاده کند.
علاوه بر این، ابزارهای پروکسی مانند ZAP و Burp Suite به تست نفوذگر این امکان را میدهند تا مشخص کند که کدام User-Agent باید توسط spiders/crawlers مربوط به آنها فرستاده شود. این را میتوان برای مطابقت با یک رشته User-Agent مرورگر موبایل تنظیم کرد و برای دیدن این که کدام دستورالعملهای ذخیرهسازی توسط برنامه تحت آزمایش ارسال میشوند، مورد استفاده قرار داد.
آزمایش جعبه خاکستری
روش تست جعبه خاکستری در این بخش با روش تست جعبه سیاه برابر است، چرا که در هر دو سناریو، تست نفوذگر دسترسی کامل به هدرهای پاسخ سرور و کد HTML را دارد. با این حال، با آزمایش جعبه خاکستری، تست نفوذگر ممکن است به یک Credential دسترسی داشته باشد که به وی اجازه خواهد داد تا صفحات حساس که تنها برای کاربران احراز هویت شده در دسترس هستند را نیز مورد بررسی قرار دهد.
ابزارها
• OWASP ZAP
• Burp Suite