حمله Cross-site script که به نام XSS نیز شناخته میشود، یک آسیبپذیری در مقوله امنیت وب است که برای حل آن شما به یک متخصص هک و امنیت نیاز دارید. در این نوع حمله، هدف مهاجم این است که، با درج کد مخرب در یک
صفحه وب یا برنامه وب، اسکریپت های مخرب را در مرورگر وب قربانی اجرا کند. حمله
واقعی هنگامی اتفاق می افتد که قربانی از صفحه وب یا برنامه وبای که کد مخرب را
اجرا می کند بازدید کند. برنامه وب وسیله ای برای تحویل اسکریپت مخرب به مرورگر کاربر
می شود.
این حمله در صورتی رخ میدهد که دادههای وارد شده توسط حمله کننده یا هکر، بدون
فیلتر شدن به کاربر تحویل داده شود. این دادهها میتوانند کدهای جاوا اسکریپتی باشند
که در سمت مرورگر کاربر اجرا شده و کارهای مختلفی میتواند برای هکر انجام دهد.
برای مطالعه بیشتر درباره این حمله میتوانید به مقاله حملات XSS رجوع کنید.
برای انجام این حمله ابتدا بایستی lab مربوطه را از لینک زیر دانلود کنیم.
https://github.com/blabla1337/skf-labs
در ادامه برای اجرای برنامه بایستی از Docker و یا Python استفاده کرد.
اجرای برنامه از طریق Docker
در صورتی که بخواهیم از Docker استفاده کنیم بعد از نصب باید از کامند های زیر برای اجرای lab استفاده کنیم.
اجرای برنامه از طریق Python3
ابتدا اطمینان حاصل کنید که pip و python3 بر روی دستگاه میزبان شما نصب شدهاند.
پس از نصب، به پوشه آزمایشگاهی که میخواهیم تمرین کنیم میرویم؛ به عنوان مثال
“/skf-labs/XSS/” و در آنجا کامند زیر را در محیط CMD ویندوز اجرا میکنیم.
در صورتی که بعد از نصب پایتون ورژن 3 متوجه شدید که نسخه pip نصب شده از ورژن پایین تری است، میتوان از کامند زیر برای به رورزرسانی این نسخه استفاده کرد.
گام نخست:
این برنامه یک فیلد ورودی را مطابق تصویر زیر به ما نشان میدهد و از طریق آن میتوانیم
تزریق را انجام دهیم. در ابتدا یک آزمایش معمولی را انجام میدهیم و یک رشته را تزریق میکنیم.
بعد از تایپ کلمه "foobar" در داخل فیلد، تزریق این رشته انجام میشود و خروجی به صورت زیر نمایش داده میشود.
در زیر میتوان دید، در بخش intercept proxy، درخواست ما توسط برنامه ساخته شده است.
در سورس برنامه میتوان دید که این برنامه ورودی کاربر را میگیرد و از یک متغیر template برای نمایش آن استفاده میکند.
بهره برداری
حال ما دیدیم که، ورودی کاربر در کجای برنامه منعکس میشود. ما برای اینکه بتوانیم
حمله XSS را انجام بدهیم، از رشته زیر به عنوان ورودی استفاده کردهایم. بنابراین در
ابتدا، یک باگ یا آسیب پذیری را پیدا کرده سپس با تزریق کدهای خود آن را اکسپلویت میکنیم.
همانطور که مشاهده میکنید این برنامه هیچ یک از کاراکترهای خطرناک HTML از
blacklist را رمزگذاری نکرده است. بنابراین چون در کدهای HTML، هیچ فیلتری بر روی
خروجی اعمال نمیشود. با وارد کردن قطعه کد زیر را میتوانیم مقدار "123" را ببینیم. به
دلیل اینکه، یک تگ <script> استفاده شده است، مرورگر مقادیر داخل آن را با استفاده از
موتور جاوا اسکریپت خود execute خواهد کرد و در نتیجه به عنوان کاربر یک پیغام به
صورت پاپ آپ حاوی مقدار "123" را خواهیم دید.
اگر از مرورگر کروم استفاده کنید به دلیل تنظیماتی XSS Auditor برای ایمنی در مقابل
حملات XSS صورت گرفته است، کار نمیکند بنابراین از مرورگر Firefox استفاده میکنیم.
در Firefox میتوانیم هشدار XSS را مشاهده کنیم و حمله XSS را با موفقیت انجام دادهایم.
[1] owasp.org
[2] portswigger.net