میزبان کلود
CDN ابری

حملات XSS چیست و برای چه اهدافی استفاده می شود؟

میزبان کلود میزبان کلود
2563 بازدید 0 دیدگاه 13 اردیبهشت 1402 زمان مطالعه: 25 دقیقه
/storage/post-covers/1683107703_2023-05-03_12.png
حملات XSS چیست و برای چه اهدافی استفاده می شود؟

XSS یا Cross site scripting یک حمله رایج است که کدهای مخرب را درون یک وب اپلیکیشن تزریق می کند. XSS با سایر انواع حملات وب متفاوت است ( نظیر SQL Injection ) چرا که به طور مستقیم خود اپلیکیشن را هدف نمی گیرد. در عوض این کاربران وب اپلیکیشن هستند که در خطرند. یک حمله Cross site scripting موفق می تواند عواقب جبران ناپذیری برای شهرت یک کسب و کار آنلاین و رابطه آن با کاربرانش به همراه داشته باشد.

بسته به شدت حمله، ممکن است اکانت کاربران مورد حمله قرار گیرد، برنامه های trojan horse فعال شده و محتوای صفحات تغییر یابند، و حتی کاربران را به ارائه خود خواسته داده هایشان فریب دهند.

در نهایت ممکن است با لو رفتن کوکی های سشن ها، مهاجم خود را کاربر عادی جلو داده و از اکانت های خصوصی آنها سوء استفاده کند.

XSS چطور عمل می کند؟

Cross site scripting به وسیله دستکاری یک وب سایت یا اپلیکیشن انجام می شود که کدهای جاوا اسکریپت مخربی را به کاربران باز می گرداند. زمانی که این کدهای تخریب گر درون مرورگر کاربران اجرا می شوند، مهاجم به راحتی می تواند تعامل آن کاربران با وب اپلیکیشن را مشاهده کرده، اطلاعات دسترسی را سرقت و در ادامه به داده های حساس کاربر دست یابد.

از XSS برای چه اهدافی استفاده می شود؟

یک مهاجم که از Cross site scripting استفاده می کند، قادر است تا:

  • خود را شبیه به کاربر واقعی نشان دهد ( با تقلید و وانمود کردن به کمک اطلاعات سرقت رفته )
  • هر اقدامی که کاربر می تواند در اکانت خود انجام دهد را انجام دهد.
  • هر داده ای که کاربر می تواند به آن دسترسی داشته باشد را بخواند.
  • اطلاعات ورودی اکانت کاربر را دریافت کند.
  • محتوای سایت را تغییر داده و آن را با محتوای خود جایگزین کند.
  • اقدامات Trojan را در سایت تزریق کند.

و بسیاری دیگر...

xss

تاثیرات حملات XSS

تاثیر اصلی حملات XSS بیشتر به ماهیت اپلیکیشن، داده ها، وضعیت کاربر و کارایی وب سایت بستگی دارد؛ برای مثال:

  1. در یک اپلیکیشن بروشوری، جایی که تمام کاربران ناشناس بوده و تمام اطلاعات در معرض دید عموم هستند، تاثیر اندکی قابل مشاهده خواهد بود.
  2. در اپلیکیشنی که داده های حساسی را حمل می کند، مثل تراکنش های بانکی، ایمیل ها، رکوردها و اسناد مهم سازمانی، مسلماً تأثیر قابل توجه خواهد بود.
  3. اگر کاربری به اپلیکیشن اعتماد کرده و تمام اطلاعات شخصی خود را در آن وارد کرده باشد، مهاجم می تواند کنترل کامل اکانت وی را به دست گرفته و اطلاعاتش را سرقت ببرد.

سرور ابری

انواع حملات XSS

در برخی از مراجع حملات اسکریپت دهی بین سایتی ( Cross site scripting ) را به دو دسته زیر تقسیم می کنند:

  • Non-persistent attacks
  • Persistent attacks

اما در حالت رایج تر، حملات Cross site scripting را می توان به دو دسته تقسیم کرد:

ذخیره شده ( stored ) و انعکاس یافته ( reflected )

Stored XSS یا XSS ذخیره شده، صدمه شدیدتری وارد می کند. این حمله زمانی رخ می دهد که یک اسکریپت مخرب به طور مستقیم درون یک وب اپلیکیشن تزریق می شود.

