حملات SQL injection: چگونه پایگاه داده خود را از حملات هکرها محافظت کنید؟

حمله SQL injection چیست؟

آنچه در مقاله می‌خوانید

حمله SQL injection یکی از روش‌های نفوذ رایج در بین هکر‎هاست. با توجه به رشد روزافزون تکنولوژی در دنیای مدرن، تکنیک‌های هک نیز در حال محبوب‌تر‎شدن هستند. از بین تکنیک‌های مختلف هک‎ کردن، آن‌هایی که باعث از‎بین‎ رفتن یک یا چند برنامه‌ی خاص می‌شوند، طرفداران بیشتری دارند.

هدف حمله SQL injection از‎بین ‎بردن برنامه‌های مبتنی بر داده است. در این مقاله، می‌خواهیم درباره‌ی این تکنیک محبوب هکرها صحبت کنیم و توضیح دهیم که چگونه در این تکنیک، از کدهای مخرب SQL برای دسترسی به اطلاعات و در‎نهایت از‎بین‎ بردن دیتابیس یا همان پایگاه داده استفاده می‌شود.

حمله SQL injection چیست؟

حمله SQL injection چیست؟

در این قسمت، به طور خلاصه شرح می‌دهیم که SQL injection چیست و چطور انجام می‌شود.

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

در صورتی که حمله‌ی SQL موفقیت ‎‏آمیز باشد، تمامی وب‎سایت‌ها یا برنامه‌های کاربردی وب که با استفاده از دیتابیس‌های رابطه‌ای مانند MySQL، Oracle یا SQL Server مدیریت می‌شوند، همگی تحت ‎تاثیر قرار می‌گیرند. در سال‌های اخیر، با‎توجه به موارد استفاده‌ی روز‎افزون این نوع حملات در بین هکر‌ها، شاهد نقص‌های امنیتی زیادی بوده‌ایم. از طرف دیگر، با پیشرفت روش‌های هک و نفوذ، روش‌های پیشگیرانه و حفاظتی مانند فایروال‌ها (یا دیواره‎‌ی آتش) نیز به‎ خوبی بروزرسانی شده‌اند و توانسته‌اند تا حد زیادی از وقوع این حملات جلوگیری کنند.

حال نوبت آن است که با انواع حملات SQl آشنا شویم.

انواع حمله SQL injection

انواع حمله SQL injection

هر چه یک سازمان درک و آشنایی بیشتری با انواع مختلف تهدیدات امنیتی سایبری داشته باشد، بهتر می‌تواند خود را برای حملات آماده کرده و نقاط آسیب‎‌پذیر خود را شناسایی و برطرف کند. حملات SQl به 3 دسته تقسیم می‌شوند:

In-band SQL Injection

In-band SQL Injection رایج‌ترین نوع حمله SQL injection است. در حمله In-band SQL Injection، هکر از یک کانال ارتباطی یکسان برای حمله و جمع‌آوری اطلاعات استفاده می‌کند. رایج‌ترین تکنیک‌های حملات In-band SQL Injection عبارتند‎از:

  • Error-based SQL injection: در این تکنیک، هکر با استفاده از از دستور SQL برای ایجاد پیام خطا از سرور دیتابیس، اطلاعاتی درباره‌ی ساختار دیتابیس بدست می‌آورد. با اینکه پیام‌های خطا در زمان توسعه‌ی برنامه‌های وب یا صفحات وب مفید هستند، اما از آنجایی که اطلاعات مربوط به پایگاه داده را در معرض دید همه قرار می‌دهند، می‌توانند آسیب ‎زننده باشند. برای جلوگیری از هک دیتابیس از این طریق، می‌توانید پس از فعال‎ شدن وب‎سایت یا برنامه، پیام‌های خطا را غیرفعال کنید.
  • Union-based SQL injection: در این تکنیک، هکر با استفاده از اپراتور UNION SQL برای ترکیب چند دستور انتخاب و برگرداندن یک پاسخ HTTP، اقدام به استخراج اطلاعات از دیتابیس می‌کند. این تکنیک یکی از رایج‌ترین حملات SQL injection است و نسبت به error-based SQL injection به اقدامات امنیتی بیش‌تری نیاز دارد.

