جستجو برای:
  • صفحه اصلی
  • دوره ها
    • حساب کاربری
    • سبد خرید
  • مقالات
 
  • دانلودها
  • تدریس در ساینت
ساینت
  • صفحه اصلی
  • دوره ها
    • آزمون ها
    • حساب کاربری
    • سبد خرید
    • پرداخت
  • مقالات
  • ساینت TV
  • لایسنس اسپلانک
  • درباره ما
  • اساتید
0
ورود / عضویت

بلاگ

ساینت مقالات امنیت شبکه SQL Injection چیست؟ و چگونه به شما آسیب می رساند

SQL Injection چیست؟ و چگونه به شما آسیب می رساند

2021/01/22
ارسال شده توسط ساینت
امنیت شبکه
2.5k بازدید
SQL Injection
زمان مطالعه: ۴ دقیقه

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

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

نمونه SQL Injection

در اینجا مثالی از چگونگی انجام حمله تزریق SQL در عمل آورده شده است. این حمله برای دستیابی به کلیه داده های مربوط به کاربر از جدول داده های USERS بدون اطلاع از نام کاربری یا رمز عبورطراحی شده است.

کد برنامه SQL ممکن است چیزی شبیه به مثال زیر باشد:

SELECT * FROM Users WHERE Username=’$username’ AND Password=’$password’

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

در نظر بگیرید که:

۱′ OR ‘1’ = ‘1

and

۱’ OR ‘1’ = ‘1

با وارد کردن این جفت نام کاربری و رمزعبور که عمداً به این شکل طراحی شده است شده است، مهاجمان به طور موثری دو شرط  OR را به فرایند تأیید اعتبار تزریق کرده است. خوب حالا نگاهی دقیق تر بندازیم تا ببینیم این عمل چگونه انجام میشود.

کد برنامه SQL در انتظار یک رشته متن ساده مانند cynetco برای نام کاربری و رشته ساده دیگری مانند [email protected] برای رمز عبور بود. حالا خط دستورات زیر ترجمه میشود:

SELECT * FROM Users WHERE Username=’$username’ AND Password=’$password’

به

SELECT * FROM Users WHERE Username=’cynetco’ AND Password=’ [email protected]

اگر رمز عبور آن کاربر [email protected] است، به داده های کاربر cynetco (در صورت وجود) دسترسی پیدا میکند.

اما در اینجا یک مشکل وجود دارد. آنچه از برنامه انتظار نمی رفت این بود که یک مهاجم با استفاده هوشمندانه از apostrophe ها نام کاربری و رمز عبوری را به این روش وارد کند. پس نتیجه کد فوق به شکل زیر ترجمه میشود:

SELECT * FROM Users WHERE Username=’1′ OR ‘1’ = ‘1’ AND Password=’1′ OR ‘1’ = ‘1’

خوب حالا برنامه کاربردی به هر کاربری که پسوردش ‘۱’ OR ‘1’ = ‘1’ باشد اجازه دسترسی میدهد جالب اینجاست که جواب شرط ‘۱’ OR ‘1’ = ‘1’ همیشه درست است این SQL Query باعث میشود که فایند احراز هویت رمز عبود دور زده شود.

کد مورد نظر از OWASP گرفته شده است.

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

حالا فرض کنید که یک برنامه در یکی از فیلدهای ورودی منتظر گرفتن کد ملی میباشد تا آنرا در فیلد کد ملی ذخیره کند. این برنامه به احتمال زیاد یک فرم با کد خاصی در پشت آن دارد تا بتواند نام کاربر را در فرم ” نام خانوادگی” بپذیرد ممکن است یک کارمند مخرب (یا مهاجمین بیرونی) بتواند حمله تزریق SQL را انجام دهد و کد DROP DATABASE کد ملی را اجرا کند اینکار باعث از دست رفتن اطلاعات این دیتا بیش میشود. برای اینکار مهاجم با جای وارد کردن نام کاربری دستور DROP DATABASE کدملی را وارد میکند.

در نتیجه برنامه اینطور برداشت میکند:

‘cynet’); DROP DATABASE کدملی; — ?’

بخش اصلی این حمله، استفاده مجدد از یک apostrophe ‘ است. نتیجه این میشود که پس از cynet پایگاه داده فکر می کند نام کاربری تمام شده و از آنجا که کاراکترهای بیشتری وارد شده اند، تصمیم می گیرد که آنها باید به عنوان کد SQL تعبیر شوند و این به این معنی است که کد زیر بلافاصله اجرا میشود، بنابراین پایگاه داده یک فرمان DROP DATABASE کد ملی را اجرا می کند.

امنیت در SQL injection

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

چک کردن داده های ورودی به این شکل است که دریافت هرگونه کد SQL در ورودی برای اطمینان از اینکه یک Query SQL اجرا نشود فیلتر خواهد شد. اعتبار سنجی دادهای ورودی در مرد ایمیل چک کردن داشتن @ و یک پسوند شناخته شده و برای کد ملی ۱۰ کاراکتر رقم به یک شیوه خاص میباشد. به عنوان مثال جهت چک کردن صحت فیلد وروردی کد ملی با توجه به فرمول زیر اطمینان حاصل میکنیم. روش اعتبار سنجی کد ملی:

دهمین رقم شماره ملی را ( از سمت چپ ) به عنوان A در نظر می گیریم.

