حملات پیشرفته Cross-Site-Script یا XSS و انواع آنها

28 تیر 1396
نویسنده :  

Scripting :

XSS یکی از نقاط ضعف امنیتی میباشد که معمولا در Web Application ها یافت می شود. XSS این قابلیت را به هکر میدهد که اسکریپت های مخربی در سمت کلاینت، در هنگامی که کاربران درخواست اتصال به صفحه وب خاصی را داشته باشند تزریق می کند. از قابلیت دیگر این حمله ، هکر می تواند سطح دسترسی های خاص تعیین شده توسط برخی سیاست ها یا به عبارت دیگر Same-Origin-Policy را Bypass کند.

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

میزان و شدت تهدید حملات XSS براساس محتوای که وب سایت آسیب پذیر دارد، می تواند در قالب  یک حمله خطرناک و یا فقط یک مزاحمت ساده و عادی ظاهر شود. در این حمله هکر به صورت مستقیم با قربانی تعامل نمی کند بلکه هکر یک وب سایت آسیب پذیری را یافته و پس از نفوذ آن  را به عنوان وسیله ای قرار میدهد که با بازدید کاربرانی که آسیب پذیر به حمله XSS هستند، هکر Script مخرب خود را بر روی سیستم قربانی منتقل و اجرا می کند. XSS برای انجام حمله خود ازvBscript، Flash و Java Script سوء استفاده می کند.

نحوه عملکرد Cross-Site-Script :

برای اینکه هکر بتواند JavaScript مخرب خود را بر روی Browser آسیب پذیر قربانی راه اندازی کند ابتدا باید راهی را پیدا کند که وب سایت پر بازدید را هک کند تا با اتصال کاربران اینترنتی آسیب پذیر به حمله XSS این کد مخرب بر روی Web Browser آنها اجرا می شود. روش دیگری که هکر می تواند این حمله را پیاده سازی کند از طریق تکنیک مهندسی اجتماعی یا Soctial Engineering میباشد که هکر با استفاده ترفند های زیرکانه ای قربانی را متقاعد کرده که از صفحه خاصی بازدید کند این در حالی است که این صفحه از قبل تحت تاثیر JavaScript Payload قرار گرفته است.

برای اینکه حمله XSS اتفاق بیوفتد وب سایت آسیب پذیر باید به صورت مستقیم داده های وارد شده توسط کاربران در درون  وب سایت قرار گیرد. هکر آنگاه می تواند برخی رشته های خاص – String – خود را در این صفحات تزریق کند تا این String ها در browser قربانی  پردازش شوند. در زیر Pseudo-Code نمایش داده شده است که اخرین گفتگوهای رد و بدل شده در صفحات را نمایش می دهد.

Script بالا صرقا اخرین گفتگوهای ذخیره شده در database را به فرمت HTML نمایش میدهد هر صفحه بالا نشان می دهد که به حمله XSS آسیب پذیر است زیرا که هکر می تواند Commed های را اجرا کند که شامل Payload مخربی باشد مانند  <script>doSomethingEvil();</script>. که کاربران با بازدید از وب سایت صفحه HTML زیر را دریافت خواهند کرد :

XSS SCRIPTE

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

خطرناکترین نوع حملاتی که با JavaScript می توان انجام داد