Inferential SQL Injection

در تکنیک Inferential SQL injection که با نام blind SQL نیز شناخته می‌شود، برخلاف In-band SQL Injection، داده‌ها مستقیما به هکر منتقل نمی‌شوند. به جای آن، هکر می‌تواند با ارسال پکیج‌های داده و مشاهده‌ی پاسخ، با ساختار سرور آشنا شود. حملات Inferential SQL injection نسبت به حملات in-band SQL injection زمان بش‌تری نیاز دارند و به همین دلیل، کمتر مورد‎استفاده قرار می‌گیرند. به طور کلی، دو نوع حمله‌ی inferential SQL injection داریم:

  • Boolean injection: در این تکنیک، هکر یک SQL query را به دیتابیس ارسال کرده و نتیجه‌ی آن را مشاهده می‌کند. بر اساس اینکه آیا اطلاعات موجود در پاسخ HTTP اصلاح شده ‎است یا خیر، هکر می‌تواند درست یا نادرست بودن نتایج را شناسایی کند.
  • Time-based injection: در این تکنیک، هکر یک SQL query را به دیتابیس ارسال کرده و پایگاه داده را قبل از پاسخ ‎دادن، برای چند دقیقه منتظر نگه می‌دارد. بر اساس تعداد ثانیه‌هایی که تا زمان ارسال پاسخ می‌گذرد، هکر می‌تواند درست یا نادرست ‎بودن نتیجه را مشخص کند. به عنوان مثال، در صورتی که حرف اول نام دیتابیس “A” باشد، دستور تاخیر می‌دهد. اگر پاسخ به تاخیر بیفتد، به این معنی است که query درست است.

Out-of-Band SQL Injection

Out-of-Band SQL Injection کمترین آمار حمله را در بین حملات SQl دارد. در این تکنیک، هکر از کانال ارتباطی متفاوتی برای جمع‌آوری نتایج استفاده می‌کند. فقط در زمانی که سرور برای حملات inferential SQL injection یا in-band SQL injection کند یا ناپایدار باشد، از این تکنیک برای هک دیتابیس استفاده می‌شود.

حمله SQL injection چگونه انجام می‌شود؟

حمله SQL injection چگونه انجام می‌شود؟

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

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

در مرحله‌ی بعد، مهاجمین از نتایج بررسی‌هایشان استفاده کرده تا یک query ایجاد کننده که سرور مجازی آن را تفسیر کرده و به عنوان یک دستور SQL اجرا کند. به عنوان مثال، فرض کنید در یک پایگاه داده، اطلاعات مشتریانی که خرید را با شماره‌ی شناسه‌ی مشتری تکمیل کرده‌اند، ذخیره شده ‎است. مهاجم به جای جستجوی یک شناسه‌ی خاص، عبارت “CustomerID = 1000  یا 1=1 ” را در قسمت ورودی وارد می‌کند. از آنجایی که عبارت 1=1 همیشه درست است، SQL query همه‌ی شناسه‌های مشتری و داده‌های مربوط به آن‌ها که در پایگاه داده ذخیره شده‎ است را برمی گرداند. این کار، هکر را قادر می‌سازد تا فرآیند احراز هویت را دور زده و به دیتابیس در سطح ادمین دسترسی داشته باشد.

هکر‌ها در حمله SQL injection علاوه بر دسترسی غیر‎مجاز به اطلاعات، می‌توانند کل پایگاه داده، اعتبارنامه‌ها و سوابق را حذف کنند و یا داده‌های نامعتبر را وارد پایگاه داده کنند.

مثال‌هایی از SQL injection

مثال‌هایی از حمله SQL injection

