قسمت 5: سری اسکریپت بین سایتی (XSS) – XSS منعکس شده – چگونه کار می کند و چگونه از آن جلوگیری کنیم

Summarize this content to 400 words in Persian Lang
نویسنده: تریکس سایرس
ابزار Waymap Pentesting: اینجا را کلیک کنیدTrixSec Github: اینجا را کلیک کنیدتلگرام TrixSec: اینجا را کلیک کنید
در این بخش از سری اسکریپت بین سایتی (XSS)، ما بر روی آن تمرکز می کنیم XSS منعکس شده استیک آسیب پذیری رایج است که زمانی رخ می دهد که ورودی کاربر بلافاصله در یک برنامه وب بدون اعتبار سنجی یا پاکسازی مناسب به کاربر منعکس شود. XSS منعکس شده می تواند به ویژه خطرناک باشد زیرا مهاجمان می توانند از طریق URL ها یا پارامترهای جستجو از آن سوء استفاده کنند که منجر به اجرای فوری اسکریپت های مخرب می شود.
Reflected XSS چیست؟
اسکریپت بین سایتی منعکس شده (XSS منعکس شده) نوعی حمله XSS است که در آن مهاجم کد جاوا اسکریپت مخرب را از طریق URL، فیلد فرم یا هر ورودی کنترل شده توسط کاربر دیگر به یک صفحه وب تزریق می کند. بر خلاف XSS ذخیره شده، کد تزریق شده در سرور ذخیره نمی شود بلکه بلافاصله توسط سرور منعکس شده و در مرورگر کاربر اجرا می شود.
نکته کلیدی اینجاست که XSS انعکاس یافته غیر پایدار است: بارگذاری در سرور ذخیره نمی شود و تنها زمانی اجرا می شود که صفحه آسیب پذیر با URL یا ورودی مخصوص ساخته شده بارگیری شود. بنابراین، حملات Reflected XSS معمولاً به فریب دادن کاربر برای کلیک کردن روی پیوند مخرب یا ارسال یک فرم متکی هستند.
نحوه عملکرد XSS Reflected
آسیبپذیریهای بازتابشده XSS زمانی رخ میدهند که برنامههای کاربردی وب ورودی کاربر را بدون پاکسازی یا فرار مناسب در صفحه پاسخ وارد کنند. این به مهاجم اجازه میدهد تا اسکریپتهای مخرب را به پارامترهای URL یا فیلدهای فرم تزریق کند، که سپس برنامه منعکس می کند بازگشت به کاربر
در اینجا نحوه عملکرد آن به طور معمول است:
ایجاد یک URL مخرب:
مهاجم یک URL ساخته شده خاص ایجاد می کند که شامل یک بار مخرب در یک پارامتر، مانند search، username، یا ref. به عنوان مثال:
http://example.com/search?query=
ارسال لینک مخرب:
مهاجم این پیوند را برای قربانی ارسال می کند که اغلب به عنوان یک URL قانونی پنهان شده است یا ممکن است آن را در ایمیل ها، پست های رسانه های اجتماعی یا سایر کانال های ارتباطی جاسازی کند.
قربانی روی پیوند کلیک می کند:
هنگامی که قربانی روی پیوند کلیک می کند، اسکریپت مخرب در query پارامتر توسط وب سرور منعکس می شود، به صفحه تزریق می شود و توسط مرورگر قربانی اجرا می شود.
اجرای اسکریپت:
بارگذاری جاوا اسکریپت مهاجم در مرورگر قربانی با همان امتیازات وب سایتی که آنها بازدید می کنند اجرا می شود. این می تواند منجر به عواقب جدی شود، مانند ربودن جلسه، سرقت مدارک، یا فیشینگ.
جنبه مهم Reflected XSS این است که اسکریپت مخرب فقط اجرا می شود یک بار برای هر URL یا پارامتر منحصر به فرد، بر خلاف ذخیره شده XSS، که بر هر کاربری که به صفحه دسترسی دارد تأثیر می گذارد.
نمونه ای از XSS منعکس شده
بیایید نمونه ای از نحوه سوء استفاده یک مهاجم از آسیب پذیری XSS منعکس شده را مرور کنیم:
سناریو:
یک مهاجم متوجه می شود که یک ویژگی جستجو در یک وب سایت آن را پاکسازی نمی کند query پارامتر قبل از بازتاب آن به صفحه.
مهاجم یک URL مخرب ایجاد می کند:
http://example.com/search?query=
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
مهاجم لینک را برای قربانی می فرستد، او در حالی که در وب سایت است روی آن کلیک می کند.
سرور URL را پردازش می کند و آن را منعکس می کند query پارامتر را بدون پاکسازی صفحه به صفحه بازگردانید.
اکنون صفحه شامل موارد زیر است:
نتایج جستجو برای: alert(‘XSS’)
Enter fullscreen mode
Exit fullscreen mode
When the victim’s browser loads the page, the کد اجرا می شود و باعث می شود مرورگر یک پیام هشدار نمایش دهد. در یک حمله واقعی، این می تواند برای سرقت کوکی ها یا انجام سایر اقدامات مخرب استفاده شود.
نحوه جلوگیری از بازتاب XSS
جلوگیری از انعکاس XSS به چندین لایه دفاعی نیاز دارد که در درجه اول بر روی آنها تمرکز دارد اعتبار سنجی، رمزگذاری و پاکسازی ورودی های کاربر قبل از بازتاب آنها به کاربر. در زیر اقدامات کلیدی برای جلوگیری از آسیب پذیری های Reflected XSS آورده شده است:
1. رمزگذاری URL
یکی از موثرترین راهها برای کاهش Reflected XSS استفاده از آن است رمزگذاری URL برای تمام ورودی های کاربر منعکس شده در URL. رمزگذاری URL کاراکترهای بالقوه خطرناک را به قالبی امن و رمزگذاری شده تبدیل می کند. به عنوان مثال، تبدیل می شود %3Cscript%3E.
هنگام مدیریت پارامترها در URL ها، همیشه اطمینان حاصل کنید که هر ورودی کاربر قبل از درج در HTML صفحه به درستی کدگذاری شده است.
مثال:
Your search results for: %3Cscript%3Ealert(‘XSS’)%3C/script%3E
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
به این ترتیب، اسکریپت مخرب به جای کد اجرایی به عنوان متن ساده در نظر گرفته می شود.
2. اعتبار سنجی و پاکسازی ورودی مناسب
همیشه تایید و ضدعفونی کنید تمام ورودی های کاربر قبل از استفاده از آن این یعنی:
لیست سفید ورودی های مورد انتظار هرجا که ممکن باشد. به عنوان مثال، اگر یک پارامتر جستجو فقط باید کاراکترهای الفبایی را بپذیرد، فقط آنها را مجاز کنید.
هر ورودی حاوی نویسههای غیرمنتظره را رد کنید (مثلاً <، >، یا کنترل کننده رویداد جاوا اسکریپت مانند onload، onerrorو غیره).
فرار کنید کاراکترهایی که معنای خاصی در HTML یا جاوا اسکریپت دارند تا اطمینان حاصل شود که به عنوان متن ساده و نه کد اجرایی در نظر گرفته می شوند.
به عنوان مثال، ورودی خطرناک زیر:
alert(‘XSS’)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
باید ضد عفونی شود:
<script>alert(‘XSS’)</script>
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
3. خطمشی امنیت محتوا (CSP)
اجرای قوی خط مشی امنیت محتوا (CSP) یک دفاع قدرتمند در برابر حملات XSS است. CSP یک ویژگی مرورگر است که به جلوگیری از اجرای اسکریپت های مخرب با کنترل منابعی که محتوا از آنها می تواند بارگذاری شود کمک می کند.
یک CSP می تواند اسکریپت های درون خطی را مسدود کند، منابع اسکریپت را به دامنه های قابل اعتماد محدود کند، و از اجرای کدهای مخرب حتی اگر از بار مهاجم منعکس شود، جلوگیری کند.
مثالی از یک سربرگ اصلی CSP:
Content-Security-Policy: script-src ‘self’ https://trusted-source.com;
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این امر اجرای اسکریپت را فقط به کسانی که از همان مبدأ هستند محدود می کند (‘self’) یا منبع مطمئن مشخص شده (https://trusted-source.com).
4. HttpOnly و کوکی های امن
در حالی که Reflected XSS در درجه اول اسکریپت های سمت کلاینت را هدف قرار می دهد و دفاع XSS را با HttpOnly و امن flags برای کوکی ها لایه دیگری از امنیت را اضافه می کند. را HttpOnly flag تضمین میکند که کوکیها از طریق جاوا اسکریپت قابل دسترسی نیستند و از سرقت کوکیهای جلسه از مهاجمان جلوگیری میکند، حتی اگر یک آسیبپذیری XSS مورد سوء استفاده قرار گیرد.
5. استفاده از فایروال های کاربردی وب (WAF)
استقرار a فایروال برنامه های کاربردی وب (WAF) می تواند به شناسایی و مسدود کردن الگوهای حمله رایج XSS در زمان واقعی کمک کند. یک WAF می تواند به عنوان یک فیلتر عمل کند، ترافیک ورودی را بررسی کرده و درخواست هایی که حاوی بارهای مشکوک یا مخرب هستند را مسدود کند.
نتیجه گیری
Reflected XSS یک نگرانی امنیتی مهم است که در صورت عدم کنترل می تواند عواقب فوری و ویرانگری داشته باشد. توسعه دهندگان وب با درک نحوه عملکرد و اعمال اقدامات پیشگیرانه مانند اعتبار سنجی ورودی، رمزگذاری خروجی، CSP و استفاده از کوکی های امن، می توانند احتمال حملات موفقیت آمیز را تا حد زیادی کاهش دهند.
~Trixsec
نویسنده: تریکس سایرس
ابزار Waymap Pentesting: اینجا را کلیک کنید
TrixSec Github: اینجا را کلیک کنید
تلگرام TrixSec: اینجا را کلیک کنید
در این بخش از سری اسکریپت بین سایتی (XSS)، ما بر روی آن تمرکز می کنیم XSS منعکس شده استیک آسیب پذیری رایج است که زمانی رخ می دهد که ورودی کاربر بلافاصله در یک برنامه وب بدون اعتبار سنجی یا پاکسازی مناسب به کاربر منعکس شود. XSS منعکس شده می تواند به ویژه خطرناک باشد زیرا مهاجمان می توانند از طریق URL ها یا پارامترهای جستجو از آن سوء استفاده کنند که منجر به اجرای فوری اسکریپت های مخرب می شود.
Reflected XSS چیست؟
اسکریپت بین سایتی منعکس شده (XSS منعکس شده) نوعی حمله XSS است که در آن مهاجم کد جاوا اسکریپت مخرب را از طریق URL، فیلد فرم یا هر ورودی کنترل شده توسط کاربر دیگر به یک صفحه وب تزریق می کند. بر خلاف XSS ذخیره شده، کد تزریق شده در سرور ذخیره نمی شود بلکه بلافاصله توسط سرور منعکس شده و در مرورگر کاربر اجرا می شود.
نکته کلیدی اینجاست که XSS انعکاس یافته غیر پایدار است: بارگذاری در سرور ذخیره نمی شود و تنها زمانی اجرا می شود که صفحه آسیب پذیر با URL یا ورودی مخصوص ساخته شده بارگیری شود. بنابراین، حملات Reflected XSS معمولاً به فریب دادن کاربر برای کلیک کردن روی پیوند مخرب یا ارسال یک فرم متکی هستند.
نحوه عملکرد XSS Reflected
آسیبپذیریهای بازتابشده XSS زمانی رخ میدهند که برنامههای کاربردی وب ورودی کاربر را بدون پاکسازی یا فرار مناسب در صفحه پاسخ وارد کنند. این به مهاجم اجازه میدهد تا اسکریپتهای مخرب را به پارامترهای URL یا فیلدهای فرم تزریق کند، که سپس برنامه منعکس می کند بازگشت به کاربر
در اینجا نحوه عملکرد آن به طور معمول است:
-
ایجاد یک URL مخرب:
- مهاجم یک URL ساخته شده خاص ایجاد می کند که شامل یک بار مخرب در یک پارامتر، مانند
search
،username
، یاref
. به عنوان مثال:
http://example.com/search?query=
- مهاجم یک URL ساخته شده خاص ایجاد می کند که شامل یک بار مخرب در یک پارامتر، مانند
-
ارسال لینک مخرب:
- مهاجم این پیوند را برای قربانی ارسال می کند که اغلب به عنوان یک URL قانونی پنهان شده است یا ممکن است آن را در ایمیل ها، پست های رسانه های اجتماعی یا سایر کانال های ارتباطی جاسازی کند.
-
قربانی روی پیوند کلیک می کند:
- هنگامی که قربانی روی پیوند کلیک می کند، اسکریپت مخرب در
query
پارامتر توسط وب سرور منعکس می شود، به صفحه تزریق می شود و توسط مرورگر قربانی اجرا می شود.
- هنگامی که قربانی روی پیوند کلیک می کند، اسکریپت مخرب در
-
اجرای اسکریپت:
- بارگذاری جاوا اسکریپت مهاجم در مرورگر قربانی با همان امتیازات وب سایتی که آنها بازدید می کنند اجرا می شود. این می تواند منجر به عواقب جدی شود، مانند ربودن جلسه، سرقت مدارک، یا فیشینگ.
جنبه مهم Reflected XSS این است که اسکریپت مخرب فقط اجرا می شود یک بار برای هر URL یا پارامتر منحصر به فرد، بر خلاف ذخیره شده XSS، که بر هر کاربری که به صفحه دسترسی دارد تأثیر می گذارد.
نمونه ای از XSS منعکس شده
بیایید نمونه ای از نحوه سوء استفاده یک مهاجم از آسیب پذیری XSS منعکس شده را مرور کنیم:
سناریو:
یک مهاجم متوجه می شود که یک ویژگی جستجو در یک وب سایت آن را پاکسازی نمی کند query
پارامتر قبل از بازتاب آن به صفحه.
- مهاجم یک URL مخرب ایجاد می کند:
http://example.com/search?query=
-
مهاجم لینک را برای قربانی می فرستد، او در حالی که در وب سایت است روی آن کلیک می کند.
-
سرور URL را پردازش می کند و آن را منعکس می کند
query
پارامتر را بدون پاکسازی صفحه به صفحه بازگردانید. -
اکنون صفحه شامل موارد زیر است:
نتایج جستجو برای: alert('XSS')
- When the victim’s browser loads the page, the
کد اجرا می شود و باعث می شود مرورگر یک پیام هشدار نمایش دهد. در یک حمله واقعی، این می تواند برای سرقت کوکی ها یا انجام سایر اقدامات مخرب استفاده شود.
نحوه جلوگیری از بازتاب XSS
جلوگیری از انعکاس XSS به چندین لایه دفاعی نیاز دارد که در درجه اول بر روی آنها تمرکز دارد اعتبار سنجی، رمزگذاری و پاکسازی ورودی های کاربر قبل از بازتاب آنها به کاربر. در زیر اقدامات کلیدی برای جلوگیری از آسیب پذیری های Reflected XSS آورده شده است:
1. رمزگذاری URL
یکی از موثرترین راهها برای کاهش Reflected XSS استفاده از آن است رمزگذاری URL برای تمام ورودی های کاربر منعکس شده در URL. رمزگذاری URL کاراکترهای بالقوه خطرناک را به قالبی امن و رمزگذاری شده تبدیل می کند. به عنوان مثال، تبدیل می شود
%3Cscript%3E
.
هنگام مدیریت پارامترها در URL ها، همیشه اطمینان حاصل کنید که هر ورودی کاربر قبل از درج در HTML صفحه به درستی کدگذاری شده است.
مثال:
Your search results for: %3Cscript%3Ealert('XSS')%3C/script%3E
به این ترتیب، اسکریپت مخرب به جای کد اجرایی به عنوان متن ساده در نظر گرفته می شود.
2. اعتبار سنجی و پاکسازی ورودی مناسب
همیشه تایید و ضدعفونی کنید تمام ورودی های کاربر قبل از استفاده از آن این یعنی:
- لیست سفید ورودی های مورد انتظار هرجا که ممکن باشد. به عنوان مثال، اگر یک پارامتر جستجو فقط باید کاراکترهای الفبایی را بپذیرد، فقط آنها را مجاز کنید.
- هر ورودی حاوی نویسههای غیرمنتظره را رد کنید (مثلاً
<
،>
، یا کنترل کننده رویداد جاوا اسکریپت مانندonload
،onerror
و غیره). - فرار کنید کاراکترهایی که معنای خاصی در HTML یا جاوا اسکریپت دارند تا اطمینان حاصل شود که به عنوان متن ساده و نه کد اجرایی در نظر گرفته می شوند.
به عنوان مثال، ورودی خطرناک زیر:
alert('XSS')
باید ضد عفونی شود:
<script>alert('XSS')</script>
3. خطمشی امنیت محتوا (CSP)
اجرای قوی خط مشی امنیت محتوا (CSP) یک دفاع قدرتمند در برابر حملات XSS است. CSP یک ویژگی مرورگر است که به جلوگیری از اجرای اسکریپت های مخرب با کنترل منابعی که محتوا از آنها می تواند بارگذاری شود کمک می کند.
یک CSP می تواند اسکریپت های درون خطی را مسدود کند، منابع اسکریپت را به دامنه های قابل اعتماد محدود کند، و از اجرای کدهای مخرب حتی اگر از بار مهاجم منعکس شود، جلوگیری کند.
مثالی از یک سربرگ اصلی CSP:
Content-Security-Policy: script-src 'self' https://trusted-source.com;
این امر اجرای اسکریپت را فقط به کسانی که از همان مبدأ هستند محدود می کند ('self'
) یا منبع مطمئن مشخص شده (https://trusted-source.com
).
4. HttpOnly و کوکی های امن
در حالی که Reflected XSS در درجه اول اسکریپت های سمت کلاینت را هدف قرار می دهد و دفاع XSS را با HttpOnly و امن flags برای کوکی ها لایه دیگری از امنیت را اضافه می کند. را HttpOnly flag تضمین میکند که کوکیها از طریق جاوا اسکریپت قابل دسترسی نیستند و از سرقت کوکیهای جلسه از مهاجمان جلوگیری میکند، حتی اگر یک آسیبپذیری XSS مورد سوء استفاده قرار گیرد.
5. استفاده از فایروال های کاربردی وب (WAF)
استقرار a فایروال برنامه های کاربردی وب (WAF) می تواند به شناسایی و مسدود کردن الگوهای حمله رایج XSS در زمان واقعی کمک کند. یک WAF می تواند به عنوان یک فیلتر عمل کند، ترافیک ورودی را بررسی کرده و درخواست هایی که حاوی بارهای مشکوک یا مخرب هستند را مسدود کند.
نتیجه گیری
Reflected XSS یک نگرانی امنیتی مهم است که در صورت عدم کنترل می تواند عواقب فوری و ویرانگری داشته باشد. توسعه دهندگان وب با درک نحوه عملکرد و اعمال اقدامات پیشگیرانه مانند اعتبار سنجی ورودی، رمزگذاری خروجی، CSP و استفاده از کوکی های امن، می توانند احتمال حملات موفقیت آمیز را تا حد زیادی کاهش دهند.
~Trixsec