سعید عزتی
سعید عزتی
خواندن ۳ دقیقه·۱۰ ماه پیش

آسیب پذیری CORS

آسیب پذیری CORS Misconfiguration

آسیب پذیری 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 چیست؟

ئ 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با مقداری که ارسال کردیم ست شده است

حالا به سراغ اکسپلویت کردن آسیب پذیری میرویم با قطعه کد زیر اکسپلویت را انجام میدهیم


حالا با دادن لینکی که کد مخرب ما در اونجا قرار دارد اطلاعات قربانی برای ما ارسال میشود


همانطور که در تصویر مشاهده میکنید اطلاعات قربانی براما ارسال شده است


شماتیک الگوریتم انجام این حمله را می توان در تصویر زیر خلاصه کرد


از اینکه برای این مقاله وقت گذاشتید متشکرم

پایان

شاید از این پست‌ها خوشتان بیاید