مقدمه ای بر حملات Cross Site Scripting

XSS مخفف Cross Site Scripting میباشد ؛ این نوع حملات جزو حملات Cross Zone Scripting یا اسکریپت نویسی فراتر از محدوده نیز شناخته میشوند و این نوع حملات در سمت – کاربر اجرایی میشود.

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

این نوع آسیب پذیری را به چند دسته تقسیم میکنند که میتوان به ۲ نوع از آن اشاره کرد:

Reflected XSS

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

Stored XSS

بعضی از مواقع پس از اجرای یک Query و پروسه زمانی رخ میدهد که به آن Stored XSS میگویند.

معمولا آسیب پذیری XSS در مکان های زیر یافت میشود:

فرم جستجو

فرم های جستجو معمولا ورودی را مستقیما در واکنش نشان میدهند برای مثال:
عبارت (عبارتی که جستجو شده) پیدا نشد.

فرم تماس

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

پیام های خطا

بسیاری از مشکلات XSS در پیام های خطا برگشته از برنامه هایی مثل Apache ، .NET ، Java،PHP ، Perl و .. پیدا شده است. معمولا این اتفاق زمانی که یک URL غلط یا نام فایل نامعتبر یا نامعتبر بودن نوع ورودی رخ میدهد.

لینک های HTML

اطلاعات ورودی که در واکنش برای تولید لینک های HTML پویا استفاده میشود.

تزریق در بلوک های جاوا اسکریپت

این سناریو زمانی رخ میدهد که ورودی برنامه ای بر پایه جاوا اسکریپت بر عهده کاربر باشد.
مثالی از تزریق در بلوک های جاوا اسکریپت :

محتویات فایل php :

همانگونه که مشاهده میکنید در فایل روبه رو ما ورودی که از طریق متود GET گرفته میشود را در متغیری به نام a ذخیره میکنیم و سپس با استفاده از document.write مقدار این متغیر را در صفحه مینویسم.

حالا فرض کنید که ما بتوانیم کد های خودمان را از این طریق به صفحه اضافه کنیم . حال که ما به ورودی دسترسی داریم و هیچ محدودیتی نیست ، میتوانیم تگ مربوطه را ببندیم و اطلاعاتمان را تزریق کنیم . برای مثال در Source Code بالا ما به این شکل میتوانیم کد های خودمان را تزریق کنیم :

در واقع alert یک مشخصه برای رخ دادن XSS هست و هیچ جنبه دیگری ندارد.
توجه داشته باشید که ما در این آسیب پذیری هیچ نیازی به اضافه کردن تگ script نداریم و کد های ما با موفقیت اجرا میشوند.
در واقع پس از وارد کردن ورودی عبارت درون Source Code به این شکل میشود:

اهمیت این آسیب پذیری

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

جاوا اسکریپت زمانی سمت-کاربر هست و بنابر همین ویژگی این آسیب پذیری اهمیت زیادی دارد. در واقع نفوذگران از این آسیب پذیری برای ساده ترین کار ( دزدیدن کوکی ها ) تا حملات مهندسی اجتماعی استفاده میکنند.

 

ارسال نظر

ایمیل شما منتشر نخواهد شد. پر کردن ورودی ها الزامی است. *

*

پنج + 5 =