جلسه 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 را در مرورگر خود تغییر می دهد.
http://www.webpage.org/task/Rule1?query=<h3>Hello from XSS"</h3>
Hands ON
مرحله 1) وارد Webgoat شوید و به بخش (scripting cross-site (XSS بروید. بگذارید ما یک حمله متقابل سایت نگارش شده (XSS) را اجرا کنیم. در زیر تصویر این سناریو آورده شده است.

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

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

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

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

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

مرحله 6) این کادر پیام البته فقط یک پیام نمونه است و ما در حال آزمایش کردن هستیم اما مهاجم واقعی می تواند خیلی بیشتر از آنچه که ما انجام دادیم در دل حساب یک شخص نفوذ کند.
مکانیسم های پیشگیرانه
- توسعه دهندگان باید اطمینان حاصل کنند که از کلیه داده های غیرقابل اعتماد بر اساس متن HTML مانند CSS ،JavaScript attribute ،body یا URL که به آن ها داده می شود ایمن هستند.
- برای آن دسته از برنامه های کاربردی که به عنوان ورودی به کاراکترهای خاص نیاز دارند، قبل از پذیرفتن آنها به عنوان ورودی های معتبر، باید سازوکارهای معتبر قوی وجود داشته باشد.
سخن پایانی
در این جلسه به بررسی اسکریپت نویسی و تاثیر آن در تست امنیت پرداختیم؛ اسکریپت نویسی متقاطع (XSS) زمانی اتفاق می افتد که برنامه ای داده های غیرقابل اعتماد را می گیرد و بدون اعتبار آن را به کاربر (مرورگر) می فرستد. در جلسه آینده به Direct Object References می پردازیم. لطفا نظرات خود در رابطه با این مقاله را با ما به اشتراک بگذارید.
موفق و پیروز باشید.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.