۱۰ آسیب پذیری مهم در برنامه های وب (OWASP)

۱۰ آسیب پذیری مهم در برنامه های وب (OWASP)

(Open Web Application Security Project (OWASP به سازمانها کمک می کند تا برنامه های کاربردی امن را توسعه دهند. آنها با استانداردها، ابزارهای رایگان و کنفرانس هایی که به سازمان ها ارائه میدهند باعث افزایش آگاهی آنها میشوند. OWASP Top 10 لیستی از آسیب پذیرهای مربوط به وب اپلیکیشن ها، همراه با خطر، تاثیر و اقدامات متقابل است. این فهرست معمولا در هر ۳-۴ سال تجدید می شود.

۱- Injection(تزریق)

“حملات تزریق زمانی اتفاق می افتد که کاربر بتواند داده های غیر قابل اطمینان را در برنامه وب وارد کند. و این اسیب پذیری از این ناشی میشود که هیچ گونه بررسی بر روی queryهای ورودی به وب سایت اعمال نشود. ”

تزریق میتواند به صورت های زیر اعمال شود:

  • SQL queries
  • PHP queries
  • LDAP queries and OS commands

تزریق چیست؟و کجا اعمال میشود؟

به تمامی دستکاری های کوئری ها ، دستورات سیستم عامل و… تزریق میگویند و هر جا که نیاز به ورودی کاربر باشد یا از آن استفاده کند می تواند اطلاعات را تغییر دهد. که می تواند یک جعبه متن، نام کاربری / رمز عبور، زمینه های بازخورد، فیلد نظر، URL و غیره باشد.

در تصویر زیر شما یک فرم با ورودی های نام و نام خانوادگی را میبینید که بعد از وارد کردن ورودی و کلیک بر روی دکمه GO، ورودی روی صفحه نمایش داده می شود.

Normal input

حالا به جای ورودی های نرمال ، چند تگ html را در ورودی ها وارد میکنیم تا نتیجه را مشاهده کنیم.

abnormal input

تگ های HTML پردازش می شوند و خروجی نمایش داده می شود. این تضمین می کند که ورودی کاربر اعتبار داده نشده است و صرفا تمامی ورودی های وارد شده بدون هیچ گونه بررسی ، پردازش میشوند. ما در حال حاضر پرونده تزریق HTML را مشاهده کردیم. به طور مشابه تزریق php، تزریق OS command، تزریق iFrame، تزریق LDAP و غیره را نیز میتوان به این صورت بررسی کرد.

اقدامات مقابله با این آسیب پذیری:

  • پاکسازی ورودی ها: میتوان با به کارگیری رویکرد لیست سفید در سمت سرور ، از انجام اقدامات مخالف جلوگیری کرد.
  • استفاده از API های امن و کوئری های پارامتری شده

۲- Broken Authentication(احراز هویت شکسته)

“احراز هویت شکسته زمانی رخ می دهد که برنامه نتواند اطلاعات مربوط به یک جلسه را نادیده بگیرد درحالی که هویت کاربر به خطر افتاده است. اطلاعات می تواند در قالب کوکی ها، رمزهای عبور، کلید های مخفی و غیره باشد ”

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

  1. پس از logout کردن، دکمه بازگشت را فشار دهید تا ببینید آیا می توانید به جلسه قبلی دسترسی پیدا کنید.
  2. سعی کنید بعد از logout کردن، به طور مستقیم بر روی URL ضربه بزنید تا ببینید آیا قادر به دسترسی به این صفحه هستید.
  3. اطلاعات مربوط به جلسه ای که در ان حضور دارید را در URL ها بررسی کنید. سعی کنید آنها را کنترل کنید تا ببینید آیا شما قادر به رسیدن به جلسه شخص دیگری هستید.
  4. پیدا کردن اختیارات لازم در سورس کد صفحه. روی صفحه کلیک راست کرده و کد سورس منبع را مشاهده کنید. گاهی اوقات امکان دارد اطلاعات مهمی در کد منبع باقی بماند و شناسایی نشود.

اقدامات مقابله با این آسیب پذیری:

  • استفاده از احراز هویت چند منظوره
  • خروج از جلسه
  • زمان انتظار بیهوده
  • استفاده از کوکی های امن

۳- Sensitive data exposure(قرار گرفتن در معرض اطلاعات حساس)

“مهاجمان می توانند اطلاعات حساس را تخریب کنند و یا تغییر دهند، اگر به صورت امن توسط نرم افزار مدیریت نشوند. به عنوان مثال: استفاده از کلید های رمزنگاری ضعیف و یا استفاده از TLS ضعیف است. ”

هدف از این حمله این است که بیت های اطلاعات حساس را شناسایی کرده و از آنها بهره برداری کنند.

به عنوان مثال، الگوریتم های رمزنگاری ضعیف به حملات حساس هستند و داده های حساس را لو میدهند. در مثال زیر نام کاربری و رمز عبور با استفاده از کدگذاری base64 ارسال می شود.

درخواست می تواند به راحتی متوقف و رمزگشایی شود. مهاجم همچنین می تواند حملات تزریق SQL را با دستیابی به چنین دانشی انجام دهد. رمز عبور به راحتی شنود و رمزگشایی میشود. شما می توانید از BurpSuite برای شنود و رمزگشایی پسورد استفاده کنید.

اقدامات مقابله با این آسیب پذیری:

  • رمزگذاری تمام داده ها در زمان عبور یا توقف
  • از پروتکل ها و الگوریتم های امن استفاده کنید.
  • غیرفعال کردن ذخیره سازی پاسخ ها با اطلاعات حساس

۴- (XML External Entities (XXE(فایل xml اپلود شده توسط نفوذگر)

“یک برنامه زمانی در مقابل حمله XXE آسیب پذیر است که کاربر قادر به آپلود یک فایل XML مخرب باشد. که می تواند برای اجرای کد، سرقت اطلاعات و انجام سایر کارهای مخرب مورد استفاده قرار گیرد.”

برای مثال در صفحه وب زیر، کاربر قادر به آپلود یک فایل XML میباشد که در همان صفحه تجزیه و تحلیل شده و نمایش داده می شود.

اگر کاربر یک کد xml مانند شکل زیر را وارد کند، وب سایت آن را توسط تجزیه کننده پردازش می کند و پاسخ تغییر خواهد کرد.

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

اقدامات مقابله با این آسیب پذیری:

  • اجتناب از سریال سازی اطلاعات حساس
  • پیاده سازی رویکرد لیست سفید در سمت سرور برای جلوگیری از آپلود XML مخرب.
  • استفاده از WAF برای شناسایی و بلوک XXE.
  • بررسی کدها

۵- Broken Access control(کنترل دسترسی شکسته)

“کنترل دسترسی شکسته زمانی اتفاق می افتد که کاربر بتواند به منابع غیر مجاز دسترسی پیدا کند، که این دسترسی ها میتواند شامل صفحات محدود، پایگاه داده، دایرکتوری ها و غیره شود.”

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

به عنوان مثال در زیر نمونه هایی از ۲ کاربر Jsmith و admin هستند. Jsmith حق ویرایش کاربر را ندارد، اما یک مدیر دارای حقوق کامل است.

آسیب پذیری این است که کاربر jsmith می تواند به طور مستقیم بر روی URL صفحه، اطلاعات کاربران را ویرایش کند با اینکه دسترسی مدیریت را ندارد.

اقدامات مقابله با این آسیب پذیری:

بعد از خروج از حساب کاربری، نشانه ها و کوکی ها را غیرفعال کنید.

اجبار به ورود و خروج بعد از تغییر پسورد

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

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

۶- Security misconfigurations(تنظیمات امنیتی نادرست)

توسعه دهندگان و کارکنان IT بیشتر به عملکرد توجه میکنند تا امنیت! تنظیمات در سرور نرم افزار انجام می شود، سرور DB، پروکسی، برنامه ها و سایر دستگاه ها باید مطابق با نیازهای امنیتی باشد.

نمونه هایی از این پیکربندی های نادرست امنیتی عبارتند از کلمه عبور ضعیف، گذرواژه پیش فرض، اسکریپت های پیش فرض ذخیره شده در سرور ها، دایرکتوری های پیش فرض، پیام های پیش فرض خطا و … به عنوان مثال به تصویر زیر دقت کنید:

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

پیام های خطای پیش فرض توسط سرور می توانند مهاجمان را به اثر انگشت سرور و نسخه آن اگاه سازند.

 

اقدامات مقابله با این آسیب پذیری:

سعی کنید تمامی تنظیمات پیشفرض را تغییر دهید

برنامه ها و سرویس های مورد نیاز را فقط در چارچوب خاص نصب کنید

امنیت تنظیمات را در فواصل ثابت بررسی کنید.

۷- (Cross Site Scripting (XSS

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

سه نوع مختلف از حمله xss وجود دارد:

  1. Reflected
  2. Stored
  3. DOM-based

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

 

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

اقدامات مقابله با این آسیب پذیری:

  • خروجی رمزگذاری و ممنوع کردن استفاده از کاراکترهای اضافی
  • فعال کردن (Content-Security-Policy (CSP

۸- Insecure Deserialization

برخی از برنامه ها اطلاعات را در سمت سرویس گیرنده ذخیره می کنند و ممکن است از سریال سازی شیء استفاده کنند. برنامه های کاربردی که به مشتری متکی هستند برای حفظ وضعیت ممکن است باعث خراب شدن داده های سریال شود. این یک ورودی جدید در لیست است و برای بهره برداری دشوار است.

برای مثال تغییر اشیاء سریال سازی شده در کوکی ها برای افزایش امتیاز

 

X: x :{ z: z:”NAME”: r:”USER”} -->> Normal cookie
X: x :{ z: z:”NAME”: r:”ADMIN”} -->> Altered cookie object

اقدامات مقابله با این آسیب پذیری:

  • رمزگذاری اطلاعات سریال
  • بررسی حداقل امتیازات برای اجرای دستورات

۹- Using Components with known vulnerabilities(استفاده از اجزایی که دارای آسیب پذیری شناخته شده ای هستند)

اگر از اجزایی که آسیب پذیری های شناخته شده دارند توسط برنامه مورد استفاده قرار گیرد، ممکن است منجر به نقض امنیتی و یا نفوذ به سرور شود. اجزاء می توانند چارچوب های برنامه نویسی، کتابخانه ها، توابع آسیب پذیر، چارچوب های شبکه و … باشد.

به عنوان مثال:

  1. استفاده از نسخه های آسیب پذیر PHP
  2. استفاده از نسخه های کرنل اپدیت نشده
  3. استفاده از ویندوز های اپدیت نشده
  4. استفاده از نسخه جی کوئری آسیب پذیر

به دست آوردن نسخه جی کوئری مورد استفاده:

اقدامات مقابله با این آسیب پذیری:

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

۱۰- Insufficient logging and monitoring(نظارت و ورودهای ناکافی)

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

برای مثال:

  1. بسیاری از تلاش های ورود ناموفق از یک منبع خاص انجام می شود.
  2. درخواست های بیش از حد از یک منبع خاص در نرخ بسیار سریع، آهسته و یا ثابت می تواند یک تلاش DOS باشد.
  3. ترافیک ناخواسته
  4. زمانی که انتظار نداشته باشید، در شبکه ترافیک می بینید.

اقدامات مقابله با این آسیب پذیری:

  • نظارت بر ترافیک برنامه و تحلیل ورودی در طول روز
  • اقدامات لازم برای امن سازی به صورت عملی صورت گیرد.

نتیجه گیری

۱۰ آسیب پذیری مهم OWASP به عنوان یک معیار، کمک می کند تا مدیران آسیب پذیری ها را به صورت دقیق تر شناسایی کنند.و همچنین میتواند به همراه چند گزینه دیگر برای ایجاد یک معیار برای تست امنیتی برنامه های یک سازمان مورد استفاده قرار گیرند.

در تصویر زیر شما لیست ۱۰ آسیب پذیری owasp را در سالهای ۲۰۱۳ و ۲۰۱۷ میبینید.

 

لطفا با نظر دادن زیر مطالب در بهبود کیفیت وب سایت ما را یاری کنید.

نوشتن دیدگاه

آدرس ایمیل شما منتشر نخواهد شد.