در حملات SQl ممکن‎ است استراتژی‌ها، حملات، تنظیمات و آسیب‌پذیری‎‌های مختلفی بکار گرفته ‎شوند. در این قسمت، برای درک بهتر شما از این حملات، می‌خواهیم چند مثال رایج را توضیح دهیم:

  • تغییر SQL query: هکر برای بازیابی داده‌های پنهان، یک SQL query را تغییر می‌دهد تا اطلاعات بیشتری بدست‎ آورد.
  • دور زدن ورود کاربران: هکر برای دور‎زدن مرحله‌ی احراز هویت و دسترسی به وب‎‌سایت یا برنامه، یک دستور SQL را به فرم ورود تزریق می‌کند.
  • تضعیف منطق اپلیکیشن: هکر query را تغییر می‌دهد تا در منطق برنامه مشکل ایجاد کند.
  • حملات جامع: در این نوع حملات، امکان بازیابی داده‌ها از بسیاری از جداول پایگاه داده فراهم می‌شود.
  • تجزیه و تحلیل دیتابیس: هکر با تجزیه و تحلیل دیتابیس، اطلاعاتی درباره‌ی نسخه و ساختار آن بدست می‌آورد.
  • Blind SQL injection: در طول Blind SQL injection، هیچ پیغام خطایی از پایگاه داده دریافت نمی‌شود.
  • حملات DDoS: در طول حمله‌ی DDoS، هکر یک دستور SQL را برای این حمله تزریق می‌کند تا سیستم را تحت ‎تاثیر قرار دهد.

در قسمت زیر، چند نمونه از تاثیرات واقعی حمله SQL injection را با یکدیگر می‌خوانیم:

  • آسیب‌پذیری تسلا: در سال 2014، هکر‌ها توانستند از طریق SQL injection به تسلا نفوذ کرده و داده‌های کاربران را به سرقت ببرند.
  • آسیب‌پذیری Fortnite: بازی Fortnite یک بازی آنلاین محبوب است که بیش از 350 میلیون بازیکن فعال دارد. در سال 2019 این بازی مورد حمله SQL injection قرار گرفت و حساب‌های کاربری بازیکنان به سرقت رفت.
  • آسیب‌پذیری Cisco: در سال 2018 شرکت Cisco مورد هجوم هکر‌ها قرار گرفت و مهاجمان توانستند به رایانه‌هایی که مدیریت مجوز در آن‌ها نصب شده بود، دسترسی پوسته (shell access) داشته باشند.

پیامدهای یک حمله SQL موفق

پیامدهای حمله SQL injection چیست؟

در صورتی که حمله SQL injection موفقیت‎‏ آمیز باشد، می‌تواند خطرات زیادی برای یک کسب‎و‎کار داشته باشد. مهم‌ترین پیامد‌های یک حمله‌ی SQL موفق عبارتند‎از:

  • افشای داده‌های حساس: هکر‌ها می‌توانند داده‌های حساس ذخیره ‎شده در سرور SQL را بازیابی کنند.
  • به خطر انداختن یکپارچگی داده‌ها: در صورتی که هکر به داده‌ها دسترسی داشته باشد، می‌تواند آن‌ها را تغییر داده یا حذف کند.
  • به خطر افتادن حریم خصوصی کاربران وب‎سایت/اپلیکیشن: بسته به اینکه چه داده‌هایی در سرور مجازی SQL ذخیره شده باشند، این احتمال که مواردی نظیر آدرس، شماره تلفن، اطلاعات کارت‌های اعتباری و داده‌هایی که مربوط به حریم خصوصی کاربران هستند برای انجام عملیات مجرمانه به سرقت برود، وجود دارد.
  • اجازه به هکر برای دسترسی به سیستم: در صورتی که کاربری دارای دسترسی ادمین باشد، مهاجم می‌تواند پس از دسترسی به اطلاعات او و با استفاده کد‌های مخرب، به کل سیستم دسترسی داشته ‎باشد.
  • دسترسی عمومی هکر به سیستم: در صورتی که از دستورات SQL ضعیف برای بررسی نام کاربری و رمز عبور استفاده می‌کنید، این احتمال که یک هکر بتواند بدون اطلاع از اعتبار کاربر به سیستم شما دسترسی پیدا کند، وجود دارد. بدین صورت، هکر می‌تواند با دسترسی و دستکاری اطلاعات حساس، شما را به دردسر بیاندازد.
  • هزینه‌های غیر‎مالی حمله SQL injection: در صورتی که اطلاعات شخصی کاربران شما فاش شود، اعتماد مشتریان و در پی آن اعتبار کسب‎ و‎ کارتان نیز از بین می‌رود.

