آشنایی با حملات XSS

قبل از هر چیزی بگم که این فقط فقط جنبه آموزشی داره ومسئولیت استفاده نادرست از این مقاله بر عهده خود شخص می باشد و تیم امنیتی TBS هیچ مسئولیتی را قبول نمیکند.


حملات Xss یا Cross Site Scripting

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

اگرچه مخفف CSS ، Cross Site Scripting میباشد اما با توجه به اینکه CSS به عنوان مخفف Cascading Style Sheets به کار برده میشود، به همین دلیل از XSS برای مخفف Cross Site Scripting استفاده میشود.

روش حمله

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

انواع حملات Xss :

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


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

  • تغيير تنظيمات كاربر
  • ربودن حسابها
  • ربودن كوكی ها
  • اعمال كدهای تخریب کننده
  • لینک به سايت های مخرب
  • راه اندازی تبليغات كاذب



روش های جلوگیری از XSS

اضافه نمودن كدی به برنامه تحت وب است تا باعث شود از برخي تگ های فرمان در ورودی پويا چشم پوشی شود.

تگ های قابل استفاده در XSS عبارتند از:

  • <object>
  • <applet>
  • <embed>
  • <form>
  • استفاده از مرورگرهای وب امن مانند Firefox و Opera که امنیت بالاتری نسبت به IE دارند. اینترنت اکسپلورر از جمله مرورگرهایی است که نقاط ضعف زیادی دارد و بسیار در معرض خطر است.
  • بكارگيری ابزارهایی كه اجرای كدهای Script،Flash و هر کد مخرب دیگری را محدود مي كنند. مثل NoScript
  • بر روی لینک ها و ایمیل های ناشناس کلیک نکنید.سعی نمایید تا آدرس را مستقیما در نوار آدرس وارد کنید. و یا اینکه برای جلوگیری از این نوع حمله ایمیل را روی حالت Html یا متنی قرار دهید تا کدهای مخرب خود به خود اجرا نشوند.
  • استفاده از توابعی که عملیات پاکسازی کدها را انجام می دهند. مثل htmlentities در زبان PHP (فیلتر نمودن ورودی های کاربر و همچنین کدهای خروجی)
  • سعی کنید گزینه یادآوری نام کاربری و رمز عبور را در مرورگرهای خود غیر فعال کرده و به صورت دوره ای رمز عبور ایمیل های خود را تغییر دهید.
  • بهتر است از یک ایمیل مجزا برای حساب های کاربری مهم خود مانند حساب بانکی و … استفاده کرده و از آن برای ارتباطات روزانه استفاده نکنید.


متد‌های جلوگیری از حملات XSS

روش اول: Escaping

در این روش اطلاعات ورودی توسط کاربر به نوعی سانسور می‌شوند. مثلا از ثبت بعضی از کارکتر‌های خاص مانند > و < که ممکن است در دستورات کد استفاده شوند جلوگیری می‌شود و باعث می‌شوند که کد‌های مخرب از کار بیفتند.
اگر سایت شما به نوعی است که به کاربران اجازه اضافه کردن کد خود را نمی‌دهد، راه حل خوب می‌تواند escape کردن تمامی متون از جمله HTML, URL و Javascript باشد.
ولی در صورتی که سایت از متون غنی‌(rich text) پشتیبانی می‌کند مانند سایت‌ها فروم و یا ثبت نظر‌ها، اجرای این روش کمی سخت تر می‌شود زیرا باید کاراکتر‌هایی که escape می‌شوند را به دقت انتخاب کنید.

روش دوم:‌ اعتبار سنجی ورودی (Validating Input)

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


جمع بندی

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



منابع

https://webramz.com/blog/%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7-%D8%AD%D9%85%D9%84%D8%A7%D8%AA-xss-%DB%8C%D8%A7-cross-site-scripting
https://webdataco.com/blog/%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7-%D8%AD%D9%85%D9%84%D8%A7%D8%AA-xss


با تشکر از همراهی شما دوستان عزیز :|