جستجو برای:
  • تقویم آموزشی
  • آموزش
    • آموزش آنلاین
    • آموزش آفلاین
  • لابراتوار آنلاین
  • وبینارها
    • پایتون برای هر چیزی
    • وبینار معرفی پیش نیاز های دوره های امنیت
    • وبینار معرفی دوره جامع Cisco Collaboration
    • وبینار معرفی دوره مهندسی پایتون
    • ذهنیت ها و تکنیک های چابکی برای توانمندسازی it
    • راه اندازی IP Telephony سیسکو در شبکه های سازمانی
    • وبینار Infrastructure as Code
    • وبینار امنیت سیستم های کنترل صنعتی
    • وبینار معرفی مرکز عملیات امنیت
    • وبینار ربات نویسی تلگرام با پایتون
    • وبینار نفوذ و گرفتن دسترسی از تلگرام
    • وبینار اصول نظارت بر شبکه های مخابراتی با رویکرد رگولاتوری
    • وبینار CSCU
    • وبینار Container on Wheels
    • وبینار مسیر آموزشی SANS
    • وبینار پدافند غیرعامل
    • وبینار Wazuh
  • بین الملل
    • ورود و ثبت نام کاربران
    • آموزشگاه های بین المللی
    • آزمون های بین المللی
  • دوره ها
    • امنیت
      • EC-Council
      • F5
      • Fortinet
      • ISACA
      • ISC2
      • Juniper
      • Payment Security
      • SANS
      • SCADA
      • Secure coding
      • SOC
      • Splunk
    • بانک اطلاعاتی
      • Oracle
      • SQL Server
    • برنامه نویسی
      • IOS
      • programming & Web
    • ذخیره و بازیابی اطلاعات
      • Big Data
      • EMC
      • HP
      • Netbackup
      • veeam
    • شبکه
      • Cisco Old Level
      • Cisco New Level
      • CompTIA
      • EPI
      • Linux
      • Microsoft
      • Mikrotik
      • SolarWinds
    • کارکنان دولت
    • مجازی سازی
      • Cloud computing
      • Hyper-V
      • VMWare
      • AWS
      • Azure
    • Devops
    • مخابرات
    • مدیریت فناوری اطلاعات
      • ISO 27001
      • IT Management
      • Project Management
    • ارزهای دیجیتال
    • ویژه دوران
      • کارگاه ها و سمینارها
      • محصولات دوران
  • کتابخانه
  • پادکست
  • ویدئوها
 
  • 02143585
  • دعوت به همکاری
  • درباره ما
  • تماس با ما
  • گروه دوران
  • دورتال
  • بلاگ
دوران آکادمی
دسته بندی‌ دوره‌ها
  • شبکه
    • Microsoft
    • SolarWinds
    • CompTIA
    • Cisco Old Level
      • Cisco New Level
    • Mikrotik
    • Linux
    • EPI
  • مخابرات
    • مخابرات
  • امنیت
    • ISC2
    • F5
    • EC-Council
    • Juniper
    • SOC
    • Fortinet
    • SANS
    • SCADA
    • ISACA
    • Secure coding
    • Payment Security
    • Splunk
  • مجازی سازی
    • Hyper-V
    • Cloud computing
    • VMWare
    • AWS
    • Azure
  • Devops
    • Devops
  • مدیریت فناوری اطلاعات
    • ISO 27001
    • IT Management
    • Project Management
  • برنامه نویسی
    • IOS
    • programming & Web
  • ذخیره و بازیابی اطلاعات
    • Big Data
    • HP
    • EMC
    • Netbackup
    • veeam
  • بانک اطلاعاتی
    • Oracle
    • SQL Server
  • دیجیتال مارکتینگ
    • دیجیتال مارکتینگ
  • ارزهای دیجیتال
    • ارزهای دیجیتال
  • ویژه دوران
    • کارگاه ها و سمینارها
    • محصولات دوران
    • کارکنان دولت
0

