حمله Cross Site Scripting زمانی رخ میدهد که یک مهاجم، کدی را به یک وب سایت قانونی ضمیمه کند تا هنگامی که قربانی وب سایت را لود (load) میکند، آن کد اجرا شود.
این کد مخرب را میتوان به چندین روش وارد وب سایت هدف نمود. دو مورد از محبوبترین روشها افزودن کد مخرب به انتهای URL است و دیگری قرار گرفتن مستقیم بر روی صفحهای که محتوای تولید شده توسط کاربر را نمایش میدهد.
اگر بخواهیم با بیان فنی توضیح دهیم باید بگوییم Cross Site Scripting، حملهای بر مبنای تزریق کد به Client Side است.
کد Client Side چیست؟
کد Client Side، یک کد Java Script است که بر روی دستگاه کاربر اجرا میشود. روش کار این کد به گونهای است که پس از این که صفحه وب load شد، توسط مرور گر وب اجرا میشود.
کد Client Side نقطه مقابل کد Server Side است که بر روی سرور وب هاست اجرا میشود. کد Client Side در رابطه با آن دسته از صفحات وب که با کاربر در تعامل است، یک کد مفید به شمار میرود.
در ضمن محتوای تعاملی آن را سریعتر و مطمئنتر اجرا میکند، زیرا کامپیوتر کاربر مجبور نیست هر بار که تعامل دارد با سرور وب ارتباط برقرار کند.
معمولا مرورگرهای گیمها، یک پلتفرم محبوب برای کدهای Client Side به شمار میروند زیرا کد Client Side به این اطمینان رسیده است که بازیها (games) بدون در نظر گرفتن مشکلات ارتباطی و کانکت شدن به سادگی اجرا میشوند.
کد Client Side در فرایند گسترش مدرن وب بسیار محبوب شده است. در اکثر وبسایتهای جدید و مدرن مورد استفاده قرار میگیرد. از آنجا که کد Client Side یکی از عناصر اصلی وبسایتهای امروزی به شمار میرود، حمله Cross Site Scripting به یکی از آسیبپذیرترین زمینههای امنیت سایبری تبدیل شده که مرتبا گزارش میشود.
قابل ذکر است Cross Site Scripting تاکنون موفق شده است به سایتهای مهم و معروفی مانند Youtube ، Facebook و Twitter نیز حمله کند.
مثالی از حمله Cross Site Scripting
یک مثال ملموس از حملات Cross Site Scripting در مورد وبسایتهایی رخ میدهد که دارای فرومهای معتبر نیستند. در این صورت، یک مهاجم میتواند نظر و کامنتی حاوی یک کد اجرایی در تگ <script></script> ارسال کند.
کاری که این تگ این است که به مرورگر وب دستور میدهد هر آن چه که بین تگها به عنوان کد Java Script هست را تفسیر و تعبیر کند.
وقتی که کامنت مورد نظر در صفحه قرار میگیرد، هر کاربر دیگری که آن صفحه را load و مشاهده نماید، کد مخرب بین تگهای اسکریپت توسط مرورگر وب آنها اجرا شده و آنها قربانی حمله میگردند.
آسیب رساندن با Cross Site Scripting
حملات Cross Site Scripting بسیار محبوب هستند، زیرا جاوا اسکریپت به برخی اطلاعات مهم و حیاتی دسترسی دارد که برای سرقت هویت و سایر اهداف مخرب استفاده میشود.
به عنوان مثال از آنجا که جاوا اسکریپت به کوکیها (cookie) دسترسی دارد، یک مهاجم میتواند با استفاده از حملات Cross Site Scripting، کوکی کاربر را به سرقت برده و آنها را به صورت آنلاین جعل کند.
در ضمن JavaScript میتواند درخواستهای HTTP ایجاد نموده و برای برگرداندن دادهها (مانند کوکیهای سرقت شده) به مهاجم از آن استفاده کند. به علاوه، جاوا اسکریپت Client Side میتواند به مهاجم در دستیابی به APIهایی که شامل مختصات جغرافیایی، دادههای مربوط به webcam و سایر اطلاعات مهم و حساس میگردد، کمک کند.
مراحل وقوع حمله Cross Site Scripting
- ابتدا قربانی یک صفحه وب را باز نموده و کد مخرب، کوکیهای کاربر را کپی میکند.
- سپس این کد با استفاده از کوکیهایی که به سرقت برده و قرار دادن آنها در متن درخواست اقدام به ارسال درخواستهای HTTP، به سرور مهاجم مینماید.
- در این مرحله مهاجم میتواند از این کوکیها به منظور جعل هویت کاربر بر روی وب سایت مورد نظر با هدف حملات مهندسی اجتماعی (Social Engineering Attack) و یا حتی با هدف دسترسی به حسابهای بانکی و دادههای مهم استفاده نماید.
کوکیها اطلاعات موقت ورود به سیستم ذخیره شده بر روی کامپیوتر کاربر هستند.
به عنوان مثال، زمانی که یک کاربر وارد سایتی مانند فیس بوک میشود، این سایت کوکیهایی را در اختیار کاربر قرار میدهد تا اگر بعد از بستن پنجره مرورگر، دوباره در همان روز به این وبسایت مراجعه کند، به طور خودکار توسط کوکیها احراز هویت شده و نیازی به ورود به سیستم یا لاگین شدن مجدد نداشته باشد.