جلسه 21: بررسی امنیت AJAX در تست امنیت (Security Testing)

جلسه 21: بررسی امنیت AJAX در تست امنیت (Security Testing)
نگهداری امن و محرمانه اطلاعات مشتریان از اولویت بالایی در تمامی سازمان ها و شرکت ها برخوردار است. متأسفانه، روزانه آسیب پذیری های جدیدی کشف شده و همگامی نگهداشت امن سازمان در برابر آن ها، تقریباً به امری محال تبدیل شده است. این آسیب پذیری ها در تار و پود زیرساخت IT قرار گرفته و گاهاً به مدت بسیار طولانی کشف نشده باقی می مانند. اگرچه راه های بسیاری برای امن سازی سیستم ها و اپلیکیشن ها در برابر آسیب پذیری ها وجود دارد، اما تنها راه کسب اطمینان واقعی از آن، تست امنیتی بستر IT سازمان به منظور یافتن این حفره های امنیتی است.
داده ها و اطلاعات کاربران و البته وبسایت ها ممکن است به سرقت برده شوند؛ مورد سوء استفاده گرفته و یا در فضای عمومی و بدون خواست صاحبان آن عرضه شوند. تست امنیت Security Testing امروزه مبحث داغ امنیت است تا آسودگی خیال افراد را در بستر اینترنت فراهم کند. راهکار “تست امنیتی” امکان تکرار حملات بر روی سیستم ها، دستگاه ها و اپلیکیشن ها را به منظور آشکارسازی زنجیره ای از مسیرهای باز و آسیب پذیر بر روی سیستم ها و داده های حساس و حیاتی سازمان، فراهم می آورد.
خلاصه جلسه قبل:
در جلسه گذشته تاثیر ریدایرکت ها و فوروارد های نامعتبر در تست امنیت را بررسی کردیم؛ بیشتر برنامه های وب در اینترنت اغلب کاربران را به صفحات یا وب سایت های خارجی دیگر فوروارد و می کنند؛ در صورت عدم وجود اعتبار یک صفحه هکرها می توانند قربانیان را به سمت سایت های فیشینگ یا بدافزار هدایت کنند. در این جلسه به بررسی امنیت AJAX در تست امنیت می پردازیم.
بررسی امنیت AJAX در تست امنیت
Asynchronous Javascript و XML که می توان آن را به عنوان AJAX شناخت؛ یکی از جدیدترین تکنیک هایی است که برای توسعه برنامه های کاربردی وب بکار می رود تا یک تجربه کاربر غنی را ایجاد نماید. از آنجا که این یک فناوری جدید است، بسیاری از مسائل امنیتی مربوط به آن و رفع تقص های امنیتی آن هنوز تکمیل نشده اند. در ادامه به برخی از مواردی امنیتی موجود در AJAX می پردازیم:
- سطح حمله بیشتری در آن وجود دارد همان طور که ورودی های بیشتری برای اطمینان وجود دارد.
- functions داخلی بیشتری در برنامه ها در معرض نمایش قرار می گیرند.
- عدم محافظت از اطلاعات و جلسات تأیید اعتبار.
- یک خط بسیار میان client-side و server-side وجود دارد و از این رو احتمال ارتکاب خطاهای امنیتی نیز وجود دارد.
مثال:
در ادامه نمونه ای از امنیت AJAX را آورده ایم. در سال ۲۰۰۶ یک ویروس از نوع worm یک سرویس پست الکترونیکی yahoo را با استفاده از XSS و AJAX آلوده کرد و موجب آسیب پذیری در رسیدگی به بارگیری ایمیل های یاهو شد به طوری که وقتی یک ایمیل آلوده باز می شد؛ worm جاوا اسکریپت خود را اجرا می کرد و یک نسخه نیز برای همه مخاطبین یاهو کاربر آلوده ارسال می نمود.
Hands ON
مرحله 1) ما باید rewards بیشتری را با استفاده از تزریق XML اضافه نماییم. در ادامه تصویر این سناریو را می بینید.

مرحله 2) مطمئن شوید که ما هر دو درخواست و پاسخ را با استفاده از Burp Suite رهگیری می کنید. تنظیمات شما باید مطابق شکل زیر باشد.

مرحله 3) شماره حساب را طبق سناریو وارد کنید. می توانیم لیستی از همه rewards هایی که واجد شرایط آن هستیم را بدست آوریم. ما واجد شرایط سه rewards از پنج rewards هستیم.

مرحله 4) حالا اجازه دهید “Submit” را کلیک کرده و ببینیم که در XML پاسخ چه چیزی را دریافت می کنیم. در ادامه می بینید که سه rewards که واجد شرایط آن هستیم نشان داده می شود و به عنوان XML به ما منتقل می شود.

مرحله 5) بیایید آن XML ها را ویرایش کنیم و دو rewards دیگر را نیز اضافه کنیم.

مرحله 6) اکنون همه rewards ih برای کاربر انتخاب می شود تا بتواند آنها را انتخاب کند. مواردی را که اضافه کردیم انتخاب کرده و روی “Submit” کلیک کنید.

مرحله 7) در نهایت پیامی با مضمون “Congratulations. You have successfully completed this lesson.” دریافت می کنید.
مکانیسم های پیشگیرانه
1. مکانیسم های پیشگیرانه در سمت کاربر:
- به جای innerHtml. از innerText. استفاده کنید.
- از Eval استفاده نکنید.
- برای امنیت به client logic اعتماد نکنید.
- از نوشتن کد سریال سازی خودداری کنید.
- از ساخت XML به صورت پویا خودداری کنید.
- هرگز موارد محرمانه را به سمت کاربر منتقل نکنید.
- رمزگذاری را در کد سمت کاربر انجام ندهید.
2. مکانیسم های پیشگیرانه در سمت کاربر:
- از CSRF protection استفاده کنید.
- از نوشتن کد سریال سازی شده یا serialization خودداری کنید.
- یادتان باشد خدمات را می توان مستقیماً توسط کاربران فراخوانی کرد.
- از ساخت XML به صورت دست خودداری کنید؛ بهتر است از فریم ورک استفاده کنید.
- از ساخت JSON به صورت دستی خورداری کنید؛ بهتر است از فریم ورک استفاده کنید.
سخن پایانی
در این جلسه به بررسی امنیت AJAX در تست امنیت پرداختیم؛ از آنجا که این یک فناوری جدید است، بسیاری از مسائل امنیتی مربوط به آن و رفع تقص های امنیتی آن هنوز تکمیل نشده اند و نیاز به بررسی و دقت دارند تا نقص های امنیتی شان برطرف شود.
در جلسه آینده می خواهیم به بررسی سروریس های وب در تست امنیت بپردازیم. لطفا نظرات خود در رابطه با این مقاله را با ما به اشتراک بگذارید.
موفق و سر سبز باشید.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.