Cross-site request forgery (CSRF) چیست؟
جعل درخواست متقاطع سایت (CSRF) حمله ای است که کاربر نهایی را مجبور می کند تا اقدامات ناخواسته را روی یک برنامه وب که در حال حاضر در آن احراز هویت شده است، انجام دهد. با کمک کمی از مهندسی اجتماعی (مانند ارسال پیوند از طریق ایمیل یا چت)، یک مهاجم ممکن است کاربران یک برنامه وب را فریب دهد تا اقدامات مورد نظر مهاجم را اجرا کند. اگر قربانی یک کاربر عادی باشد، یک حمله موفقیت آمیز CSRF می تواند کاربر را مجبور به انجام درخواست های تغییر وضعیت مانند انتقال وجه، تغییر آدرس ایمیل و غیره کند. اگر قربانی یک حساب کاربری مدیریتی باشد، CSRF می تواند کل برنامه وب را در معرض خطر قرار دهد
CSRF تنها در صورتی کار خواهد کرد که قربانی بالقوه احراز هویت شود. با استفاده از یک حمله CSRF، مهاجم میتواند فرآیند احراز هویت را برای ورود به یک برنامه وب دور بزند. زمانی که قربانی با امتیازات اضافی اقداماتی را انجام می دهد که برای همه قابل دسترسی نیست، این زمانی است که از حملات CSRF استفاده می شود.
چنین حملاتی از این واقعیت سوء استفاده می کنند که یک وب سایت به طور کامل به کاربر اعتماد می کند، زمانی که بتواند تأیید کند که کاربر واقعاً همان چیزی است که می گوید.
تاثیر حمله CSRF چیست؟
در یک حمله موفقیت آمیز CSRF، مهاجم باعث می شود کاربر قربانی اقدامی را ناخواسته انجام دهد. به عنوان مثال، این ممکن است برای تغییر آدرس ایمیل در حساب آنها، تغییر رمز عبور یا انتقال وجه باشد. بسته به ماهیت عمل، مهاجم ممکن است بتواند کنترل کاملی بر حساب کاربر به دست آورد. اگر کاربر در معرض خطر نقش ممتازی در برنامه داشته باشد، مهاجم ممکن است بتواند کنترل کامل تمام داده ها و عملکرد برنامه را در دست بگیرد.
پیشنهاد ما به شما این دوره آموزشی می باشد: دوره آموزشی دوره مهندسی باگ بانتی ( Cross Site Scripting)
نحوه ارائه اکسپلویت CSRF
مکانیسم های تحویل برای حملات جعل درخواست بین سایتی اساساً مانند XSS منعکس شده است. به طور معمول، مهاجم HTML مخرب را در وب سایتی که کنترل می کند قرار می دهد و سپس قربانیان را وادار می کند که از آن وب سایت بازدید کنند. این ممکن است با دادن پیوند به وب سایت، از طریق ایمیل یا پیام رسانه های اجتماعی به کاربر انجام شود. یا اگر حمله به یک وب سایت محبوب (مثلاً در یک نظر کاربر) انجام شود، آنها ممکن است منتظر باشند تا کاربران از وب سایت بازدید کنند.
توجه داشته باشید که برخی از اکسپلویتهای ساده CSRF از روش GET استفاده میکنند و میتوانند به طور کامل با یک URL واحد در وبسایت آسیبپذیر قابل کنترل باشند. در این شرایط، مهاجم ممکن است نیازی به استفاده از یک سایت خارجی نداشته باشد و میتواند مستقیماً یک URL مخرب در دامنه آسیبپذیر به قربانیان ارسال کند
حملات CSRF چگونه اجرا می شوند
دو بخش اصلی برای اجرای یک حمله جعل درخواست کراس سایت وجود دارد. اولین مورد فریب قربانی برای کلیک کردن بر روی پیوند یا بارگذاری یک صفحه است. این معمولاً از طریق مهندسی اجتماعی و پیوندهای مخرب انجام می شود. بخش دوم ارسال یک درخواست درست شده و ظاهری قانونی از مرورگر قربانی به وب سایت است. درخواست با مقادیر انتخاب شده توسط مهاجم ارسال می شود، از جمله کوکی هایی که قربانی با آن وب سایت مرتبط کرده است. به این ترتیب وب سایت می داند که این قربانی می تواند اقدامات خاصی را در وب سایت انجام دهد. هر درخواستی که با این اعتبارنامه ها یا کوکی های HTTP ارسال شود، قانونی تلقی می شود، حتی اگر قربانی درخواست را به دستور مهاجم ارسال کند.
چگونه هکرها یک حمله CSRF ایجاد می کنند؟
راه های مختلفی وجود دارد که هکرها کاربران نهایی را فریب می دهند تا اطلاعات را در یک برنامه وب ارسال یا بارگذاری کنند. یک حمله موفق دو مرحله اساسی را دنبال می کند:
هکر یک اسکریپت می نویسد یا یک URL اکسپلویت طراحی می کند.
مهاجم هدف را فریب می دهد تا عمل مورد نظر را انجام دهد.
بیشتر بخوانید:
چگونه درخواست های بین سایتی می توانند خطرناک باشند؟
هنگامی که یک وب سایت از طرف یک کاربر داده ها را از وب سایت دیگری درخواست می کند، تا زمانی که درخواست تأیید نشده باشد، یعنی کوکی جلسه ارسال نشده باشد، هیچ نگرانی امنیتی وجود ندارد. با این حال، زمانی که کوکی جلسه کاربر همراه با درخواست ارسال میشود، مهاجمان میتوانند یک حمله جعل درخواست بینسایتی را اجرا کنند که از رابطه اعتماد بین مرورگر قربانی و سرور وب سوء استفاده میکند.
تاثیر کوکی ها
وبسایتها از کوکیها برای شناسایی کاربر یا حفظ جلسه ورود کاربر در وبسایت استفاده میکنند. کوکیهای جلسه معمولاً حاوی یک شناسه منحصربهفرد هستند، که شناسهای است که برنامه وب برای شناسایی یک کاربر وارد شده خاص استفاده میکند. بنابراین، هنگامی که یک کوکی برای یک وب سایت خاص تنظیم می شود، مرورگر وب آن را به همراه هر درخواست HTTP که صادر می کند به آن وب سایت ارسال می کند تا جلسه وارد شده را حفظ کند. با این حال، این موضوع فقط مربوط به کوکیهای جلسه نیست. با استفاده از CSRF، مهاجم همچنین میتواند از طرف کاربری که از NTLM یا Basic Auth برای احراز هویت استفاده میکند، درخواست صادر کند، حتی اگر وب سرور او را بر اساس آدرس IP خود بشناسد.
پنهان کردن حمله CSRF از قربانی
برای اینکه قربانی متوجه حمله CSRF نشود، مهاجم میتواند صفحه وب دیگری ایجاد کند، به عنوان مثال info.html، که حاوی اطلاعاتی درباره موضوعی است که قربانی به آن علاقه دارد. با این حال، صفحه وب که توسط مهاجم کنترل میشود میتواند حاوی یک iframe مخفی باشد.
توکن های CSRF چیست؟
توکن CSRF یک مقدار منحصر به فرد، مخفی و غیرقابل پیش بینی است که توسط برنامه سمت سرور تولید می شود و به گونه ای به مشتری منتقل می شود که در یک درخواست HTTP بعدی که توسط مشتری انجام می شود گنجانده شود. هنگامی که درخواست بعدی انجام می شود، برنامه سمت سرور تأیید می کند که درخواست شامل توکن مورد انتظار است و در صورت عدم وجود یا نامعتبر بودن آن، درخواست را رد می کند.
توکنهای CSRF میتوانند با غیرممکن کردن مهاجم برای ایجاد یک درخواست HTTP کاملا معتبر مناسب برای تغذیه کاربر قربانی، از حملات CSRF جلوگیری کنند. از آنجایی که مهاجم نمیتواند مقدار توکن CSRF کاربر را تعیین یا پیشبینی کند، نمیتواند درخواستی با تمام پارامترهای لازم برای اجرای درخواست ایجاد کند.
چگونه باید توکن های CSRF اعتبار سنجی شوند؟
هنگامی که توکن نشانه CSRF تولید می شود، باید در سمت سرور در داده های جلسه کاربر ذخیره شود. وقتی درخواست بعدی دریافت میشود که نیاز به اعتبارسنجی دارد، برنامه سمت سرور باید تأیید کند که درخواست شامل نشانهای است که با مقدار ذخیره شده در جلسه کاربر مطابقت دارد. این اعتبارسنجی باید بدون توجه به روش HTTP یا نوع محتوای درخواست انجام شود. اگر درخواست اصلاً حاوی نشانه ای نباشد، باید مانند زمانی که یک توکن نامعتبر وجود دارد، رد شود.
خلاصه
کوکیها آسیبپذیر هستند زیرا بهطور خودکار با هر درخواست ارسال میشوند و به مهاجمان این امکان را میدهند تا به راحتی درخواستهای مخربی را ایجاد کنند که منجر به CSRF میشود. اگرچه مهاجم نمی تواند بدنه پاسخ یا خود کوکی را بدست آورد، مهاجم می تواند اقداماتی را با حقوق بالاتر قربانی انجام دهد. تأثیر یک آسیبپذیری CSRF نیز به امتیاز قربانی مربوط میشود که کوکی او با درخواست مهاجم ارسال میشود. در حالی که بازیابی داده ها حوزه اصلی حمله CSRF نیست، تغییرات حالت مطمئناً تأثیر نامطلوبی بر برنامه تحت وب مورد سوء استفاده خواهد داشت.
برای بدست آورن اطلاعات بیشتر در این مورد میتوانید در دوره آموزش SANS SEC542 شرکت نمایید
دیدگاهتان را بنویسید