آموزش امنیت وب

نحوه به وجود آمدن باگ SQL injection

SQL یا SQL injection یکی از معروف ترین باگ هایی می باشد که در این مطلب به آن می پردازم.

SQL یک زبان استاندارد برای ذخیره سازی، دستکاری و بازیابی اطلاعات در پایگاه های داده می باشد باگ SQL injection باعث استخراج اطلاعات از دیتابیس، اضافه یا حذف اطلاعات از آن می شود.

در برخی موارد می شود با استفاده از SQL injection درون فایل های سیستم نوشتن و خواندن انجام داد، حتی می شود دستورات Command را اجرا کرد

اپلیکیشن های وب به دیتابیس متصل هستند و هر اپلیکیشن دارای 3 لایه می باشد:

  • لایه نمایش
  • لایه اپلیکیشن
  • لایه دسترسی داده ها

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

در لایه اپلیکیشن داده های کاربر از لایه نمایش دریافت می شود و مورد پردازش و تحلیل قرار می گیرد که شامل زبان های Asp, Php می باشد.

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

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

آسیب پذیری زمان به وجود میاد که ورودی های کاربر کنترل نشود بیشتر آسیب پذیری ها بیشتر نقض و اشکال در کدنویسی است.

خب ما query که دیتابیس بعد از دریافت داده از کاربر روی دیتابیس اجرا می کند را مشاهده می کنیم:

کد بالا یک query دیتابیس است، که همانطور که مشاهده می کنید کاربر عدد 1 را وارد کرده است. ما فرض می کنیم سایت از طریق متد Get ایدی مربوط به یک محصول را می گیرد و بعد از بررسی آیدی در دیتابیس نام محصول مربوط را به ما نشان می دهد.

این مطلب را از دست ندهید:  جلوگیری از حملات بر روی سرورهای لینوکسی

اگر ما Url خودمون را به صورت زیر قرار دهیم :

مشخص است جلوی عدد یک تگ کوتیشن(‘) است که بعد از رسیدن مقدار آیدی به query دیتابیس دستور به شکل زیر می شود :

خب اما در اینجا مشاهده  می کنید که یک تگ کوتیشن اضافی می باشد که همین باعث بوجود آمدم خطا در query می شود.

اما حالا فهمیدیم چرا از تگ کوتیشن (‘) برای پیدا کردن باگ sql injection استفاده می شود، اما اضافه کردن تگ کوتیشن برای پیدا کردن باگ است نه استفاده از باگ.

انواع روش بکارگیری Exploit برای تزریق SQL

  • Error-base
  • Blind-sqli

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

روش های استفاده می شود time-base و boolean-base می باشد که روش هایی برای شناسایی و استفاده از طریق blind-sqli می باشد.

معروف ترین دیتابیس های مورد استفاده mysql(وب سرور آپاچی در سرور لینوکس) و mssql(وب سرور IIS در سرور ماکروسافت)

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

آرین لاوی

آرین لاوی هستم؛ هم بنیانگذار " آقای امنیت " که حاصل تجربه های خودم در حوزه تخصصی امنیت وب و امنیت وردپرس را برایتان می نویسم و تلاش میکنم به شما کمک کنم تا وبسایت امنی داشته باشید.

نوشته های مشابه

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

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

بستن

Adblock رو غیر فعال کنید

بخشی از درآمد سایت با تبلیغات تامین می شود لطفا با غیر فعال کردن ad blocker از ما حمایت کنید