یک مقدار B در نظر می گیریم و آن را برابر با =

(اولین رقم * ۱۰) + ( دومین رقم * ۹ ) + ( سومین رقم * ۸ ) + ( چهارمین رقم * ۷ ) + ( پنجمین رقم * ۶) + ( ششمین رقم * ۵ ) + ( هفتمین رقم * ۴ ) + ( هشتمین رقم * ۳ ) + ( نهمین رقم * ۲ )

قرار می دهیم.

مقدار C را برابر با = B – (B/11)*11 قرار می دهیم.

اگر مقدار C برابر با صفر باشد و مقدار A برابر C باشد کد ملی صحیح است.

اگر مقدار C برابر با ۱ باشد و مقدار A برابر با ۱ باشد کد ملی صحیح است.

اگر مقدار C بزرگتر از ۱ باشد و مقدار A برابر با ۱۱ – C باشد کد ملی صحیح است.

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

در پایان اشاره کنم که فایروالهای خاصی مانند فایروالهای شبکه و WAF برای امنیت دیتابیس دیتابیس نیز تولید شده اند مانند: FortiDB

اشتراک گذاری:
برچسب ها: SQL Injection
در تلگرام
کانال ما را دنبال کنید!
در اینستاگرام
ما را دنبال کنید!
مطالب زیر را حتما بخوانید
  • چگونه یک متخصص امنیت سایبری شویم
    چگونه یک متخصص امنیت سایبری شویم؟ نقشه راه و دوره های مورد نیاز

    16.9k بازدید

  • کلاهبرداری های اس ام اسی ایران
    رشد سریع کلاه برداری های SMSای در ایران

    1.16k بازدید

  • CSRF چیست
    حمله CSRF چیست؟ و راهکارهای مقابله با آن

    3.04k بازدید

  • bgp hijacking چیست
    BGP Hijacking چیست؟ و چگونه انجام می شود

    1.55k بازدید

  • تهدیدهای مدرن امنیت سایبری
    تهدیدهای مدرن امنیت سایبری چیست؟

    1.36k بازدید

  • امنیت زیرساخت
    امنیت زیرساخت (Infrastructure Security) چیست؟

    1.54k بازدید

قدیمی تر Session Hijacking چیست؟ نحوه جلوگیری و روشهای آن کدام است
جدیدتر امنیت شبکه چیست؟ و چطور میتوانیم شبکه ای امن را پیکربندی کنیم؟

دیدگاهتان را بنویسید لغو پاسخ

برای نوشتن دیدگاه باید وارد بشوید.

جستجو برای:
جدیدترین نوشته ها
  • چگونه یک متخصص امنیت سایبری شویم؟ نقشه راه و دوره های مورد نیاز
  • رشد سریع کلاه برداری های SMSای در ایران
  • حمله CSRF چیست؟ و راهکارهای مقابله با آن
  • ترانک (Trunk) چیست؟ و چگونه کار می کند.
  • پروتکل ARP چیست؟ و چگونه کار می کند
  • IPv6 چیست؟ و چگونه کار می کند
  • Spanning-Tree چیست؟ و چگونه کار می کند
  • VTP چیست؟ و چگونه کار می کند
  • VLAN چیست؟ و چگونه کار می کند
  • پروتکل مسیریابی ISIS چیست و چگونه کار می کند
محصولات
  • دوره آموزش CISSP2021
    دوره آموزش CISSP
  • دوره آموزش CEH
    دوره آموزش CEH V11
  • دوره آموزش FortiGate
    دوره آموزش فایروال FortiGate
  • دوره آموزش Security+
    دوره آنلاین آموزش CompTIA Security+
  • آموزش eve
    آموزش کامل شبیه ساز شبکه EVE-NG
دوره سکیوریتی پلاس
درباره ساینت

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

اطلاعات تماس:
  • 09191461822

دوره های امنیت

  • آموزش امنیت شبکه
  • مقالات امنیت شبکه
  • آموزش Security+
  • آموزش CISSP
  • آموزش eve
  • آموزش FortiGate
  • آموزش CEH
  • امنیت سایبری
  • آموزش امنیت
  • امنیت شبکه
  • امنیت لایه ۲
  • مدارک سیسکو
  • دوره CEH
اطلاع از فروش‌های ویژه!
برای اطلاع از جدیدترین دوره‌ها کارگاه‌ها و محصولات آموزشی و فروش‌های ویژه، همین الان ایمیل‌تان را وارد کنید تا به شما خبر بدهیم!

مجوزها
ساینت در زمینه آموزش امنیت و شبکه، تحت قوانین جمهوری اسلامی ایران فعالیت می‌کند. استفاده از مطالب با ذکر منبع و لینک مستقیم مجاز است.
ورود ×
کد تایید
لطفاً کد تأیید ارسال شده را تایپ کنید
ثبت
ورود با گوگل
ورود با کد یکبارمصرف
ارسال مجدد کد یکبار مصرف(00:30)
آیا حساب کاربری ندارید؟
ثبت نام
ورود با گوگل
ارسال مجدد کد یکبار مصرف (00:30)
برگشت به ورود
  • (+98) ایران

ورود

رمز عبور را فراموش کرده اید؟

یا

ارسال مجدد کد یکبار مصرف (00:30)

هنوز عضو نشده اید؟ عضویت در سایت