منو سایت

دوباره به حملات XSS نگاه کنید

 تاریخ انتشار :
/
  اخبار استارتاپ
دوباره به حملات XSS نگاه کنید

دوباره به حملات XSS نگاه کنید

هکرهای حمله سایبری یک اسکریپت را از طریق یک وب سایت تزریق می کنند ([۱]XSS) کدهای مخرب را به یک فرم وب یا پیوند به یک برنامه وب تزریق می کند. این کد مخرب که به زبان برنامه نویسی مانند جاوا اسکریپت یا PHP نوشته شده است، بسیاری از اقدامات مخرب را انجام می دهد، مانند هک وب سایتی که می خواهید آپلود کنید و سرقت رمزهای عبور یا سایر اطلاعات کاربری کاربر.

وب سایت های امروزی معمولاً هنگام بارگذاری ایجاد می شوند و کدهایی را در خود مرورگر اجرا می کنند. حملات XSS نیز از این ویژگی در وب سایت ها استفاده می کنند. در نتیجه، جلوگیری از چنین حملاتی آسان نیست.

حملات XSS چگونه اجرا می شوند؟

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

حملات XSS

به طور کلی نحوه کار صفحات وب به شرح زیر است:

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

البته در این توضیح ساده انگارانه برخی از جنبه های صفحات وب امروزی نادیده گرفته شده است. برای مثال، صفحات وب امروزی معمولاً پویا هستند. بنابراین کد HTML ثابت و ایستا برای همه بازدیدکنندگان وب سایت نمایش داده نمی شود و این کد به صورت پویا و زنده بر اساس اطلاعات موجود در پایگاه داده سرور در هنگام درخواست مرورگر تولید می شود. صفحات دریافت شده توسط مرورگر از سرور معمولا به اطلاعات ارسال شده در درخواست مرورگر بستگی دارد. این اطلاعات می تواند به عنوان یک پارامتر در URL مورد استفاده برای دسترسی به وب سایت گنجانده شود. وب‌سایت‌ها نه تنها شامل کدهای HTML و CSS هستند که نحوه نمایش و تجزیه و تحلیل متن و گرافیک را نشان می‌دهند، بلکه کدهای اجرایی را نیز شامل می‌شوند. این کدهای اجرایی به زبان های برنامه نویسی و اغلب در جاوا اسکریپت نوشته می شوند. کارشناسان امنیتی بر این باورند که ترکیب داده ها، فایل های نمایشی و کدهای اجرایی به این روش یکی از تهدیدات اصلی امنیت وب است.

 

در حمله XSS، هکرها از این تعامل بین کاربر و وب سایت برای اجرای کدهای مخرب بر روی سیستم کاربر استفاده می کنند. برای مثال URL زیر را در نظر بگیرید:

https://www.google.com/search?q=CSO+online

هنگامی که این آدرس را در نوار آدرس مرورگر خود وارد کردید، نتایج جستجوی عبارت CSO Online در گوگل را مشاهده خواهید کرد، گویی عبارت CSO Online را در نوار جستجوی مرورگر یا صفحه اصلی وب سایت گوگل تایپ کرده اید. همچنین متوجه خواهید شد که این عبارت در بخش های مختلف صفحه از جمله نوار جستجو در بالای صفحه ظاهر می شود.

فرض کنید به جای عبارت ساده و امن CSO Online، آدرسی که تایپ می کنید حاوی کدهای مخرب جاوا اسکریپت باشد، مانند:

https://www.google.com/search؟

در اینجا doEvil () به طور فرضی با یک تابع مخرب جایگزین می شود. در این صورت گوگل به جای نمایش عبارت CSO Online در صفحه حاصل از این آدرس، باید از کد مخرب ذکر شده در هنگام پردازش صفحه استفاده کند. به این ترتیب این اسکریپت مخرب در مرورگر شما ایجاد می شود و عواقب ناخوشایندی در پی خواهد داشت. البته گوگل تدابیر امنیتی ویژه ای را برای استخدام متخصصان امنیت وب برای جلوگیری از چنین حملاتی اجرا کرده است، اما همه وب سایت ها چنین قدرتی ندارند. بنابراین گاهی اوقات این حملات موفقیت آمیز هستند.

