مطالب مطالب

آسیب‌پذیری عدم احراز اصالت در MongoDB و نحوه فعال‌سازی آن

 

مقدمه

 

MongoDB یک دیتابیس متن­باز و رایگان و از نوع دیتابیس­های NoSQL می­باشد. در این­گونه دیتابیس­ها از ساختار سنتی دیتابیس­های معمول که بر اساس جداول می­باشند، استفاده نمی­شود بلکه اطلاعات به شکل اسناد (documents) و به صورت یک زوج از رشته و مقدار (field & value) مانند JSON ذخیره می­شوند. در مثال زیر، یک نمونه از اطلاعات ذخیره شده در دیتابیس MongoDB نشان داده شده است که طبق الگوی field:value مقداردهی شده ­اند:

 

{

name: “sue”,                                          

age: 26,

status: “A”,

groups: [ “news”, “sports” ]

}

 

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

 

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

 

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

 

MongoDB از مکانیزم­های احراز اصالت زیر پشتیبانی می­کند:

  • challenge and response mechanism (MONGODB-CR)
  • x509 certificate authentication
  • LDAP proxy authentication
  • Kerberos authentication

البته مکانیزم LDAP فقط هنگامی که MongoDB بر روی سیستم­عامل لینوکس نصب شده باشد، قابل استفاده می­باشد و اگر MongoDB بر روی ویندوز نصب شده باشد، نمی­توان از آن استفاده کرد.

 

در ادامه نحوه فعال کردن مکانیزم احراز اصالت برای MongoDB پس از ساخت یک کاربر به عنوان administrator بیان شده است. در این حالت ابتدا یک کاربر به عنوان administrator ساخته می­شود و پس از آن مکانیزم احراز اصالت فعال می­شود. بعد از این مرحله می­توان با کاربر administrator به MondoDB احراز اصالت شد و کاربران جدید با دسترسی­های مشخص تعریف کرد.

 

این روش زمانی مفید است که ساخت اولین کاربر بر روی MongoDB نیازی به احراز اصالت قبل از reset کردن MongoDB نداشته باشد. روش انجام این کار بدین صورت است:

  1. راه­اندازی MongoDB بدون احراز اصالت

mongod --port 27017 --dbpath /data/db1

 

  1. ساخت کاربر با سطح دسترسی مدیر: در مثال زیر کاربر siteUserAdmin در دیتابیس admin ساخته می­شود:

use admin

db.createUser(

  {

    user: "siteUserAdmin",

    pwd: "password",

    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]

  }

)

 

  1. شروع مجدد MongoDB ضمن فعال بودن مکانیزم احراز اصالت: در مثال زیر مکانیزم احراز اصالت با استفاده از تنظیمات دستوری authorization فعال شده است:

mongod --auth --config /etc/mongodb/mongodb.conf

 

  1. ساخت حساب­های کاربری دیگر: در این مرحله می­توان با کاربر مدیر وارد و احراز اصالت شد و دیگر کاربران را تعریف کرد.

 

برای وارد شدن به محیط دستوری MongoDB از راه دور، می­توان از دستور زیر استفاده کرد:

$ mongo ip_address_of_mongo_server

 

اگر هنگام وارد شدن به محیط دستوری MongoDB هیچ رمز عبوری درخواست نشد، می­توان نتیجه گرفت که مکانیزم احراز اصالت روی آن فعال نشده است. MongoDB به صورت پیش فرض بر روی پورت 27017 فعال می­باشد و از دیتابیس test استفاده می­کند.

 

تصاویر مرتبط
تاریخ انتشار مطلب: 09 تیر 1395
بازدید ها: 1027