حمله xss چیست؟

بوسیله علیرضا پایدار | 1396/4/25 | مجموعه امنیت

0 نظر

حمله  xss چیست؟

حمله (Cross-site Scripting XSS)

مقدمه

XSS یکی از حملات امنیتی می باشد که در گروه حملات injection یا تزریقی قرار می گیرد. عملکرد در این حمله بدین گونه می باشد که کد مخرب بصورت کاملا خوش خیم وارد وب سایت های قابل اطمینان می شود. این حمله زمانی اتفاق می افتد که مهاجم بخواهد از طریق یک وب سایت کد مخربی را به مرور گر سیستم کاربر بفرستد. بصورت کلی XSS شکلی از کد سمت مرور گر و یا کلاینتی می باشد.

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

مهاجم با استفاده از حمله XSS می تواند یک کد مخرب را به مرور گر کاربر قربانی بفرستد. در این حمله کاربر نهایی به هیچ عنوان متوجه حضور کد مخرب در مرورگر خود نخواهد شد.

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


حملات XSS چه زمانی اتفاق می افتد؟

بصورت کلی حملات XSS در زمان های زیر اتفاق خواهد افتاد:

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

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

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

حملات ذخیره شده و معکوس در XSS

بطور کلی حملات XSS را می توان به 2 دسته گروه بندی کرد: ذخیره شده و بازتاب شده. البته نوع سومی هم بنام DOM مبتنی بر XSS وجود دارد که کمتر شناخته شده است و در پست های آینده آن را توضیح خواهیم داد.

حملات ذخیره شده در XSS  -  Stored XSS Attacks

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

 نام دیگر این حملات Type-I XSS یا XSS دائمی نیز می باشد.

حملات معکوس در XSS  -  Reflected XSS Attacks

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

 نام دیگر حمله معکوس XSS ، Type-II XSS و یا XSS غیر دائمی می باشد.

عواقب حمله XSS

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

تشخیص آسیب پذیر بودن در برابر حملات XSS

متاسفانه تشخیص این گونه آسیب پذیری ها و یا حذف آن ها از یک برنامه تحت وب بسیار مشکل می باشد. اما بهترین را برای اینکه بتوان این گونه آسیب را تشخیص داد این است که یک بررسی امنیتی بر روی کد ها انجام داد و تمام مکان هایی از یک درخواست ورودی HTTP می توان به یک درخواست خروجی HTTP رسید را جستجو کرد. توجه باید داشته باشید که تگ های مختلفی از HTML وجود دارد که می توانند برای انتقالجاوا اسکریپت مخرب استفاده شود. خوشبختانه ابزار هایی مانند Nikto ، Nessus و چند ابزار دیگر نیز برای اسکن وب سایت هایی که آسیب پذیر هستند وجود دارد؛ اما تنها می توانند سطح کوچکی از این آسیب پذیری ها را تشخیص دهند. اگر حتی یک قسمت از سایت مشخص شود که آسیب پذیر است؛ باید آگاه بود که به احتمال زیاد قسمت های دیگری نیز وجود دارند که مشکلات امنیتی دارند.

اما چگونه باید از خودمان در برابر حملات XSS محافظت کنیم؟

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

به عنوان یک برنامه نویس حرفه ای خیلی مهم است که قابلیت HTTP TRACE را در تمام وب سرور ها غیر فعال کنید. البته مهاجم می تواند از طریق جاوا اسکریپت حتی در زمانی که قابلیت document.cookie غیر فعال و یا حتی در سیستم کاربر قربانی غیر قابل پشتیبانی باشد، اقدام به سرقت اطلاعات کوکی وی کند؛ اما با از بین بردن قابلیت HTTP TRACE در وب سرور ها می تواند تا حد زیادی از این حملات جلوگیری کرد.

 در پست های آینده حتما خواهیم گفت که چگونه می توان با استفاده از زبان های PHP و ASP.Net از حملات XSS در سرور های مربوطه جلوگیری کرد.

 منابع:

owasp.org.com 

acunetix.com


چنانچه این خبر مورد رضایت شما می باشد آن را با دوستانتان به اشتراک بگذارید