نتایجی که هکر چه کار می تواند با اجرا کردن JavaScript انجام دهد ممکن است در همان لحظه مشخص نشود به خصوص در زمانی که این در محیطی کاملا امن و کنترل شده باشد که در این شرایط هکر فقط به سیستم عامل و فایل های قربانی دسترسی دارد که بر این اساس می توان فهمید هکر چه اقداماتی را می تواند انجام دهد که به صورت زیر است:

  1. JavaScript مخرب می تواند به تمامی صفحات مشابهی که آسیب پذیر هستند دسترسی داشته باشد که شامل دسترسی به Cookie هاکه معمولا برای ذخیره کردن Token نشست ها انجام شده با سایر وب سایت ها ذخیره می شوند که هکر با استفاده از این نشست ها می تواند خود را جای کاربر معتبر جایگزین کند و از اعتبار کاربر سوء استفاده کند.
  2. JavaScript از طریق  XMLHttpRequest برای ارسال در خواست http با محتوای دلخواه به مقصد دلخواه استفاده کند.
  3. JavaScript می تواند در Web Browser های پیشرفته به موقعیت جغرافیای، WebCame و حتی فایل های را از روی سیستم قربانی دست کاری کند که در صورت ادغام شدن این حملات و social engineering هکر می تواند حملات پیشرفته ای شامل دزدیدن Cookie ها، Keylogger، Phishing و دزدیدن اطلاعات حساب کاربری را انجام دهد.

آیا آسیب پذیری به XSS مشکل کاربران می باشد ؟

اگر هکر بتواند به راحتی از نقطه ضعف XSS سوء استفاده کند و نیز بتواند به راحتی JavaScript های خود را بر روی Browser بازدید کننده اجرا کند در نتیجه امنیت آن وب سایت ویا آن Web Browser به همراه کاربران آن به خطر افتاده است در نتیجه XSS مشکل کاربر نمی باشد و مانند هر آسیب پذیری امنیتی دیگر آین آسیب پذیری بر روی کاربران شما تاثیر می گذارد و در نهایت بر شما نیز تاثیر خواهد گذاشت و شما نیز در امان نخواهید بود.

ساختار حمله XSS :

هکر در حمله XSS به سه مهره کلیدی که بازیگر این حمله می باشند نیاز دارد که شامل .وب سایت، قربانی و هکر می باشند در شکل زیر این گونه فرض شده است که هکر قصد دراد برای تدارک دیدن حمله impersonate  اقدام به دزدیدن Cookie های قربانی میکند . که هکر برای ارسال این  Cookie ها به سرور کنترلی خود راه های زیادی دارد که یکی از آنها اجرا کردن JavaScript در Browser آسیب پذیر به XSS قربانی می باشد. در شکل زیر مراحل کلی حمله نمایش داده شده است.

XSS SCHEAMA ATTACK

  1. هکر در ابتدا از طریق روش های مختلفی کد مخرب خود را به سایت تزریق می کند
  2. قربانی در خواست اتصال به صفح وب سایت را ارسال می کند .
  3. وب سرور نیز Web Page خود را به همراه کد مخرب هکر به سمت قربانی ارسال می کند
  4. هکر با اجرای این Web Page آلوده به کد HTML مخرب تمام Cookie های قربانی دزدیده و به سرور هکر ارسال می شوند که در اینجا کافی است هکر با خارج کردن Cookie ها از حالت فشرده بر روی سرور خود از آنها استفاده کرده و اقدام به جعل هویت یا حمله impersonate  را انجام دهد

انواع XSS :

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

·         Stored XSS

بدترین نوع XSS حمله Stored XSS (پایدار) است. در این حمله مهاجم اسکریپتی را تزریق می کند (که به عنوان Payload شناخته می شود) که باعث میشود این اسکریپت بطور دائمی در برنامه هدف (به عنوان مثال در یک پایگاه داده) ذخیره می شود.Stored XSSClassic یک اسکریپت مخرب است که توسط مهاجم در قسمت نظرسنجی یک وبلاگ یا در پست فروم  وارد می شود.

 

·         Reflected XSS

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

  • XSS مبتنی بر DOM
  • XSS مبتنی بر DOM یک نوع پیشرفته از حمله XSS است که ممکن است هکر اسکریپت های مخرب خود را به همراه برخی داده به سمت  Object Model Document (DOM) ارسال می کند. سپس داده ها توسط DOM که توسط برنامه وب خوانده می شوند به مرورگر منتقل می شوند. اگر داده ها به صورت نادرست مورد استفاده قرار گیرند، یک مهاجم می تواند یکPayload را تزریق کند، که به عنوان بخشی از DOM ذخیره می شود و هنگامی که داده ها از DOM خوانده می شوند، اجرا می شوند.

