آسیب پذیری CORSکه مخفف عبارت Cross-origin resource sharingیک آسیب پذیری خطرناک محسوب میشود. به این دلیل که نفوذگر میتواند اطلاعات حساس مانند SESSION یا APIKEY... را بدست بیاورد اما این آسیب پذیری ارتباط مستقیمی با SOPدارد اما دلیل استفاده از CORS چیست ؟Cross Origin Resource Sharing (CORS) برای غلبه بر محدودیتهای Same Origin Policy (SOP) در امکان تبادل اطلاعات از منابع (Origin) مختلف، معرفی شد. به تعامل بین مبدا (Origin)های مختلف Cross Domain و بین مبدا (Origin)های یکسان Same Origin گفته می شود.
در واقع CORS یک ویژگی که این امکان را فراهم می کند تا بین منابع متفاوت تبادل اطلاعات انجام شود
برای درک بهتر این آسیب پذیری ابتدا SOP را تعریف و محدودیت های آن را تشریح میکنیم
زSOP یک ویژگی امنیتی در مرورگر هاست که اجازه میدهد ORIGIN یکسان باهم ارتباط داشته باشند
به تصویر زیر دقت کنید SOP جلوگیری کرد از اینکه به مبدا (Origin) متفاوت درخواستی زده شود به همراه کوکی و نشست احراز هویت شده
با سه روش میتوان این محدودیت هارو دور زد که عبارتند از :
1-POST MESSAGE
2-JSONP
3-CORS
ئ CORS جهت مدیریت ارتباط بین originهای متفاوت ایجاد شده است. اغلب وبسایتها، سابدامینها وThird Party سایتها از طریق همین ویژگی با یکدیگر تبادل اطلاعات انجام می دهند.
آسیب پذیری CORS چه زمانی رخ میدهد؟
اگر تنظیمات CORS به درستی انجام نشده باشد، ممکن است که سرور در موارد غیر مجاز، پاسخ درخواست یک origin غیر معتبر را داده و اطلاعات مهم کاربر نشت پیدا کند.
به تصویر زیر توجه کنید. دو درخواست یکسان از یک مبدأ به وبسایت mainsite.com ارسال شده است.
نحوه تشخیص آسیب پذیری CORS Misconfiguration
برای تشخیص این آسیب پذیری، می توان Headerها را بررسی نمود. برخی از هدرهای مهم در این رابطه عبارتند از:
و Access-Control-Allow-Origin -> تعیین میکند آیا origin مدنظر اجازه دارد به وبسایت مقصد درخواستی را ارسال کند یا خیر؟
و Access-Control-Allow-Credentials -> تعیین میکند آیا همراه درخواستی که ارسال میشود، کوکیهم ارسال میشود یا خیر؟ باید دقت داشت که مقدار این هدر حتما باید true باشد.
یکی از روشهای مرسوم جهت کشف آسیب پذیری CORS Misconfiguration، تعویض Origin وب سایت باOrigin مهاجم است. اگر در داخل پاسخ سرور هدرهای Access-Control-Allow-Origin و Access-Control-Allow-Credentials وجود داشته باشد و یا Origin مهاجم رفلکت شود، آسیب پذیری CORS Misconfiguration واقع شده است.
نکته باید توجه داشت که صرف وجود CORS Misconfiguration ممکن است آسیب پذیری مهمی قلمداد نشود؛ زیرا اطلاعات مهمی از کاربران برای نشت وجود نداشته باشدباید ب دنبال یک ENDPOINT گشت که اطلاعات مهم را نمایش داد
برای درک بهتر آسیب پذیری CORS Misconfiguration از آزمایشگاه آکادمی Portswigger کمک گرفته شده است.
در تصویر بالا یک EndPoint داریم که اطلاعات حساسی را به ما نمایش میدهد
در خط دوم Access-Control-Allow-Credentialsمقدارش TRUE میباشد به این معنیه که کوکی با درخواست ارسال میشود
خب حالا یک Origin دلخواه ست میکنیم و درخواست را ارسال میکنیم
شرط دوم هم وجود دارد Access-Control-Allow-Originبا مقداری که ارسال کردیم ست شده است
حالا به سراغ اکسپلویت کردن آسیب پذیری میرویم با قطعه کد زیر اکسپلویت را انجام میدهیم
حالا با دادن لینکی که کد مخرب ما در اونجا قرار دارد اطلاعات قربانی برای ما ارسال میشود
همانطور که در تصویر مشاهده میکنید اطلاعات قربانی براما ارسال شده است
شماتیک الگوریتم انجام این حمله را می توان در تصویر زیر خلاصه کرد
از اینکه برای این مقاله وقت گذاشتید متشکرم