ورود و ثبت نام

  • صفحه اصلی
  • تقویم آموزشی
  • آموزش آنلاین
  • لابراتوار آنلاین
  • وبینارها
    • پایتون برای هر چیزی
    • وبینار معرفی پیش نیاز های دوره های امنیت
    • وبینار معرفی دوره جامع Cisco Collaboration
    • وبینار معرفی دوره مهندسی پایتون
    • ذهنیت ها و تکنیک های چابکی برای توانمندسازی it
    • راه اندازی IP Telephony سیسکو در شبکه های سازمانی
    • وبینار Infrastructure as Code
    • وبینار امنیت سیستم های کنترل صنعتی
    • وبینار معرفی مرکز عملیات امنیت
    • وبینار ربات نویسی تلگرام با پایتون
    • وبینار نفوذ و گرفتن دسترسی از تلگرام
    • اصول نظارت بر شبکه های مخابراتی
    • وبینار CSCU
    • وبینار Container on Wheels
    • وبینار مسیر آموزشی SANS
    • وبینار پدافند غیرعامل
    • وبینار Wazuh
  • بین الملل
    • آموزشگاه های بین المللی
    • آزمون های بین المللی
  • فرم پیش ثبت نام
  • کتابخانه
  • پادکست
  • ویدئوها

وبلاگ

دوران آکادمی بلاگ مقالات اخبار حمله های تزریق SQL

حمله های تزریق SQL

1401/09/14
ارسال شده توسط sheikhi
اخبار ، امنیت
326 بازدید
حمله های تزریق SQL

SQL (Structured Query Language) که به آن «زبان Query ساختاریافته» نیز گفته می‌شود، زبانی است که برای دستکاری و مدیریت داده ها در پایگاه داده طراحی شده است. از زمان پیدایش، SQL به طور پیوسته راه خود را در بسیاری از پایگاه‌های داده تجاری و منبع باز پیدا کرده است. حمله تزریق SQL (SQLi) نوعی حمله امنیت سایبری است که پایگاه‌های داده را با استفاده از عبارات SQL ساخته‌شده خاص هدف قرار می‌دهد تا سیستم‌ها را برای انجام کارهای غیرمنتظره و ناخواسته فریب دهد.

اقداماتی که یک مهاجم موفق ممکن است بر روی یک هدف در معرض خطر انجام دهد عبارتند از:

  • دور زدن احراز هویت
  • استخراج/سرقت داده‌ها
  • تغییر یا تخریب داده‌ها
  • حذف کردن داده ها
  • اجرا کردن کدهای دلخواه
  • دسترسی کامل به خود سیستم

حمله تزریق SQL چقدر خطرناک است؟

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

پایگاه‌های داده معمولاً برای تزریق از طریق یک برنامه هدف قرار می‌گیرند (مانند یک وب‌سایت، که درخواست ورود کاربر را می‌کند و سپس بر اساس آن ورودی، در پایگاه داده جستجو می‌کند)، اما می‌توانند مستقیماً نیز هدف قرار گیرند. حملات تزریق SQL در لیست 10 خطر امنیتی برنامه برتر OWASP است که شرکت‌ها با آن‌ها دست و پنجه نرم می‌کنند، فهرست شده‌اند.

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

حملات تزریق SQL را می‌توان به روش‌های مختلفی انجام داد. مهاجمان ممکن است رفتار سیستم را قبل از انتخاب بُردار/روش حمله خاص مشاهده کنند.

ورودی پاکسازی نشده

ورودی غیر سالم یک نوع متداول از حمله SQLi است که در آن مهاجم ورودی کاربر را فراهم می‌کند که به درستی برای کاراکترهایی که باید حذف شوند، پاکسازی نشده است، و یا ورودی برای نوع صحیح/مورد انتظار تأیید نشده است.

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

مثلاً یک وب‌سایت که برای پرداخت آنلاین استفاده می‌شود، ممکن است شماره حساب کاربر را در یک فرم وب درخواست کند و سپس آن را به پایگاه داده ارسال کند تا اطلاعات حساب مرتبط را جمع‌آوری کند. اگر برنامه وب در حال ساخت یک رشته جستجوی SQL به صورت پویا با شماره حسابی است که کاربر ارائه کرده است، ممکن است چیزی شبیه به این باشد:

ورودی پاکسازی نشده

”’;” “SELECT * FROM customers WHERE account = ‘“ + userProvidedAccountNumber”

در حالی که این برای کاربرانی که به درستی شماره حساب خود را وارد می‌کنند کار می‌کند، «در» را برای مهاجمان باز می‌گذارد. به عنوان مثال، اگر شخصی تصمیم بگیرد که شماره حساب “‘ یا “1” = “1” ارائه کند، منجر به یک رشته query می‌شود:

