logo

شرکت سیاره فناوری اطلاعات

شرکت سیاره فناوری اطلاعات در سال 1394 با هدف ارائه خدمات تخصصی در حوزه امنیت شبکه، دیتاسنتر و زیرساخت با ماموریت ارتقاء کیفی ارائه خدمات، در استان هرمزگان تاسیس گردیده است.
آدرس: بندرعباس - بلوار دانشگاه - دانشگاه 15 - ساختمان خلیج فارس - ورودی آ - طبقه هفتم - واحد 34
Info@ITP-Co.net
07633678656
07633679513
09175500730

حملات تزریق SQL

حملات تزریق SQL

SQL Injection در واقع یک آسیب پذیری امنیتی وب است که به مهاجم اجازه می‌دهد از طریق query هایی که یک برنامه تحت وب به پایگاه داده اش ارسال می‌نماید به اطلاعات پایگاه داده دسترسی یابد. این اطلاعات ممکن است، اطلاعات مربوط به کاربران دیگر باشد یا هر اطلاعات دیگری که مهاجم در حالت عادی اجازه دسترسی به آن‌ها را ندارد. همچنین در بسیاری موارد مهاجم می‌تواند اطلاعاتی که به آن‌ها دست یافته است را تغییر دهد یا پاک کند. همچنین در مواردی موفق به دسترسی به سرور و یا سایر تجهیزات back-end شده و حملات انکار سرویس به راه بیندازد. در تصویر بالا می‌توانید یک سناریو حمله تزریق SQL را مشاهده نمایید. مهاجم از طریق فرم‌های سایت و یا به طور کل هر نقطه‌ای که می‌تواند اطلاعات را وارد نماید، کدهای مخرب SQL را وارد می‌نماید و کدها در سمت پایگاه داده اجرا خواهند شد و مهاجم را به مقاصدش می‌رسانند. این کدهای ورودی نیز بنا به نوع سرویس میزبانی و پایگاه داده متفاوت است. با ما باشید تا در ارتباط با حمله تزریق SQL و راهکارهای جلوگیری از آن به شما بیشتر توضیح دهیم.

 


انواع حملات تزریق SQL

 

در ادامه در پنج دسته و با مثال در هر دسته حمله تزریق SQL را به شما توضیح خواهیم داد:

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

 


حملات تزریق SQL که منجر به افشای اطلاعات پنهان می‌گردد

 

با یک مثال این نوع از حمله تزریق SQL را توضیح می‌دهیم. یک برنامه کاربردی فروشگاهی را در نظر بگیرید به نام OnlineShop. کاربر بر روی دسته‌بندی هدیه کلیک کرده مرورگرش این URL را ارسال می‌نماید:
https://shoponline.com/products?category=Gifts
بعد از آن این SQL query ارسال می‌گردد تا جزئیات محصولات مرتبط از پایگاه داده استخراج شود.

SELECT * FROM products WHERE category = ‘Gifts’ AND released = 1

موارد زیر از پایگاه داده درخواست می‌گردد:
تمامی جزئیات از جدول محصولات جایی که دسته بندی هدیه است و released = 1 می‌باشد. در واقع released=1 برای کالاهای عرضه شده است و مقدار صفر برای کالاهای عرضه نشده است، پش فروشگاه کالاهایی که عرضه نشده است را نمی‌خواهد به کاربران نشان دهد. پس در این سناریو اطلاعات پنهان پایگاه داده که به کاربر نبایستی نمایش داده شود، کالاهای عرضه نشده است. حمله‌ای که می‌تواند صورت پذیرد می‌تواند بدین صورت باشد:

https://shoponline/products?category=Gifts’–

نتایج SQL query به صورت زیر است:

SELECT * FROM products WHERE category = ‘Gifts’–‘ AND released = 1

خب نکته کلیدی در”–” یا به اصطلاح double dash می‌باشد. زیرا بعد از “–” هر چه که بیاید به عنوان comment برداشت می‌شود. در نتیجه پایگاه داده released=1 را در نظر نگرفته و در خروجی تمام موارد چه عرضه شده و چه عرضه نشده را ارسال می‌نماید.
یا می‌تواند سناریوی هوشمندانه‌تری نیز باشد:

https://onlineshops.com/products?category=Gifts’+OR+1=1–

حاصل آن SQL query زیر خواهد بود.

SELECT * FROM products WHERE category = ‘Gifts’ OR 1=1–‘ AND released = 1

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

 


حملات تزریق SQL که منطق برنامه کاربردی را به هم می‌ریزد

 

این حمله را نیز با یک سناریو توضیح خواهیم داد. حالتی را در نظر بگیرید که کاربر در وب سایت یا برنامه کاربردی مورد نظرش می‌تواند نام کاربری و گذرواژه وارد کند. نام کاربری را “اپل” و گذرواژه را “۱۲۳” در نظر بگیرید. SQL query زیر به سمت پایگاه داده فرستاده خواهد شد:

SELECT * FROM users WHERE username = ‘اپل’ AND password = ‘123’

حال مهاجم می‌تواند دوباره از همان دابل دش در این بار در قسمت نام کاربری استفاده نماید و بررسی گذرواژه را دور بزند.

SELECT * FROM users WHERE username = ‘administrator’–‘ AND password = ”

همانطور که می‌بینید به صورت هوشمندانه‌ای نام کاربری administrator انتخاب شده است.

 


حملات تزریق SQL که داده‌ها از دیگر جداول پایگاه داده استخراج می‌نماید

 

مورد بعدی مربوط به زمانی است که به اطلاعات جداول دیگر مهاجم دست می‌یابد. در این حمله از کلیدواژه UNION استفاده می‌شود، کلید واژه ای که اجازه می‌دهد تا یک SELECT query اجرا شده و نتایج به query اصلی اضافه گردد. به طور مثال اگر یک برنامه کاربردی query زیر را اجرا نماید

SELECT name, description FROM products WHERE category = ‘Gifts’

و در آن مهاجم به جای ورودی Gifts ورودی زیر را قرار دهد:

‘ UNION SELECT username, password FROM users—

برنامه کاربردی در خروجی تمامی نام‌های کاربری و گذرواژه‌ها را همراه با اسامی و توضیح محصولات برمی‌گرداند.

منبع مقاله: آرمان داده پویان

ITPCo_Co