در این مقاله آموزشی وبسایت امنیت دیجیتال کنشتک به توضیح آسیبپذیری XSS میپردازیم.
آسیبپذیری XSS چیست
XSS کوتاه شده عبارت Cross Site Scripting است. این نوع از آسیبپذیری به خرابکار امکان تزریق کدهای جاوا اسکریپت روی صفحه مشخصی از وبسایت را میدهد.
جاوا اسکریپت یک زبان برنامه نویسی سمت کلاینت است. بنابراین هنگامی که کد جاوا اسکریپت اجرا میشود، روی مرورگر کاربری اجرا خواهد شد که از آن صفحه وبسایت بازدید میکند، پس روی سرور وبسایت اجرا نخواهد شد.
با این توضیحات اگر خرابکاری روی یک صفحه مشخصی از وبسایت کد جاوا اسکریپت مخرب تزریق کرده باشد، روی مرورگر کاربری اجرا خواهد شد که از آن صفحه وبسایت بازدید میکند.
سه نوع اصلی آسیبپذیری XSS وجود دارد:
- Presistent/Stored XSS : کد جاوا اسکریپت مخرب در پایگاه داده وبسایت ذخیره میشود. بنابراین هر کاربری در هر زمانی که از آن صفحه وبسایت بازدید کند، آن کد جاوا اسکریپت روی مرورگر کاربر اجرا خواهد شد.
- Reflected XSS : کد جاوا اسکریپت مخرب زمانی اجرا میشود که کاربر روی لینک مشخصی که خرابکار برای وی ارسال کرده است، کلیک کند.
- DOM based XSS : کد جاوا اسکریپت مخرب روی DOM ظاهر خواهد شد. این نوع از XSS میتواند خطرناک باشد. برخی وب سرورها بعضی فیلترها و اسکنهای امنیتی برای بررسی XSS را اجرا میکنند، اما نمیتوانند این نوع را پیدا کنند زیرا XSS بر پایه DOM هیچ ارتباطی با سرور ندارد، همانطور که گفتیم بر پایه DOM است.
چگونه آسیبپذیری XSS روی وبسایتمان را تشخیص دهیم ؟
برای پیدا کردن این آسیبپذیری باید کد جاوا اسکریپت را روی صفحه وبسایت تزریق کنیم. به طور مشخص این کد را میتوان در Text boxها و URL هایی مانند http://ExampleWebsite.com/page.php?something=something وارد کرد.
برای مثال در آسیبپذیری Reflected XSS میتوان کد جاوا اسکریپت را در آدرس URL وارد کرد :
http://ExampleWebsite.com/page.php?something=<script>alert("XSS")</script>
اگر با استفاده از نمونه آدرس بالا، روی صفحه وبسایتتان باکسی با عبارت XSS ظاهر شد، یعنی کد جاوا اسکریپت اجرا شده است و وبسایت شما به این نوع XSS، آسیبپذیر است. هر چند مرورگرهای محبوب و به روزی مانند گوگل کروم، از بارگذاری صفحات وب اینچنینی خودداری میکنند و به کاربر اطلاع میدهند که روی این صفحه کد غیرمعمول تشخیص داده شده است. در نظر داشته باشید ممکن است هیچ عبارت XSS ظاهر نشود، اما خطایی در صفحه مشاهده کنید.
مثال دیگر: برای امتحان Stored XSS کافی است کد <script>alert(“XSS”)</script> را وارد قسمت دیدگاهها کنید و روی دکمه submit کلیک کنید. اگر جوابی نگرفتید حروف script را به صورت تصادفی بزرگ و کوچک وارد کنید، برای مثال : <sCriPt>alert(“XSS”)</scRIpT> و دوباره امتحان کنید. اگر عبارت XSS را مشاهده کردید، یعنی آن صفحه وبسایت به این نوع XSS آسیبپذیر و آن کد جاوا اسکریپت در پایگاه داده ذخیره شده است. بنابراین هر کاربر دیگری که از آن صفحه بازدید کنند، عبارت XSS را مشاهده خواهد کرد.
قابل ذکر است که تنها از تگ script برای پیدا کردن آسیبپذیری XSS استفاده نمیشود. برای مثال میتوان از تگهای body, img, link, input, frame, div و table نیز استفاده کرد.
[…] این مطلب قصد داریم راجع به آسیب پذیری XSS و راههای محافظت در برابر آن را بنویسیم. با یک مثال […]
[…] XSS : هدف از این حمله تزریق کد است تا روی مرورگر وب کلاینت اجرا شود. […]