setakit.com
setakit.com

حملات XSS چیست؟

حملات XSS یک تهدید برای وبسایت ها و اپلیکیشن ها

یکی از تهدیدهای سایبری به وبسایت‌ها یا اپلیکیشن‌ها، حملات XSS  می‌باشد. XSS  خلاصه عبارت  Cross-Site Scripting می‌باشد که به معنای اسکریپت‌نویسی متقابل است.

در دنیای امروز برنامه‌های کاربردی تحت وب بسیار محبوب هستند. از آنجا که تقریبا تمامی کاربران به شبکه اینترنت متصل هستند و به وب دسترسی دارند، پیدا کردن مشتری و کاربر برای اپلیکیشن‌ها در وب، بسیار آسان‌تر است.

طبق آمار منتشر شده در BroadbandSearch   در سال ۲۰۲۱ تقریبا ۴٫۹۳ میلیارد نفر در سراسر جهان به اینترنت متصل هستند که این عدد  ۶۳٫۲% از جمعیت کل را تشکیل می‌دهد. آمار فوق مهر تایید محکمی بر اهمیت توسعه برنامه‌های تحت وب در صنعت فناوری اطلاعات و ارتباطات می‌باشد.

 از سوی دیگر این تکنولوژی محبوب، توجه عناصر مخرب فراوانی را نیز به خود جلب می‌کند. حملات امنیتی برنامه‌های تحت وب مکرراٌ تکرار می‌شوند. حملات تحت وب بالغ بر ۱۲۸ گروه اصلی می‌باشند، که هر گروه به چندین زیرگروه دسته‌بندی می‌گردند.

جالب است بدانید که این عناصر مخرب از دو طریق موجب اخلال در روند سرویس‌دهی و خدمت‌رسانی می‌گردند؛ در شیوه اول با آسیب رساندن به وب سایت پذیرنده، موجبات اختلال را فراهم می‌آورند و در شیوه دوم کاربرانِ برنامه‌های تحت وب را مورد هدف قرار می‌دهند.

در این مقاله به جزییات حملات XSS  که از طریق تزریق کد (code injection) عمل می‌کند، می‌پردازیم و به سوالات زیر پاسخ می‌دهیم:

  • هدف از XSS Attacks چیست؟
  • انواع مختلف XSS Attacks کدام است؟
  • چگونه می‌توان از سایت‌ها و اپلیکیشن‌ها در مقابل XSS Attacks جلوگیری کرد؟
XSS  خلاصه عبارت  Cross-Site Scripting می‌باشد که به معنای اسکریپت‌نویسی متقابل است.
حملات XSS چیست؟

حمله  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>” را پیدا کند، آیا محتویات صفحه نتایج جستجو منجر به اجرای این اسکریپت می‌شود و آیا کادر محاوره‌ای با پیام “۱” ظاهر می‌شود؟

این بستگی به این دارد که توسعه دهندگان برنامه وب چگونه ورودی کاربر را تأیید کرده و آن‌ را به یک قالب امن تبدیل کنند.

مشکل اصلی در این است که کاربران طیف گسترده‌ای از نسخه‌های مرورگر را اجرا می‌کنند، از آخرین پیش آلفا تا نسخه‌هایی که دیگر پشتیبانی نمی‌شوند. هر مرورگر صفحات وب را به شیوه ای متفاوت مدیریت می‌کند.

در برخی موارد، حملات XSS  می‌تواند زمانی موفقیت آمیز باشد که ورودی‌ها به اندازه کافی فیلتر نشده باشند. بنابراین اولین قدم در حمله اسکریپت‌نویسی متقابل (XSS) تعیین نحوه جاسازی داده‌های کاربر در یک صفحه وب است.

 

پایه ریزی یک حمله XSS برای آلوده کردن یک وب‌سایت
پایه ریزی یک حمله XSS برای آلوده کردن یک وب‌سایت

انواع حمله  XSS

حملات اسکریپت‌نویسی متقابل (XSS) بر سه نوع هستند:

۱-XSS  ذخیره شده

XSS ذخیره شده مخرب‌ترین آسیب پذیری است. این حمله زمانی رخ می‌دهد که بار اطلاعات مخرب ارائه شده توسط مهاجم در سرور ذخیره شود. این محموله دائماً در معرض صفحه وب قرار می‌گیرد و هنگامی که کاربر عملیات مرور معمولی را انجام می‌دهد فعال می‌شود.

۲- XSS  منعکس شده

این آسیب پذیری متداول اسکریپت نویسی زمانی ایجاد می‌شود که داده‌های ارائه شده توسط کاربران‌، معمولاً از طریق پارامترهای درخواست HTTP (به عنوان مثال؛ ارسال فرم) در صفحه بدون فیلتر یا ذخیره مناسب، نمایش داده شود.

۳- XSS  بر اساس DOM (Document Object Model)

حملات XSS بر اساس DOM  یک نوع آسیب‌پذیری اسکریپت‌نویسی بین سایت‌ها است که هنگامی رخ می‌دهد که جاوا اسکریپت داده‌ها را از منبع کنترل شده مهاجم دریافت کرده و برای اصلاح محیط DOM ارسال می‌کند. این باعث می‌شود مرورگر قربانی به طور غیر منتظره اجرا شود.

پیشگیری از حملات XSS

برنامه‌های کاربردی از نظر پیچیدگی اسکریپت‌نویسی متقابل می‌توانند چالش برانگیز باشند. بنابراین، ایمن‌سازی آن‌ها در برابر حملات اسکریپت‌نویسی متقابل (XSS) دشوار است. اما با اقدامات پیشگیرانه مناسب، می‌توانید برنامه وب خود را از این حملات محافظت کنید.

– باید ورودی دریافت شده از سمت کاربر را فیلتر کنید.

– در خروجی، داده‌های خروجی را کدگذاری کنید تا با پیاده‌سازی ترکیبی از کدگذاری HTML ، URL ، جاوا اسکریپت و CSS ، آن‌ها را از فعالیت بازدارید.

– با استفاده از ابزارهای اسکنر آسیب پذیری وب‌، می‌توانید برنامه وب خود را برای آسیب‌پذیری‌های احتمالی XSS اسکن کنید.

– پیاده‌سازی header مناسب و مسدود کردن XSS در پاسخ‌های HTTP که انتظار نمی‌رود شامل HTML یا JavaScript باشد و مطمئن شوید که مرورگرها پاسخ مورد نظر را اجرا می‌کنند.

– همچنین می‌توانید سیاست امنیت محتوا (CSP: Content Security Policy) را برای مهار تأثیر مخرب هر گونه آسیب‌پذیری دیگر XSS پیاده‌سازی کنید.

 

 

 

سایر مطالب مرتبط

حمله cross site scripting چیست ستاک فناوری ویرا

حمله cross site scripting