در این چالش با یک وباپلیکیشن فرضی به نام Cyfe روبهرو هستید؛ سرویسی که خود را بهعنوان پلتفرم تجمیع و نمایش دادههای کسبوکار معرفی میکند و در قالب یک داشبورد تحلیلی، آمارهایی مانند بازدیدکنندگان، تبدیلها و درآمد را به کاربران خود ارائه میدهد.
اپلیکیشن از طریق دامنههای cyfe.local، www.cyfe.local و app.cyfe.local در دسترس است که بخش اصلی آن در subdomain اپلیکیشن قرار دارد.
قبل از شروع، لازم است این دامنهها را به آدرس IP ماشین هدف در فایل /etc/hosts سیستم خود نگاشت کنید تا دسترسی به سرویس ممکن شود.
همانند هر وباپلیکیشنی، ابتدا لازم است یک حساب کاربری عادی ایجاد کرده و وارد داشبورد شوید.
در بخش تنظیمات شخصی کاربر، صفحهای با عنوان Email Preferences در دسترس است که از طریق آن میتوان وضعیت دریافت ایمیلهای اطلاعرسانی و خبرنامههای محصول را فعال یا غیرفعال کرد.
ذخیرهی این تنظیمات از طریق یک درخواست سمت سرور انجام میشود و نتیجهی عملیات نیز به کاربر نمایش داده میشود. رفتار این بخش و نحوهی پردازش درخواستهای آن، هستهی اصلی موضوع این چالش را تشکیل میدهد.
از آنجا که در چالشهای این مجموعه هدف، بررسی رفتار امنیتی اپلیکیشن از دیدگاه یک مهاجم است، پیشنهاد میشود دو حساب کاربری مجزا (بهعنوان قربانی و مهاجم) ایجاد کنید و برای جداسازی session آنها از قابلیت مرور خصوصی (Private Browsing) استفاده نمایید.
ابزارهای توسعهدهندهی مرورگر (DevTools)، بهویژه تب Network، برای مشاهدهی جزئیات درخواستها و پاسخها در طول حل چالش نقش مهمی خواهند داشت.
هدف شما در این چالش، بررسی نحوهی محافظت اپلیکیشن در برابر درخواستهای ارسالی از دامنههای خارجی است:
آیا درخواستهای تغییر وضعیت حساب کاربری با مکانیزمهایی مانند توکن محافظتشده همراه هستند یا خیر؟
با تحلیل دقیق رفتار فرمها و درخواستهای اپلیکیشن، ارزیابی کنید که آیا یک صفحهی خارجی میتواند مرورگر کاربرِ لاگینشده را به ارسال درخواست ناخواسته وادار کند یا نه. موفقیت در هر گام معتبر، از طریق هدرهای اختصاصی پاسخ سرور قابل شناسایی خواهد بود.
لینک رایت آپی که این چالش بر اساس آن طراحی شده است:
https://www.pethuraj.com/blog/cyfe-csrf-vulnerability-writeup
این چالش توسط PingQueen طراحی شده است.