1’;”’ = 1“SELECT * FROM customers WHERE account = ‘’ or ‘

با توجه به اینکه “1” = “1” همیشه به TRUE تخمین زده می‌شود، ارسال این عبارت به پایگاه داده منجر به بازگشت داده‌های همه مشتریان به جای یک مشتری می‌شود.

تزریق کور  sql

حمله تزریق کور SQL که به آن تزریق استنتاجی SQL نیز گفته می‌شود، داده‌ها را مستقیماً از پایگاه داده، مورد هدف قرار نمی‌دهد. در عوض، مهاجم سرنخ‌های غیرمستقیم در رفتار را از نزدیک بررسی می‌کند. جزئیات پاسخ‌های HTTP ، صفحات وب خالی برای ورودی کاربر خاص، و مدت زمانی که پایگاه داده به ورودی کاربر خاص پاسخ می‌دهد، همه چیزهایی هستند که بسته به هدف مهاجم می‌توانند سرنخ‌هایی باشند. آن‌ها همچنین می‌توانند به یکی دیگر از راه‌های حمله SQLi اشاره کنند تا مهاجم آن را امتحان کند.

تزریق کور sql

تزریق خارج از باند

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

تزریق مرتبه دوم نوعی حمله تزریق خارج از باند است. در این حالت، مهاجم یک تزریق SQL را ارائه می‌دهد که با رفتار جداگانه‌ای از سیستم پایگاه داده ذخیره و اجرا می‌شود. هنگامی که رفتار سیستم ثانویه رخ می‌دهد (ممکن است چیزی شبیه به یک کار مبتنی بر زمان یا چیزی باشد که توسط سایر مدیران یا کاربران معمولی از پایگاه داده استفاده می‌شود) و تزریق SQL مهاجم اجرا می‌شود، در آن زمان است که «دسترسی» به یک سیستم کنترل مهاجم اتفاق می‌افتد.

مثال تزریق SQL

برای این مثال تزریق SQL، از دو جدول پایگاه داده، Users و Contacts استفاده می‌کنیم. جدول کاربران ممکن است به سادگی دارای سه فیلد باشد: شناسه، نام کاربری و رمز عبور. جدول مخاطبین اطلاعات بیشتری در مورد کاربران دارد. مانند UserID، FirstName، LastName، Address1، Email، شماره کارت اعتباری و کد امنیتی.

مثال تزریق SQL

جدول کاربران دارای اطلاعاتی است که برای ورود به سیستم استفاده می شود مانند:

  1. jsmith,P@$$w0rd
  2. sbrown,WinterIsComing!
  3. kcharles,Sup3rSecur3Password$

توجه: رمزهای عبور باید همیشه هنگام ذخیره در پایگاه داده هش و سالت شوند و هرگز در متن شفاف نباشند.

 

هنگامی که شخصی می‌خواهد وارد شود، به صفحه ورود می‌رود و نام کاربری و رمز عبور خود را وارد می‌کند. سپس این اطلاعات به وب سرور ارسال می‌شود، که یک کوئری(پرس‌و‌جوی) SQL ایجاد می‌کند و آن پرس و جو را به سرور پایگاه داده ارسال می‌کند. نمونه ای از ظاهر آن پرس و جو ممکن است این باشد:

Select ID from Users where username=’jsmith’ and password=’P@$$w0rd’

روش کار SQL به این صورت است که برای هر ردیفی که پرس و جو(query) درخواست می‌کند یک مقایسه درست یا نادرست انجام می‌دهد. در مثال ما،  queryمی‎گوید که جدول کاربران را بررسی کنید و مقدار ID را برای هر ردیفی که نام کاربری jsmith و رمز عبور P@$$w0rd است، برگردانید. اغلب، وب سرور می‌بیند که چه چیزی توسط سرور پایگاه داده برگردانده می‌شود و آیا آن یک عدد است. در مورد ما، وب سرور 1 را دریافت می‌کند و به کاربر اجازه می‌دهد صفحه ورود را پشت سر بگذارد (از آن عبور کند).

اما، اگر بخواهیم با این کار در نقش مخرب ظاهر شویم، چه؟ از آنجایی که سرور پایگاه داده آن بررسی درست یا نادرست را انجام می‌دهد، می‌توانیم آن را فریب دهیم و باور کنیم که با موفقیت احراز هویت شده‌ایم. ما می‌توانیم این کار را با افزودن یک OR به رمز عبور انجام دهیم. اگر با ‘x یا 1=1 به عنوان رمز عبور وارد شویم، یک کوئری جدید SQL ایجاد می‌کند که به شکل زیر است:

