حمله Cross Site Scripting(XSS) در محیط آزمایشی SKF

تاریخ انتشار : 1399/09/11 | نویسنده : Anonymous (تایید نشده)

حمله Cross Site Scripting(XSS) در محیط آزمایشی SKF

 

 

 

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

صفحه وب یا برنامه وب، اسکریپت های مخرب را در مرورگر وب قربانی اجرا کند. حمله

واقعی هنگامی اتفاق می افتد که قربانی از صفحه وب یا برنامه وب‌ای که کد مخرب را

اجرا می کند بازدید کند. برنامه وب وسیله ای برای تحویل اسکریپت مخرب به مرورگر کاربر

می شود.

این حمله در صورتی رخ میدهد که داده‌های وارد شده توسط حمله کننده یا هکر، بدون

فیلتر شدن به کاربر تحویل داده شود. این داده‌ها می‌توانند کدهای جاوا اسکریپتی باشند

که در سمت مرورگر کاربر اجرا شده و کارهای مختلفی می‌تواند برای هکر انجام دهد.

برای مطالعه بیشتر درباره این حمله میتوانید به مقاله حملات XSS  رجوع کنید.

 

برای انجام این حمله ابتدا بایستی lab مربوطه را از لینک زیر دانلود کنیم.

 

https://github.com/blabla1337/skf-labs

 

در ادامه برای اجرای برنامه بایستی از Docker و یا Python استفاده کرد.

اجرای برنامه از طریق Docker

در صورتی که بخواهیم از Docker استفاده کنیم بعد از نصب باید از کامند های زیر برای اجرای lab استفاده کنیم.

rnpg-cross-1

 

 

 

rnpg-cross-2

 

اجرای برنامه از طریق Python3

 

ابتدا اطمینان حاصل کنید که pip و python3 بر روی دستگاه میزبان شما نصب شده‌اند.

پس از نصب، به پوشه آزمایشگاهی که میخواهیم تمرین کنیم میرویم؛ به عنوان مثال

“/skf-labs/XSS/” و در آنجا کامند زیر را در محیط CMD ویندوز اجرا میکنیم.

 

cross-rnpg-3

 

 

 

cross-rnpg-4

 

در صورتی که بعد از نصب پایتون ورژن 3 متوجه شدید که نسخه pip نصب شده از ورژن پایین تری است، میتوان از کامند زیر برای به رورزرسانی این نسخه استفاده کرد.

 

 

rnpg-cross-5

 

گام نخست:

 

این برنامه یک فیلد ورودی را مطابق تصویر زیر به ما نشان میدهد و از طریق آن میتوانیم

تزریق را انجام دهیم. در ابتدا یک آزمایش معمولی را انجام میدهیم و یک رشته را تزریق میکنیم.

 

rnpg-cross-6

 

بعد از تایپ کلمه "foobar" در داخل فیلد، تزریق این رشته انجام میشود و خروجی به صورت زیر نمایش داده میشود.

 

rnpg-cross-7

 

در زیر میتوان دید، در بخش intercept proxy، درخواست ما توسط برنامه ساخته شده است.

 

cross-rnpg-codes

 

در سورس برنامه میتوان دید که این برنامه ورودی کاربر را میگیرد و از یک متغیر template برای نمایش آن استفاده میکند.

 

rnpg-source-9

 

بهره برداری

 

حال ما دیدیم که، ورودی کاربر در کجای برنامه منعکس میشود. ما برای اینکه بتوانیم

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

ابتدا، یک باگ یا آسیب پذیری را پیدا کرده سپس با تزریق کدهای خود آن را اکسپلویت می‌کنیم.

 

rnpg-cross-10

 

 

 

cross-rnpg

 

همانطور که مشاهده میکنید این برنامه هیچ یک از کاراکترهای خطرناک HTML از

blacklist را رمزگذاری نکرده است. بنابراین چون در کدهای HTML، هیچ فیلتری بر روی

خروجی اعمال نمی‌شود. با وارد کردن قطعه کد زیر را میتوانیم مقدار "123"  را ببینیم. به

دلیل اینکه، یک تگ <script> استفاده شده است، مرورگر مقادیر داخل آن را با استفاده از

موتور جاوا اسکریپت خود  execute خواهد کرد و در نتیجه به عنوان کاربر یک پیغام به

صورت پاپ آپ حاوی مقدار "123" را خواهیم دید.

 

rnpg-cross-12

 

 

 

 

cross-rnpg-code

 

اگر از مرورگر کروم استفاده کنید به دلیل تنظیماتی XSS Auditor برای ایمنی در مقابل

حملات XSS صورت گرفته است، کار نمیکند بنابراین از مرورگر Firefox استفاده میکنیم.

در Firefox میتوانیم هشدار XSS را مشاهده کنیم و حمله XSS را با موفقیت انجام داده‌ایم.

 

cross-rnpg-14

 

[1] owasp.org

[2] portswigger.net

[3] owasp-skf.gitbook.io