wait لطفا صبر کنید
05 بهمن 1395
صفحه اصلی  » مقالات
1394/01/15
9360
00

حملات XSS (بخش اول)

کدهای اسکریپت (javascript و vbscript) اگر چه امکانات خوبی را برای طراحان سایت و برنامه های تحت وب فراهم کرده اند ولی راهی برای نفوذ هکرها نیز باز نموده اند. هکر ها از طریق تزریق کدهای اسکریپت مخرب به برنامه وب، قادر به انجام اعمال خرابکارانه ای چون سرقت نشست کاربران مجاز و نفوذ به سرورهای وب خواهند بود. بر اساس گزارشی از سازمان OWASP در سال 2010 نزدیک به 40 درصد حملات رخ داده علیه برنامه های وب متعلق به حملات XSS بوده است.
كدهاي اسكريپت (javascript و vbscript) اگر چه امكانات خوبي را براي طراحان سايت و برنامه هاي تحت وب فراهم كرده اند ولي راهي براي نفوذ هكرها نيز باز نموده اند. هكر ها از طريق تزريق كدهاي اسكريپت مخرب به برنامه وب، قادر به انجام اعمال خرابكارانه اي چون سرقت نشست كاربران مجاز و نفوذ به سرورهاي وب خواهند بود. بر اساس گزارشي از سازمان OWASP در سال 2010 نزديك به 40 درصد حملات رخ داده عليه برنامه هاي وب متعلق به حملات XSS بوده است.
در حملات XSS (مختصر شده Cross Site Scripting مي باشد ولي به دليل شباهت آن با CSS از كلمه اختصاري XSS استفاده مي گردد) يك حمله كننده از يك برنامه تحت وب براي ارسال كدهاي بدخواه (معمولا به صورت اسكريپت) به يك كاربر برنامه استفاده مي كند. اين حملات بسيار گسترده بوده و هنگامي رخ مي دهند كه ورودي دريافت شده از يك كاربرد بدون اعتبارسنجي و يا كدگذاري (encoding) به خروجي ارسال گردد. اگر متن دريافت شده از كاربرد اعتبار سنجي نگشته و به خروجي ارسال گردد، مرورگر اسكريپت هاي آن را به صورت زبان نشانه گذاري (Mark-up language) تفسير كرده و كدهاي اسكريپت را اجرا مي كند. متداول ترين انواع حملات XSS دو نوع زير مي باشند كه در سمت سرور (Server Side) رخ مي‎دهند.
 
حملات xss معمولا زماني رخ مي دهند كه :

1)      داده ها از منابع غيرقابل اعتماد به برنامه هاي وب وارد مي شوند. به عنوان مثال ممكن است درخواست مشاهده صفحه وب (request) از سمت يك كاربر ناشناس و غيرقابل اعتماد دريافت شود.

2)      داده هاي پاسخ (response) بدون اعتبارسنجي از لحاظ كدهاي بدخواه به سمت كاربر وب ارسال شوند.

كدهاي بدخواه عمدتا در قالب كدهاي جاوااسكريپت به سمت برنامه وب ارسال مي گردند ولي ممكن است شامل تگ هاي html، فلش و يا ديگر كدهاي قابل اجرا توسط مرورگرها نيز باشند. فعاليت هاي خرابكارانه صورت گرفته توسط حملات XSS معمولا نامحدود اند ولي معمولا شامل انتقال اطلاعات محرمانه چون كوكي ها و اطلاعات نشست كاربران به حمله كننده، هدايت قربانيان به صفحات وب تحت كنترل حمله كننده، و يا اجراي عمليات مخرب بر روي سيستم قرباني مي گردند.

 
در زير چند مثال از حملات XSS را مشاهده مي كنيد:
 
 
 
 
حملات XSS بازتابيده: (Reflected)
اين حملات زماني رخ مي دهند كه ورودي دريافت شده از كاربر مستقيما (بدون ذخيره سازي) به خروجي ارسال گردد.
 
حملات XSS ذخيره شده: (Stored XSS attacks)
اسكريپت هاي بدخواه ممكن است در يك پايگاه داده ذخيره گشته و تا زمانيكه توسط كاربر بازيابي نشوند، اجرا نگردند. اين حمله ممكن است تا مدتها و تا زمانيكه كاربر تصميم به ديدن صفحه اي كه كد بدان تزريق شده نگرفته است، خاموش بماند. گاهي ممكن است داده هاي آلوده (كدهاي بدخواه) توسط برنامه حاضر وارد پايگاه داده نشده باشند و برنامه شما از اعتبار سنجي خوبي براي داده هاي ورودي استفاده كرده باشد، ولي اين كدهاي بدخواه توسط برنامه هاي ديگر در پايگاه داده هاي مشترك مابين برنامه شما و آنها وارد شده باشند.