HTML

حملات XSS

انواع حملات XSS شامل حملات منعکس شده، حملات مبتنی بر DOM و حملات ذخیره شده است. در ادامه به بررسی این حملات خواهیم پرداخت.

حملات گزارش شده: حمله ای که قبلا توضیح دادیم حمله دفعی یا ناپایدار نامیده می شود. در این حملات، کد مخرب جاوا اسکریپت معمولاً از مرورگر قربانی به گوگل ارسال می شود و سپس به فایل اجرایی بازتاب می شود و به طور دائم در سرورهای گوگل ذخیره نمی شود. چنین حملاتی معمولاً کلاهبرداری های فیشینگ در نظر گرفته می شوند. در این حملات یک لینک مخرب از طریق ایمیل یا پیامک برای قربانی ارسال می شود.

حملات مبتنی بر HOME: این حملات نوع خاصی از حملات منعکس شده هستند و بر اساس مدل شیء سند (DOM) نامگذاری می شوند.[۲]) کدام API استاندارد است. این API نحوه ایجاد صفحات وب از کد HTML یا جاوا اسکریپت را مشخص می کند. حملات مبتنی بر DOM معمولاً مشابه حملات منعکس شده ای هستند که قبلاً در مورد آنها صحبت کردیم. البته در این حملات، کدهای مخرب به سرور ارسال نمی شود، بلکه به عنوان پارامتری از یک تابع جاوا اسکریپت که در خود مرورگر اجرا می شود، به طوری که مکانیسم های امنیتی سرور قادر به محافظت از کاربران نیست.

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

آسیب پذیری XSS

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

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

آسیب پذیری های XSS

فیدهای XSS

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

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

جلوگیری و محافظت در برابر حملات XSS

اگر مدیر یا طراح یک برنامه وب یا وب سایت تعاملی هستید، مهم ترین تکنیک هایی که می توانید برای مقابله با حملات تزریق اسکریپت استفاده کنید عبارتند از:

  • ورودی های پاک: راه طبیعی و اساسی برای جلوگیری از ارسال کدهای مخرب، نپذیرفتن اسکریپت ها به عنوان ورودی است. همچنین می‌توانید ورودی‌ها را به روش‌های خاصی فیلتر کنید، اما انجام این کار در عمل آسان نیست، زیرا برخی از کدهای اجرایی با دقت و ماهرانه طراحی شده می‌توانند از فیلترها عبور کنند. یکی از راه های مقابله با این موضوع استفاده از لیست سفید به جای لیست سیاه است. به عنوان مثال، به جای تلاش برای فیلتر کردن همه کدهای مخرب، برنامه را به گونه ای بنویسید که داده ها فقط در فرمت های مشخص شده (به عنوان مثال شماره تلفن، آدرس ایمیل) باشند. و غیره) به دست آوردن.
  • رد خروجی: در این روش این مشکل از منظری متفاوت مورد توجه قرار می گیرد. اگر یک برنامه وب داده های وارد شده توسط کاربر را به یک صفحه وب ارسال می کند، آن داده ها باید به خوبی فیلتر شوند تا به کد اجرایی در صفحه وب تبدیل نشوند. اگر کاربر کد تگ HTML را به عنوان ورودی وارد کند، برنامه شما باید از کاراکترهای فرار استفاده کند تا این تگ ها به صورت متن در صفحه خروجی ایجاد شده ظاهر شوند و در کد HTML صفحه ادغام نشوند.
  • استاندارد امنیت محتوا (CSP[۳]): CSP همچنین از روش لیست سفید استفاده می کند و فقط متن را به عنوان ورودی می پذیرد نه کد اجرایی. در واقع، برنامه وب شما هرگز نباید هیچ کدی را اجرا کند مگر اینکه شما آن را مجاز کرده باشید.