Select ID from Users where username=’jsmith’ and password=’x’ or 1=1

این برای ما کارکرد خواهد داشت، زیرا در حالی که x رمز عبور jsmith نیست، سرور پایگاه داده شرط دوم را بررسی می‌کند. اگر x رمز عبور jsmith نیست، آیا 1 برابر با 1 است؟ این کار را انجام می‌دهد! شناسه به برنامه بازگردانده می‌شود و کاربر با موفقیت احراز هویت می‌شود.

اگر یک صفحه وب قادر به نمایش داده‌ها باشد، ممکن است امکان چاپ داده‌های اضافی روی صفحه نیز وجود داشته باشد. برای دسترسی به داده‌ها، می‌توانیم دو درخواست SQL را با هم زنجیر کنیم. علاوه بر «1=1or» خود، می‌توانیم عبارت دوم مانند UNION SELECT LastName، شماره کارت اعتباری، کد امنیتی مخاطبین را به آن اضافه کنیم. بندهای اضافی مانند این ممکن است کار اضافی را بخواهند، اما دسترسی به داده‌ها هدف نهایی حمله تزریق SQL است.

روش دیگری که می‌توانیم برای تزریق SQL کور استفاده کنیم، روشی است که هیچ داده‌ای به صفحه نمایش ارسال نمی‌شود، تزریق سرنخ‌های دیگر است. مشابه شرط “or 1=1” ما، می‌توانیم به سرور دستورِ خوابیدن بدهیم. می‌توانیم اضافه کنیم: « or sleep (10) » و این همان چیزی است که به نظر می‌رسد. به سرور پایگاه داده می‌گوید 10 ثانیه چرت بزند و همه پاسخ‌ها به تأخیر می‌افتد.

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

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

از SQL پویا استفاده نکنید

  • از قرار دادن ورودی‌های ارائه شده توسط کاربر به طور مستقیم در دستورات SQL خودداری کنید.
  • عبارات آماده شده و کوئری‌های پارامتری را ترجیح دهید، که بسیار ایمن‌تر هستند.
  • رویه‌های ذخیره شده نیز معمولاً ایمن‌تر از SQL پویا هستند.

ورودی‌های ارائه شده توسط کاربر را پاکسازی کنید

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

داده های حساس را در متن ساده رها نکنید

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

محدود کردن مجوزها و امتیازات پایگاه داده

  • قابلیت‌های کاربر پایگاه داده را روی حداقل مورد نیاز تنظیم کنید.
  • این امر کاری را که یک مهاجم می‌تواند در صورت دسترسی به مجوز انجام دهد محدود می‌کند.

از نمایش مستقیم خطاهای پایگاه داده به کاربر خودداری کنید

  • مهاجمان می‌توانند از این پیام‌های خطا برای به دست آوردن اطلاعات در مورد پایگاه داده استفاده کنند.پ

 فایروال برنامه‌های کاربردی وب (WAF) برای برنامه‌های کاربردی وب که به پایگاه‌های داده دسترسی دارند استفاده کنید

  • این امر از برنامه‌های تحت وب محافظت می‌کند.
  • می‌تواند به شناسایی تلاش‌های تزریق SQL کمک کند.
  • بر اساس راه‌اندازی، می‌تواند به جلوگیری از تلاش‌های تزریق SQL به برنامه (و بنابراین، پایگاه داده) کمک کند.

از یک راه حل تست امنیت برنامه‌های کاربردی وب برای آزمایش معمول برنامه‌های وب که با پایگاه داده‌ها در تعامل هستند استفاده کنید

  • انجام این کار می‌تواند به یافتن باگ‌ها یا رگرسیون‌های جدیدی که می‌توانند به تزریق SQL اجازه دهند کمک کند.

پایگاه داده ها را با آخرین پَچ های موجود به روز نگه دارید

  • این مانع از سوء استفاده مهاجمان از ضعف ها/اشکال‌های شناخته شده موجود در نسخه‌های قدیمی می‌شود.

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

پیشنهاد ما:حمله BEC چیست و چگونه می ‌‌توان از آن جلوگیری کرد؟