چگونه از حملات SQL injection جلوگیری کنیم؟

چگونه از حمله SQL injection جلوگیری کنیم؟

اگر نگران کسب‎و‎کارتان هستید و می‌خواهید از وقوع حمله SQL injection جلوگیری کنید و یا صدمات چنین حملاتی را کمتر کنید، بهتر‎است اصول کلیدی برای محافظت از وب‎سایت و اپلیکیشن‌های کاربردی را رعایت کنید.

این اصول عبارتند‎از:

آموزش کارکنان

تیم مسئول برنامه‌‌های وب و سایر کارکنان باید از با انواع حملات SQl و راه‌های جلوگیری از آن‌ها آشنا باشند و به‎‌خوبی آموزش ببینند.

کنترل ورودی کاربران

هر ورودی کاربر که در SQL query معرفی می‌شود می‌تواند یک خطر باشد. با استفاده از احراز هویت دو مرحله‌ای ورودی کاربران به همان روش عمومی، می‌توانید تا حدی این مشکل را حل کنید. همچنین، بهتر‎ است به کاربرانی که به پایگاه داده متصل می‌شوند، حداقل امتیازات را بدهید. برای تایید و فیلتر‎کردن کاربران نیز به جای لیست‌ها سیاه، از لیست‌های سفید استفاده کنید.

از آخرین و جدید‌ترین نسخه‌ها استفاده کنید

برای جلوگیری از ایجاد هرگونه مشکلی و دریافت بروزترین و جدید‌ترین روش‌های امنیتی، بهتر‎ است آخرین نرم افزارها و پچ‌های امنیتی استفاده کنید و همیشه سیستم خود را بروزرسانی کنید.

اسکن مداوم برنامه‌های وب

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

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

از دیواره‌ی آتش برنامه‌ی وب (Waf) معمولا برای مسدود کردن SQLi و سایر تهدیدات امنیتی استفاده می‌شود. در صورتی که WAF دارای لیست بزرگ و جامعی باشد و دائما بروزرسانی شود، می‌تواند درخواست‌های SQL مخرب را به‎ خوبی مسدود کند.

 

جمع‌بندی

حملات SQL Injection به طور خاص پایگاه داده‌ها را هدف می‌گیرند و با کنترل سرور پایگاه داده، اقدام به سرقت اطلاعات حساس کاربران و ایجاد تغییراتی در آن می‌کنند. سه نوع اصلی این حملات عبارتند از In-band SQL Injection، Inferential SQL Injection و Out-of-Band SQL Injection. هر کدام از این حملات به روش‌های مختلف و با اهداف خاصی صورت می‌گیرند.

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

در این مقاله، سعی کردیم به طور کامل درباره‌ی انواع حمله SQL injection، تاثیرات و راه‌های پیشگیری از وقوع چنین حملاتی صحبت کنیم.

امتیاز شما به این مطلب
دیدن نظرات
small

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

چهارده − 7 =

عضویت در خبرنامه مبین هاست
مطالب کدام دسته‌بندی‌ها برای شما جذاب‌تر است؟

آنچه در مقاله می‌خوانید

مقالات مرتبط
فریمورک Django
آموزش برنامه نویسی

همه چیز درباره فریمورک Django و نحوه استفاده از آن

فریم ورک Django یک ابزار متن‌باز بر پایه زبان برنامه‌نویسی پایتون است که از آن برای ساخت انواع وب‌سایت‌ها و پلتفرم‌های پیچیده استفاده می‌شود. این

خدمات مبین هاست