Reflected XSS یا XSS انعکاس یافته در واقع انعکاسی از یک اسکریپت مخرب است که با تأثیر گذاری بر مرورگر کاربر به وب اپلیکیشن صدمه می زند. این اسکریپت درون یک لینک embed شده و زمانی که روی لینک کلیک شود، فعال می شود.

اما یک نوع دیگر از حملات XSS نیز وجود دارد که کمتر شناخته شده و مورد استفاده قرار گرفته است: DOM-based XSS

این حمله زمانی اتفاق می افتد که مهاجم اسکریپتی را درون Response یا پاسخ درخواست تزریق می کند. در این روش مهاجم می تواند داده های Document object model  یا DOM را خوانده و آن ها را دستکاری و در نهایت یک URL مخرب ایجاد کرد.

سپس مهاجم از این URL برای فریب دادن کاربران و کلیک کردن روی آن استفاده می کند. که در ادامه همانند انواع دیگر کوکی های سشن کاربر را دزدیده و به اکانت وی دسترسی پیدا می کند.

بر خلاف دو مدل stored XSS و reflected XSS تمام فرآیند حمله DOM-based XSS در مرورگر کلاینت رخ می دهد و چیزی سمت سرور باز نمی گردد.

نوع دیگری که زیر مجموعه ای stored XSS یا Persistent XSS است، Blind cross site scripting یا اسکریپ دهی بین سایتی کور نام دارد. این حمله زمانی اتفاق می افتد که payload مهاجم روی سرور ذخیره شده و از backend اپلیکیشن به قربانی باز می گردد.

برای مثال در فرم های نظرسنجی یا ثبت بازخورد، یک مهاجم می تواند یک payload مخرب در فرم ثبت کرده و هنگام باز کردن فرم ثبت شده توسط ادمین یا یک کاربر دیگر،، آن payload را اجرا کند.

و در آخر نوع کمتر شناخته شده دیگری به نام Self-XSS که نوعی از حمله XSS است که از تکنیک های مهندسی اجتماعی برای فریب دادن قربانی به اجرای یک اسکریپت آسیب زا استفاده می شود. برای مثال ممکن است کاربری به کپی و پیست کردن یک کد در آدرس بار مرورگر خود فریب داده شود.

 این نوع از XSS را Self نامیده اند چراکه شخص به خواست خود کد اسکریپت را کپی و اجرا می کند؛ البته با فریب خوردن! به همین دلیل این نوع را یک cross site scripting حقیقی یا TRUE بحساب نمی آورند ولی با این وجود می تواند به همان اندازه داده ها و اطلاعات کاربران را در معرض خطر قرار دهد.

خرید CDN

منظور از Stored Cross site scripting چیست؟

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

 

یکی از متداول ترین اهداف این نوع حملات وب سایت هایی هستند که به کاربران اجازه اشتراک گذاری محتوا را می دهند، محتوایی نظیر وبلاگ ها، شبکه های اجتماعی، پلتفرم های اشتراک گذاری ویدیو و بوردهای پیام رسان.

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

یک مثال از  Stored Cross site scripting

زمانی که درون یک فروشگاه اینترنتی می چرخید، یک مهاجم با مشاهده بخش کامنت ها متوجه می شود که می تواند از این طریق تگ های HTML را وارد سایت کند.

این تگ های Embed شده به یک ویژگی دائمی صفحه تبدیل می شود، که باعث می شود با هر بار باز کردن صفحه، مرورگر مجبور باشد تا با باقی مانده source code ها، آنها را تجزیه کند.

برای مثال مهاجم کامنتی شبیه به این را وارد می کند:

قیمت این محصول عالی است؛ نظر من را در مورد این محصول در این آدرس بخوانید:

 

از این لحظه به بعد، هر بار که این صفحه باز شود، تگی که در کامنت ها درج شده، یک فایل javascript را فعال می کند که در سایتی دیگر میزبانی شده و این قابلیت را دارد که کوکی سشن های کاربران را به سرقت ببرد.

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

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

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

از نقطه نظر مهاجمین، پیاده سازی حملات stored یا persistent XSS دشوارتر است، چراکه باید هم از یک وب سایت جعلی و هم یک وب سایت قربانی برای تزریق اسکریپت استفاده کرد.

جلوگیری از حملات Stored XSS

