تست امنیت

جلسه 13: تاثیر اسکریپت نویسی در تست امنیت (Security Testing)

جلسه 13: تاثیر اسکریپت نویسی در تست امنیت (Security Testing)

جلسه 13: تاثیر اسکریپت نویسی در تست امنیت (Security Testing)

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

داده ها و اطلاعات کاربران و البته وبسایت ها ممکن است به سرقت برده شوند؛ مورد سوء استفاده گرفته و یا در فضای عمومی و بدون خواست صاحبان آن عرضه شوند. تست امنیت Security Testing امروزه مبحث داغ امنیت است تا آسودگی خیال افراد را در بستر اینترنت فراهم کند. راهکار “تست امنیتی” امکان تکرار حملات بر روی سیستم ها، دستگاه ها و اپلیکیشن ها را به منظور آشکارسازی زنجیره ای از مسیرهای باز و آسیب پذیر بر روی سیستم ها و داده های حساس و حیاتی سازمان، فراهم می آورد.

خلاصه جلسه قبل:

در جلسه گذشته آموختیم که تأیید هویت شکسته چیست و چگونه می تواند امنیت کاربران را در دنیای وب به خطر بی اندازد. در این جلسه به تاثیر اسکریپت نویسی در تست امنیت بپردازیم.

تاثیر اسکریپت نویسی در تست امنیت

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

بررسی عوامل تهدید کننده

بررسی عوامل تهدید کننده

آشنایی با انواع XSS

  • XSS ذخیره شده (Stored XSS)
    XSS ذخیره شده به عنوان persistent XSS یا XSS مداوم نیز شناخته می شود. هنگامی که ورودی کاربر روی سرور هدف مانند پایگاه داده یا فروم های مرتبط با پیام، بستر هایی که برای کامنت گذاری ایجاد شده اند و غیره ذخیره می شود آنگاه قربانی داده های ذخیره شده را از برنامه وب بازیابی می کند.
  • XSS معکوس (Reflected XSS)
    XSS معکوس به عنوان XSS غیر مداوم نیز شناخته می شود و زمانی رخ می دهد که ورودی کاربر بلافاصله توسط یک برنامه وب در پیام خطا یا نتیجه جستجو یا ورودی ارائه شده توسط کاربر به عنوان بخشی از درخواست و بدون ذخیره دائمی داده های کاربر ارائه می شود.
  • DOM based XSS
    DOM based XSS نوعی XSS است که منبع داده آن در DOM است، sink نیز در DOM قرار دارد و جریان داده هرگز مرورگر را ترک نمی کند.

مثال

برنامه از داده های غیرقابل اعتماد در ساخت و ساز بدون اعتبار استفاده می کند. در این شرایط کارکترهای خاص باید escape شوند.

http://www.webpage.org/task/Rule1?query=try

 

مهاجم پارامتر query را در مرورگر خود تغییر می دهد.

مثال: 

Hands ON

مرحله 1) وارد Webgoat شوید و به بخش (scripting cross-site (XSS بروید. بگذارید ما یک حمله متقابل سایت نگارش شده (XSS) را اجرا کنیم. در زیر تصویر این سناریو آورده شده است.

ورود به بخش (scripting cross-site (XSS

ورود به بخش (scripting cross-site (XSS

مرحله 2) طبق سناریو، بگذارید ما به عنوان Tom و با رمز “tom” وارد شویم، همانطور که در سناریو ذکر شده است. بر روی ‘view profile کلیک کرده و وارد حالت ویرایش شوید. از آنجا که Tom مهاجم است، اجازه دهید اسکریپت جاوا را در آن جعبه های ویرایش شده تزریق کنیم.

مثال : 
دریافت هشدار hacked

دریافت هشدار hacked

مرحله 3) به محض به روزرسانی ، Tom یک پیام هشدار با پیام “hacked” دریافت می کند، به این معنی که برنامه آسیب پذیر است.

وارد شدن به عنوان (jerry (HR

وارد شدن به عنوان (jerry (HR

مرحله 4) اکنون طبق سناریو، باید به عنوان (jerry (HR وارد شده و بررسی کنیم که آیا jerry تحت تأثیر اسکریپت تزریق شده است یا خیر.

تغییر view profile

تغییر view profile

مرحله 5) پس از ورود به عنوان Jerry، کاربر “Tom” را انتخاب کنید و مطابق شکل زیر “view profile” را کلیک کنید.

مشاهده پروفایل Tom

مشاهده پروفایل Tom

حالا ضمن مشاهده پروفایل Tom از حساب Jerry، می توان همان کادر پیام را دریافت کرد.

دریافت مجدد هشدار hacked

دریافت مجدد هشدار hacked

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

مکانیسم های پیشگیرانه

  • توسعه دهندگان باید اطمینان حاصل کنند که از کلیه داده های غیرقابل اعتماد بر اساس متن HTML مانند CSS ،JavaScript attribute ،body یا URL که به آن ها داده می شود ایمن هستند.
  • برای آن دسته از برنامه های کاربردی که به عنوان ورودی به کاراکترهای خاص نیاز دارند، قبل از پذیرفتن آنها به عنوان ورودی های معتبر، باید سازوکارهای معتبر قوی وجود داشته باشد.

سخن پایانی

در این جلسه به بررسی اسکریپت نویسی و تاثیر آن در تست امنیت پرداختیم؛ اسکریپت نویسی متقاطع (XSS) زمانی اتفاق می افتد که برنامه ای داده های غیرقابل اعتماد را می گیرد و بدون اعتبار آن را به کاربر (مرورگر) می فرستد. در جلسه آینده به Direct Object References می پردازیم. لطفا نظرات خود در رابطه با این مقاله را با ما به اشتراک بگذارید.

موفق و پیروز باشید.

درباره محمد محسن خاشعی نژاد

بیش از ۱۰ سال است که به عنوان مدرس در حوزه های مختلف ICT فعالیت دارم و همیشه در حال یادگیری و یاد دادن هستم.

دیدگاهتان را بنویسید