حمله XSS

از آزمایشگاه آپا
پرش به: ناوبری, جستجو

یکی از رایج ترین حملات تزریق کد، حمله XSS است. در این نوع حمله نفوذگر کدهای مخرب جاوا اسکریپت،HTML ، ویا سایر اسکریپت های سمت سرویس گیرنده را به وب سایت مورد نظر تزریق می کند. بسياري از برنامه هاي كاربردي تحت وب داراي روند تكراري نمايش اطلاعات، گرفتن ورودي و همچنين نمايش اطلاعات جديد هستند. اگر يك مهاجم بتواند يك كد آلوده را به عنوان ورودي بفرستد، برنامه ي كاربردي و مرورگر وب بقيه ي كار را انجام می دهد. به طور كلی، يك حمله ي XSS موفق در نتيجه ي طراحي نامناسب برنامه ي كاربردي به وقوع مي پيوندد. این حملات را در سه دسته زیر قرار می دهند:

  • حمله ی DOM-Based XSS
  • حمله ی Non-persistent XSS
  • حمله ی Persistent XSS



محتویات

حمله ی DOM-Based XSS

در این نوع حملات غالبا نفوذگر از طریق سایت قربانی دست به حمله نمی زند بلکه از طریق سیستم عامل قربانی حمله را پایه ریزی می کند. DOM ساختاری است که به منظور نمایش اسناد در مرورگر به کار می رود. ساختار DOM این اجازه را به اسکریپت های پویایی مانند جاوا اسکریپت می دهد که در سمت سرویس گیرنده از اجزایی مانند کوکی ها و یا فیلد های مرورگر استفاده کنند. حمله DOM-Based XSS زمانی رخ می دهد که اسکریپت فعال در سمت مرورگر توسط نفوذگر دستکاری شده باشد، بدین ترتیب نفوذگر کنترل DOM قربانی را در دست می گیرد. معمولا کد های مخرب در مورد این آسیب پذیری ها به صورت زیر عمل می کنند:

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

برای درک بهتر این حمله به مثال زیر دقت کنید : فرض کنیم کد زیر به منظور نمایش زبان پیش فرض در برنامه انتخاب زبان سمت سرور وجود دارد:

….
Select your language :
<select><script>
Document.write(“<OPTTION value = 1>”+ document.location.href.substring(document.location.href.indexOf("default=")+8)+”
</OPTION>”);  
document.write(“<OPTTION value = 2>English)</OPTION>”);
</script></select>
….

که این کد URL زیر را تولید می کند وپارامتر default زبان پیش فرض را مشخص می کند :

http://www.example.com/page.html?default=English


حمله DOM-Based XSS زمانی رخ می دهد که نفوذگر مقداردهی زیر را برای پارامتر default داشته باشد:

http://www.example.com/page.html?default=<script>alert(document.cookie)</script>


وهنگامی که کاربر قربانی بر روی این URL زیر کلیک کند :

/page.html?default=<script>alert(document.cookie)</script>


پاسخ سرور سایت wwww.example.com مانند پاسخ به درخواست URL زیر می باشد :

http://www.example.com/page.html?default=<script>alert(document.cookie)</script>

از آنجا که اعتبارسنجی مناسبی در سمت سرور انجام نمی شود، اسکریپت نفوذگر به راحتی اجرا می شود. البته، اشاره به این نکته ضروری است که پاسخ HTTP فرستاده شده از سمت سرور حاوی کد های نفوذگر نمی باشد، بلکه این کدهای مخرب توسط مرورگر در سمت سرویس گیرنده اجرا می شوند وDOM در سمت سرویس گیرنده با فرض اینکه کدهای نفوذگر، پاسخ سرور است آن کد ها را اجرا می کند.

حمله ی Non-persistent XSS

حمله ی Non-pesisten شایع ترین نوع از حملات XSS می باشد. نامگذاری این حملات به این دلیل است که، نفوذگر با تغییر در پاسخ های HTTP سرور حمله را انجام می دهد. در این روش ابتدا نفوذگر نیاز به شناسایی آسیب پذیری XSS درسایت مورد نظردارد، نقاط آسیب پذیر معمولا نقاطی هستند که مستقیما ورودی کاربر را نمایش می دهند. یکی از رایج ترین آنها فیلد جستجو در سایت های وب می باشد،که در آنها رشته ورودی کاربر عینا در نتیجه جستجو منعکس می شود و اکثر آنها کدهای جاوا اسکریپت وHTML را بدون برررسی به اجرا در میاورند.به طور مثال کد زیر را در نظر می گیریم:

….
<form action= “search.php” method=”GET”>
<Input type=”text ” name =”search” >
</form>
….


که وجود این کد URL زیر را تولید می کند .

http://www.example.com/search.php?text=TEXTTOSEARCH



حال نفوذگر با مقداردهی های مشابه حمله DOM-Based XSS حمله خود را انجام می دهد:

http://www.example.com/search.php?text=<img src="http://attacker.com/image.jpg">



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

حمله ی Persistent XSS

حمله Persistent XSS غالبا در سایت های Web Mail و یا سایت های contendriven مشاهده می شود . در این حمله نفوذگر، کدمخرب خود را در قسمتی از سایت که مورد بازدید بسیاری از کاربران دیگر است قرار می دهد . از جمله این قسمت های آسیب پذیر می توان به قسمت ارسال نظرات در وبلاگ ها، wiki ، اتاق های چت، HTML e-mail وبسیاری از نقاط دیگر سایت اشاره کرد.به طور مثال هنگامی که نفوذگر کدمخرب خود (که ممکن است به صورت یک لینک باشد) را در قسمت ارسال نظرات یک سایت وارد می کند .از آنجا که غالبا نظرات در پایگاه داده ها ذخیره می شود . هرکدام از کاربران که به صفحه مربوط به نظرات در سایت وارد شود، لینک مورد نظر را در قسمت نظرات مشاهده می کند. متاسفانه در حملات Persistent XSS و DOM-Based XSSمکانیزم دفاعی قطعی نمی توان پیاده کرد. زیرا در این حملات نفوذگر کاربر را مورد حمله قرار می دهد و ممکن است یک کاربر بی توجه با کلیک بر روی یک لینک آلوده علاوه بر خودش به دیگر کاربرانی که نکات امنیتی را رعایت می کنند، آسیب برساند. بنابراین بهترین راه برای جلوگیری از این حملات افزایش سطح آگاهی کاربران می باشد.


مراجع

ابزارهای شخصی

گویش‌ها
فضاهای نام
عملکردها
گشتن
جعبه‌ابزار