حملات XSS یکی از تهدیدهای سایبری به وبسایتها یا اپلیکیشنها است. XSS خلاصه عبارت Cross-Site Scripting است به معنای اسکریپتنویسی متقابل.
در دنیای امروز برنامههای کاربردی تحت وب بسیار محبوب هستند. از آنجا که تقریبا تمامی کاربران به شبکه اینترنت متصل هستند و به وب دسترسی دارند، پیدا کردن مشتری و کاربر برای اپلیکیشنها در وب، بسیار آسانتر است.
طبق آمار منتشر شده در BroadbandSearch در سال 2021 تقریبا 4.93 میلیارد نفر در سراسر جهان به اینترنت متصل هستند که این عدد 63.2% از جمعیت کل را تشکیل میدهد. آمار فوق مهر تایید محکمی بر اهمیت توسعه برنامههای تحت وب در صنعت فناوری اطلاعات و ارتباطات میباشد.
از سوی دیگر این تکنولوژی محبوب، توجه عناصر مخرب فراوانی را نیز به خود جلب میکند. حملات امنیتی برنامههای تحت وب مکرراٌ تکرار میشوند. حملات تحت وب بالغ بر 128 گروه اصلی میباشند، که هر گروه به چندین زیرگروه دستهبندی میگردند.
جالب است بدانید که این عناصر مخرب از دو طریق موجب اخلال در روند سرویسدهی و خدمترسانی میگردند؛ در شیوه اول با آسیب رساندن به وب سایت پذیرنده، موجبات اختلال را فراهم میآورند و در شیوه دوم کاربرانِ برنامههای تحت وب را مورد هدف قرار میدهند.
در این مقاله به جزییات حملات XSS که از طریق تزریق کد (code injection) عمل میکند، میپردازیم و به سوالات زیر پاسخ میدهیم:
- هدف از XSS Attacks چیست؟
- انواع مختلف XSS Attacks کدام است؟
- چگونه میتوان از سایتها و اپلیکیشنها در مقابل XSS Attacks جلوگیری کرد؟
حمله XSS چیست؟
حمله اسکریپتنویسی متقابل (XSS) یک نوع رایج از حمله تزریق کد (code injection) است که برنامههای تحت وب را با تشخیص آسیبپذیری آنها و تزریق کد مخرب، هدف قرار میدهد.
در این حمله، برنامههای تحت وب تحت تأثیر مستقیم قرار نمیگیرند و در عوض، کاربرانی که با چنین سایتها یا برنامههایی ارتباط برقرار میکنند، هدف بالقوه هستند.
حملات XSS زمانی رخ میدهد که یک هکر با استفاده از سبکِ اسکریپت سمت مرورگر، یک کد مخرب را از طریق یک برنامه تحت وب برای قربانی ارسال میکند. مهاجمان از آسیب پذیری برنامههای تحت وب، که باعث ایجاد حمله موفق میشوند، استفاده میکنند.
به این مثال توجه کنید:
تصور کنید فردی پشت کامپیوتر نشسته است. صفحه نمایش یک File manager ، Text editor ، Spreadsheet و Music player را در گوشه سمت راست پایین نشان میدهد.
تا اینجا همه چیز عادی و آشنا است. اما چیزی هست که در این تصویر دیده نمیشود، یک مرورگر اینترنت با دهها Tab که به طور همزمان باز شدهاند!!!
این Tabها پر از عناوین جالب، فیلمهای خنده دار، تبلیغات کالاهای ورزشی، فروشگاههای آنلاین و یک سایت پرداخت با رسید پرداخت شده برای یک بلیط سریع هستند. همه این سایتها یک ویژگی مشترک دارند: بدون جاوا اسکریپت به سختی امکان پذیر خواهند بود.
سپس یک کلیک ساده روی بنر تبلیغاتی صفحه دیگری را فعال میکند. این صفحه حاوی اسکریپتی است که به یک سایت بانکی آنلاین متصل میشود و بی سر و صدا پول را از حساب کاربر به کارت مهاجم منتقل میکند.
خوشبختانه امروزه مرورگرها به لطف SOP (Same-Origin Policy) این امکان را حذف میکنند. SOP تضمین میکند که اسکریپتهای اجرا شده در یک صفحه وب به دادههای اشتباه دسترسی ندارند.
اگر اسکریپتها از دامنه دیگری بارگیری شده باشند، مرورگر نمیتواند آنها را اجرا کند. اما آیا داستان همینجا به پایان میرسد؟!
اگر چنین بود که دیگر این مقاله وجود نداشت. مجرمان سایبری از روشهای مختلفی برای دور زدن SOP و سوء استفاده از آسیبپذیریهای برنامه استفاده میکنند و در صورت موفقیت، باعث میشوند مرورگر کاربر یک اسکریپت دلخواه را در یک صفحه مشخص اجرا کند.
پایهریزی یک حمله برای آلوده کردن یک وبسایت به چه طریق انجام میشود؟
قرار است SOP به اسکریپتها تنها زمانی اجازه دهد، که بارگیری اسکریپت از همان دامنه صفحهای که کاربر در حال مشاهده آن است باشد و در حقیقت مهاجمان دسترسی مستقیم به سرورِ مسئول صفحهی نمایش داده شده توسط مرورگر، ندارند.
مهاجمان چگونه این کار را انجام میدهند؟ آسیبپذیریهای برنامه میتواند با استفاده از درج قطعات و کدهای مخرب در محتوای صفحه به مهاجمان کمک کند.
به عنوان مثال یک موتور جستجوی معمولی هنگام نمایش نتایج جستجو، درخواست کاربر را تکرار میکند. اگر کاربر سعی کند رشته “<script> alert (1) </script>” را پیدا کند، آیا محتویات صفحه نتایج جستجو منجر به اجرای این اسکریپت میشود و آیا کادر محاورهای با پیام “1” ظاهر میشود؟
این بستگی به این دارد که توسعه دهندگان برنامه وب چگونه ورودی کاربر را تأیید کرده و آن را به یک قالب امن تبدیل کنند.
مشکل اصلی در این است که کاربران طیف گستردهای از نسخههای مرورگر را اجرا میکنند، از آخرین پیش آلفا تا نسخههایی که دیگر پشتیبانی نمیشوند. هر مرورگر صفحات وب را به شیوهای متفاوت مدیریت میکند.
در برخی موارد، حملات XSS میتواند زمانی موفقیتآمیز باشد که ورودیها به اندازه کافی فیلتر نشده باشند. بنابراین اولین قدم در حمله اسکریپتنویسی متقابل (XSS) تعیین نحوه جاسازی دادههای کاربر در یک صفحه وب است.
انواع حمله XSS
حملات اسکریپتنویسی متقابل (XSS) بر سه نوع هستند:
1- XSS ذخیره شده
XSS ذخیره شده مخربترین آسیب پذیری است. این حمله زمانی رخ میدهد که بار اطلاعات مخرب ارائه شده توسط مهاجم در سرور ذخیره شود. این محموله دائماً در معرض صفحه وب قرار میگیرد و هنگامی که کاربر عملیات مرور معمولی را انجام میدهد فعال میشود.
2- XSS منعکس شده
این آسیبپذیری متداول اسکریپتنویسی زمانی ایجاد میشود که دادههای ارائه شده توسط کاربران، معمولاً از طریق پارامترهای درخواست HTTP (به عنوان مثال؛ ارسال فرم) در صفحه بدون فیلتر یا ذخیره مناسب، نمایش داده شود.
3- XSS بر اساس DOM (Document Object Model)
حملات XSS بر اساس DOM یک نوع آسیبپذیری اسکریپتنویسی بین سایتها است که هنگامی رخ میدهد که جاوا اسکریپت دادهها را از منبع کنترل شده مهاجم دریافت کرده و برای اصلاح محیط DOM ارسال میکند. این باعث میشود مرورگر قربانی به طور غیر منتظره اجرا شود.
پیشگیری از حملات XSS
برنامههای کاربردی از نظر پیچیدگی اسکریپتنویسی متقابل میتوانند چالش برانگیز باشند. بنابراین، ایمنسازی آنها در برابر حملات اسکریپتنویسی متقابل (XSS) دشوار است. اما با اقدامات پیشگیرانه مناسب، میتوانید برنامه وب خود را از این حملات محافظت کنید.
– باید ورودی دریافت شده از سمت کاربر را فیلتر کنید.
– در خروجی، دادههای خروجی را کدگذاری کنید تا با پیادهسازی ترکیبی از کدگذاری HTML ، URL ، جاوا اسکریپت و CSS ، آنها را از فعالیت بازدارید.
– با استفاده از ابزارهای اسکنر آسیب پذیری وب، میتوانید برنامه وب خود را برای آسیبپذیریهای احتمالی XSS اسکن کنید.
– پیادهسازی header مناسب و مسدود کردن XSS در پاسخهای HTTP که انتظار نمیرود شامل HTML یا JavaScript باشد و مطمئن شوید که مرورگرها پاسخ مورد نظر را اجرا میکنند.
– همچنین میتوانید سیاست امنیت محتوا (CSP: Content Security Policy) را برای مهار تأثیر مخرب هر گونه آسیبپذیری دیگر XSS پیادهسازی کنید.
4 دیدگاه برای “حملات XSS چیست؟ + انواع و روش پیشگیری”
ممد
می گوید:جالب و مفید
خیلی ممنون برای مطلب مفیدتون
zb.sharafi
می گوید:ممنونیم که نظرتون رو با ما به اشتراک میذارید.
Ali
می گوید:Nice
Mjavad
می گوید:سلام
بسیاری عالی
به این میگن زکات علم👍👍👍👍