یک فایروال وب اپلیکیشن یا WAF بهترین و متداول ترین راهکار جلوگیری از حملات وب اپلیکیشن بخصوص XSS است.

WAF ها از متدهای مختلفی برای شکست دادن مهاجمین استفاده می کنند؛ در مورد XSS، اکثر WAF ها از فیلترینگ امضا محور ( Signature filtering ) برای شناسایی و مسدود سازی درخواست های مخرب استفاده می کنند.

بنابراین بهترین رویکرد این است که قبل از هر چیز و در همان مراحل اولیه چرخه طول عمر اپلیکیشن ها، موارد امنیتی را پیاده کنید. برای مثال از اقدامات امنیتی فاز طراحی نرم افزار مثل architecture risk analysis و مدل سازی تهدیدات ( threat modeling ) استفاده کنید.

بعلاوه پس از تکمیل فرآیندهای توسعه نرم افزار نیز تمام تست های امنیتی را جدی بگیرید.

در زیر به چند استراتژی مهم برای جلوگیری از حملات XSS اشاره می کنیم:

  • هرگز به ورودی های کاربران اعتماد نکنید.
  • از encoding یا رمزنگاری خروجی استفاده کنید.
  • اعتبار سنجی ورودی های کاربران را قعال کنید.
  • از اصول defense in depth پیروی کنید.
  • مطمئن شوید که توسعه وب اپلیکیشن با چیت شیت OWASP XSS Prevention هم خوانی داشته باشد.
  • در آخر کار تمام تست های نفوذ به نرم افزار و سرورها را پیاده کنید.

با دنبال کردن راهنماهای توسعه ایمن و پیاده سازی آنها در تمام سطوح توسعه اپلیکیشن، سازمان خود را در برابر حملات سایبری ایمن کنید. یکی از کلیدهای جلوگیری از حملات XSS رمزنگاری خروجی ها یا Output encoding است که باید با زبان برنامه نویسی و فریم ورک های سازمان شما مطابقت داشته باشد.

یک سیاست امنیت محتوایی به نام CSP وجود دارد که به عنوان یک مکانیزم مرورگر عمل کرده و در صدد است تا از سایت در مقابل حملات Cross site scripting محافظت کند. اگر اپلیکیشن یا وب سایتی از سیاست CSP پیروی کند که رفتار XSS مانندی را شامل شود، این مکانیزم می تواند از وقوع این حملات جلوگیری کند.

یک تکنیک دیگر به نام Dangling markup وجود دارد که در زمان هایی که یک cross-site scripting کامل قابل اجرا نباشد، داده های دامنه را از دامنه ای دیگر دریافت می کند. این ناتوانی در اجرا می تواند به علت وجود فیلترهای ورودی یا سایر مکانیزم های دفاعی باشد.

اما مهم این است که داده های حساس کاربران از جمله توکن های CSRF که می توان به کمک آنها اقدامات غیرمجازی را انجام داد، در امان بمانند.

راه جلوگیری از XSS های نوع DOM نیز این است که از هدرهای Content-type و x-content-type-options استفاده کنید تا مطمئن شوید که مرورگرها آنطور که شما مایلید، پاسخ ها یا responseها را ترجمه می کنند.

راهکار میزبان کلود

به کمک سرویس های امنیت ابری میزبان کلود می توانید به سادگی انواع حملات سایبری در سطوح مختلف از لایه های 3، 4 و 7 ( لایه اپلیکیشن ) را در لحظه دفع کرده و به کمک سیستم های WAF با قدرت تمام در برابر حملات XSS بیاستید.

جمع بندی

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

پیشنهاد ویژه

CDN ابری میزبان کلود

میزبان کلود

سرعت در بارگذاری و تحویل محتوای سایت

میزبان کلود

سرعت در بارگذاری و تحویل محتوای سایت

میزبان کلود

سرعت در بارگذاری و تحویل محتوای سایت

میزبان کلود

سرعت در بارگذاری و تحویل محتوای سایت

مشاهده پلانها
میزبان کلود میزبان کلود
میزبان کلود
برچسب‌ها :
میزبان کلود
نویسنده مطلب میزبان کلود

ارائه دهنده خدمات زیرساخت یکپارچه ابری

حملات XSS چیست و برای چه اهدافی استفاده می شود؟ 0 دیدگاه