۱
۲
۳
۴
۵
میانگین امتیازات ۵ از ۵
از مجموع ۱ رای
اشتراک گذاری:
در تلگرام
کانال ما را دنبال کنید!
در اینستاگرام
ما را دنبال کنید!
محتوا پنهان
1 حمله تزریق SQL چقدر خطرناک است؟
2 انواع حملات تزریق SQL
2.1 ورودی پاکسازی نشده
3 تزریق کور sql
4 تزریق خارج از باند
4.1 مثال تزریق SQL
5 چگونه از حملات تزریق SQL جلوگیری کنیم؟
5.1 از SQL پویا استفاده نکنید
5.2 ورودی‌های ارائه شده توسط کاربر را پاکسازی کنید
5.3 داده های حساس را در متن ساده رها نکنید
5.4 محدود کردن مجوزها و امتیازات پایگاه داده
مطالب زیر را حتما بخوانید
  • اکسپلویت سرریز بافر

    216 بازدید

  • لینوکس آلپاین
    لینوکس آلپاین (Alpine) چیست؟

    847 بازدید

  • شکار تهدیدات یا Threat Hunting چیست؟
    شکار تهدیدات یا Threat Hunting چیست؟

    1.08k بازدید

  • SSH Tunneling چیست
    SSH و SSH Tunneling چیست و چگونه پیکربندی میشود؟

    4.06k بازدید

  • DLP چیست؟
    DLP چیست؟

    1.53k بازدید

  • انواع VPN
    انواع VPN و بسترهای ارتباطی مورد استفاده

    2.74k بازدید

قدیمی تر برنامه نویسی ماژولار چیست؟
جدیدتر منطق دیجیتال
0 0 رای ها
رأی دهی به مقاله
اشتراک در
وارد شدن
اطلاع از
guest

guest

0 نظرات
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
دسته‌های دوره های آموزشی
  • آموزش دوره های devOPS
  • ارزهای دیجیتال
  • امنیت
    • EC-Council
    • F5
    • Fortinet
    • ISACA
    • ISC2
    • Juniper
    • Payment Security
    • SANS
    • SCADA
    • Secure coding
    • SOC
    • Splunk
  • بانک اطلاعاتی
    • Oracle
    • SQL Server
  • برنامه نویسی
    • IOS
    • programming & Web
  • درحال برگزاری
  • دیجیتال مارکتینگ
  • ذخیره و بازیابی اطلاعات
    • Big Data
    • EMC
    • HP
    • Netbackup
    • veeam
  • شبکه
    • Cisco Old Level
      • Cisco New Level
    • CompTIA
    • EPI
    • Linux
    • Microsoft
    • Mikrotik
    • SolarWinds
  • کارکنان دولت
  • مجازی سازی
    • AWS
    • Azure
    • Cloud computing
    • Hyper-V
    • VMWare
  • مخابرات
  • مدیریت فناوری اطلاعات
    • ISO 27001
    • IT Management
    • Project Management
  • ویژه دوران
    • کارگاه ها و سمینارها
    • محصولات دوران
محتوا پنهان
1 حمله تزریق SQL چقدر خطرناک است؟
2 انواع حملات تزریق SQL
2.1 ورودی پاکسازی نشده
3 تزریق کور sql
4 تزریق خارج از باند
4.1 مثال تزریق SQL
5 چگونه از حملات تزریق SQL جلوگیری کنیم؟
5.1 از SQL پویا استفاده نکنید
5.2 ورودی‌های ارائه شده توسط کاربر را پاکسازی کنید
5.3 داده های حساس را در متن ساده رها نکنید
5.4 محدود کردن مجوزها و امتیازات پایگاه داده
اطلاعات تماس
  • خیابان بهشتی، خیابان پاکستان، خیابان حکیمی پلاک ۱۲
  • 02143585 داخلی 264 و 257 و 269
  • 02143585555
پیوندهای مهم
  • گالری
  • مجوزها
  • فرم پیش ثبت نام
  • مشتریان
  • فرم درخواست مدرک
  • لابراتوار آنلاین
  • در حال تکمیل ظرفیت
  • سند راهبردی آموزش
  • بلاگ
تمامی حقوق برای آکادمی دوران محفوظ می باشد.

آموزش نه ! استخدامت هم با آکادمی دوران  ( کلیک کنید)

wpDiscuz
0
0
افکار شما را دوست داریم، لطفا نظر دهید.x
()
x
| پاسخ

ورود

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

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