حمله Cross Site Scripting(Attribute) در محیط آزمایشی SKF
آسیب پذیری XSS میتواند در هر جایی از اپلیکیشن رخ دهد.
اطلاعات میتوانند از یک منبع خارجی مانند ورودی کاربر به اپلیکیشن داده شوند و اطلاعات، پتانسیل حمل کد اجرایی
مانند جاوا اسکریپت را داشته باشند. این مساله ذاتا میتواند خطرناک باشد.
هدف از حمله XSS، تزریق کدهای مخرب برای اجرا در صفحات وب است ، شما می توانید برای شنناخت و جلوگیری از این اتفاق از خدمات هکر کلاه سفید استفاده کنید.
این کدها میتوانند مانند کدهایی که از سمت سرور به سمت کلاینت میرسند، اجرا شوند و به همه اطلاعاتی که
کاربر، دسترسی پیدا کنند، مانند کوکی، Sessionو ....
در این قسمت مثال دیگری از حمله XSS را بررسی میکنیم.
برای انجام حمله xss بایستی گامهای زیر را انجام دهیم.
برای انجام این حمله در ابتدا lab مربوطه را از لینک زیر دانلود میکنیم.
https://github.com/blabla1337/skf-labs
در ادامه برای اجرای برنامه بایستی از Docker و یا Python استفاده کنیم.
اجرای برنامه از طریق Docker
در صورتی که بخواهیم از Docker استفاده کنیم بعد از نصب، باید از دستورات زیر برای اجرای lab استفاده کنیم.
اجرای برنامه از طریق Python3
ابتدا اطمینان حاصل کنید که pip و python3 بر روی دستگاه میزبان شما نصب شدهاند.
پس از نصب، به پوشه آزمایشگاهی که میخواهیم تمرین کنیم میرویم؛ به عنوان مثال
“/skf-labs/XSS attribute/” و در آنجا دستور زیر را در محیط CMD ویندوز اجرا میکنیم.
گام نخست
این برنامه یک فیلد ورودی را مطابق تصویر زیر به ما نشان میدهد. از طریق آن
میتوانیم حمله را انجام دهیم.
در گام نخست با وارد کردن مقدار میتوانیم رنگ متن نشان داده شده در صفحه را تغییر دهیم.
اگر بخواهیم نوشته را به رنگ قرمز تغییر دهیم کافی است که در کادر ورودی
"red" بنویسیم و روی دکمه submit کلیک کنیم.
بعد از تایپ کلمه "قرمز"، خروجی به رنگ قرمز نمایش داده خواهد شد.
اگر به سورس برنامه نگاهی بیندازیم، متوجه خواهیم شد که این برنامه ما به ازای ورودی
که دریافت میکند، متغیر رنگ را به درستی رمزگذاری نمیکند. بنابراین
میتوان حمله Cross site scripting (XSS) را انجام داد.
بهرهبرداری
دیدیم که ورودی کاربر به چه شکلی منعکس میشود. بایستی به این
مساله توجه داشته باشیم، کدام یک از کاراکترهای خطرناک HTML رمزگذاری نشده اند و
در چه صورت میتوان فیلتری که بر خروجی اعمال میشود را دور زد. اگر برنامه نویس از
کاراکترهایی از قبیل ><" استفاده میکرد، عبارات به درستی رمزگذاری میشد. بنابراین از
این نقطه ضعف میتوان برای انجام حمله استفاده کرد و قطعه کد زیر را وارد کرد.
در نهایت خروجی به صورت زیر خواهد شد و باعث به کار انداختن Javascript Event handler میشود.