تست XSS

تست آسیب‌پذیری XSS یکی از مهم‌ترین اقدامات امنیتی برای برنامه‌های کاربردی وب است و پروژه OWASP راهنمایی جامعی در این زمینه ارائه می‌کند. این پروژه همچنین دارای منبعی پر از کدهای حمله XSS است که می تواند فیلترهای امنیتی خاص XSS را دور بزند. این منابع برای انجام تست های نفوذ بسیار مفید هستند.

تست XSS

مقایسه XSS و CSRF

تقلب در وب سایت (CSRF)[۴]) این یکی از حملاتی است که کاربر را مانند مرورگر XSS هدف قرار می دهد. تفاوت اصلی بین این دو حمله این است که CSRF از جلسه احراز هویت کاربر استفاده می کند (به عنوان مثال، زمانی که کاربر به حساب بانکی خود وارد می شود)، اما برای شروع XSS نیازی به جلسه احراز هویت ندارد.

فرض کنید همزمان وارد حساب توییتر و حساب بانکی آنلاین خود شده اید و روی پیوند توییتر مانند تصویر زیر کلیک می کنید:

http://www.yourbank.com/sendmoney,do?from=you&to=attacker&amount=5000

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

حملات شناخته شده و جدید XSS

یکی از اولین و محبوب ترین حملات تزریق اسکریپت در این سایت در سال 2005 اتفاق افتاد، زمانی که یکی از کاربران MySpace به نام Samy Kamkar متوجه شد که می تواند کد جاوا اسکریپت را به حساب خود به هر کسی که از سایت او بازدید می کند تزریق کند. ، به طور خودکار به لیست دوستان وی اضافه می شود – او همچنین می تواند کد خود را در نمایه این دوستان جدید کپی کند تا بازدیدکنندگان صفحه خود را به دوستان خود تبدیل کند. به این ترتیب این کاربر توانست در عرض 24 ساعت بیش از یک میلیون کاربر را به لیست دوستان خود اضافه کند تا جایی که مای اسپیس مجبور شد برای رفع این مشکل سایت خود را برای مدتی از دسترس خارج کند.

کرم معروف به سامی عموماً بی ضرر بود، اما حملات مخرب دیگری نیز به دنبال داشت:

  • Ebay سالهاست که دارای آسیب پذیری های XSS است که هکرها می توانند از آنها برای سرقت اطلاعات استفاده کنند.
  • در سال 2019، مهاجمان XSS موفق به سرقت پول مجازی از بازیکنان فورتنایت شدند.
  • در سال 2018، گروه هکر Magecart موفق شد با حمله XSS به خطوط هوایی بریتانیا، هویت صدها هزار کاربر را به سرقت ببرد.

تزریق اسکریپت ها از طریق وب سایت هنوز یک تهدید بزرگ است. از سال 2021، آسیب پذیری های XSS مختلفی در پلتفرم ایمیل زیمبرا، وردپرس و پلت فرم مدیریت فناوری اطلاعات منبع باز Nagios شناسایی شده است. علاوه بر این، هکرها معمولاً فقط از یک تکنیک استفاده نمی کنند و به عنوان مثال، تزریق اسکریپت ها از طریق سایت، بخشی از یک حمله پیچیده جدید است که با استفاده از گواهی های TLS به نام ALPACA انجام می شود. بنابراین برای جلوگیری از مشکلات اساسی، باید مطمئن شوید که هیچ آسیب پذیری XSS در سایت شما وجود ندارد.

 

[۱] اسکریپت های بین سایتی

[۲] مدل شی از یک سند

[۳] خط مشی امنیت محتوا

[۴] جعل درخواست بین سایت ها

 

منبع: csoonline