بخش خطرناکی از XSS مبتنی بر DOM این است که حمله اغلب یک حمله از طرف مشتری است و Payload مهاجم هرگز به سرور ارسال نمی شود. این باعث می شود که فایروال های Web Application (WAF) و مهندسان امنیت را برای تجزیه و تحلیل سیاهت های مربوط به سرور بسیار دشوار تر کند به شکلی کهنتوانند متوجه حمله شوند. در میان اشیاء مختلف که DOM را تشکیل می دهند، برخی از اشیا به طور خاص وجود دارد که مهاجم می تواند به منظور تولید شرایط XSS دستکاری کند. چنین اشیا شامل URL (document.URL)، بخشی از URL  (location.hash) و Referrer (document.referrer) است.

برخی از کد های Cross-Site-Script در زیر آورده شده است

در زیر لیست برخی از حملات XSS که مهاجم می تواند از طریق استفاده از آنها به امنیت یک وب سایت یا Web Application حمله کند


    tag <Script>

تگ <Script> یکی از تگ های پرکاربرد و آسان  XSS است. تگ اسکریپت می تواند کد مرجع جاوا اسکریپت را مرجع یا کد داخل تگ اسکریپت را جاسازی کند

 

<body> tag

یک XSS Payload را می توان در داخل برچسب <body> با استفاده از ویژگی بارگذاری و یا دیگر ویژگی های مبهم مانند ویژگی پس زمینه تحویل داد.

XSS tag<body>

 

 <img> tag

برخی از مرورگرها وقتی که در <img> یافت می شوند، جاوا اسکریپت را اجرا می کنند.

xss tag <img>

 

 <iframe> tag

تگ <iframe> به جاسازی صفحه دیگری از صفحه HTML اجازه می دهد. IFrame می تواند جاوا اسکریپت داشته باشد، مهم است که توجه داشته باشید که جاوا اسکریپت در iFrame دسترسی به DOM صفحه Parent را به سیاست امنیتی مرورگر (CSP) ندارد. با این حال، IFrames هنوز هم بسیار موثر برای جلوگیری از حملات فیزیکی است.

 

 <input> tag

در بعضی از مرورگرها، اگر نوع برچسب <input> برای تصویر تنظیم شده باشد، می توان آن را برای جاسازی اسکریپت دستکاری کرد.

xss <input> tag

 

 <link> tag

برچسب <link>، که اغلب برای پیوند با ورق های سبک خارجی استفاده می شود، می تواند یک اسکریپت باشد.

 

xss <link> tag

 

 <table> tag

خصیصه پس زمینه تگ های table و td می تواند به جای یک تصویر به یک اسکریپت مورد سوء استفاده قرار بگیرد.

xss <table> tag

 

 <div> tag

attribute پس زمینه تگ های table و td می تواند به جای یک تصویر به یک اسکریپت، مورد سوء استفاده قرار بگیرد.

xss <div> tag

 

 <div> tag

تگ <div> مشابه برچسب های <table> و <td> همچنین می تواند پس زمینه را مشخص کند و بنابراین اسکریپت را جاسازی می کند.

 

 <object> tag

تگ <object> می تواند در یک اسکریپت از یک سایت خارجی استفاده شود

xss <object> tag

 

آیا وب سایت یا برنامه وب شما آسیب پذیر به اسکریپت Cross-Site است؟

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

مهندسین شبکه افزار سایان

  • اهواز - خیابان وهابی خ 19 شرقی پلاک 20
  • 061-33386011-13
  • 061-33374556
  • spambots

پیشنهادات خود را با ما در میان بگذارید

  ایمیل ارسال نشد   ایمیل با موفقیت ارسال شد