تزریق SQL: راهنمایی برای کاربران وردپرس
اگر در مورد امنیت وب سایت خود جدی هستید ، وقت آن است که در مورد خطرات تزریق SQL و نحوه مبارزه با آنها اطلاعات کسب کنید.
اصطلاح تزریق SQL (که SQLi نیز نامیده می شود) به نوعی تکنیک حمله سایبری گفته می شود. که روشی متداول برای هکرها برای به خطر انداختن وب سایت های مختلف از جمله سایت هایی است که وردپرس را به عنوان سیستم مدیریت محتوای خود اجرا میکنند.
در این راهنما ، ما به طور مفصل توضیح خواهیم داد که حمله تزریق SQL چگونه به نظر میرسد. و اقدامات دقیقی که باید برای جلوگیری از حمله انجام دهید. شما در مورد چگونگی عملکرد این حملات. اینکه چرا دفاع در برابر آنها بسیار مهم است. و نمونه های واقعی این آسیب پذیری ها یاد خواهید گرفت.
مقدمه: درک SQL
Structured Query Language یا “SQL” (یک سیستم مدیریت پایگاه داده رابطه ای است. در سال 1974 اختراع شد. و اولین روش آسان برای ذخیره و بازیابی انواع داده ها در سیستم های کامپیوتری بود.
از آن زمان به بعد ، این زبان محبوبیت زیادی پیدا کرده. و هنوز هم در بسیاری از سیستم های مدیریت محتوا (CMS) مانند وردپرس استفاده میشود. اندکی پس از محبوبیت این زبان در جامعه تحقیقات علمی ، موضوع معروف تزریق SQL به وجود آمد.
در سیستم هایی مانند وردپرس ، بسیاری از کوئری های SQL برای بازیابی و ذخیره داده ها استفاده میکنند.
متأسفانه ، از زمان راه اندازی SQL ، حملات تزریق SQL برای سیستم هایی که از این نوع پایگاه داده استفاده می کنند ، مانند پایگاه داده وردپرس ، مسئله ای مداوم است. استفاده از یک افزونه امنیتی با کیفیت مطمئناً میتواند در کاهش خطر حمله یا نقض ویرانگر کمک کند. با این حال ، همانطور که G.I. Joe در مورد هر نوع حمله سایبری میگوید: “دانستن نیمی از جنگ است”
تزریق SQL (یا SQLi) چیست؟
به طور خلاصه ، تزریق SQL حمله ای است که به هکرها امکان میدهد از کوئری های آسیب پذیر SQL برای اجرای درخواست خود استفاده کنند. تزریق SQL زمانی اتفاق می افتد که یک مهاجم قادر به اجرای SQL خود بر روی سرور دیگری باشد.
از تزریق SQL اغلب در نشریات فنی با عنوان “SQLI” یا “SQLi” یاد میشود. به یاد داشته باشید ، این حملات میتواند بر روی هر سیستمی که از SQL یا مشتق SQL برای مدیریت داده استفاده میکند ، روی دهد. به ویژه تزریق SQL وردپرس به دلیل حجم گسترده سایتهایی که در بستر وردپرس اجرا میشوند ، کاملاً مورد تحقیق و مستند قرار گرفته است.
بیایید به بررسی فنی بیشتری بپردازیم که این حملات شامل چه مواردی است.
تعریف تزریق SQL
طبق تعریف ، هدف تزریق SQL همیشه مخرب است و هدف آن معمولاً تحقق یک یا چند هدف از این سه هدف است:
بازیابی اطلاعات غیرمجاز : در SQL ، از دستور SELECT برای گرفتن اطلاعات استفاده می شود. اگر یک مهاجم بتواند با موفقیت یک کوئری مبتنی بر SELECT را دستکاری کند ، می تواند محتوای پایگاه داده را “تخلیه” کند. به همین دلیل رمزگذاری تمام پایگاه های داده با اطلاعاتی که نباید به طور عمومی شناخته شوند بسیار مهم است.
اصلاح داده ها : در موارد دیگر ، هدف از تزریق SQL وردپرس ممکن است تغییر در ورودی ها در پایگاه داده باشد. این امر معمولاً برای اختصاص دادن یک حساب خاص یا مجموعه ای از مجوزهاست.
انکار سرویس (DoS): حمله DoS زمانی است که یک کاربر مخرب دسترسی به سایت یا خدمات شما را برای کاربران قانونی دشوار می کند. یک دستور معمول در SQL برای حذف داده ها DELETE است. مهاجمان غالباً محتویات پایگاه داده را به طور گسترده حذف می کنند تا سایتهای هدف غیرقابل دسترسی یا غیر قابل استفاده شوند.
نکته مهم: به طور مرتب از وب سایت خود پشتیبان تهیه کنید!
بسیاری از توسعه دهندگان نسخه های پشتیبانی در قالب پرونده های .sql خارج از سرور SQL سایت های وردپرسی خود نگهداری می کنند. می توان از این پرونده ها به همراه افزونه پشتیبان گیری وردپرس استفاده کرد تا اطمینان حاصل شود که حتی اگر مهاجمی بتواند امنیت شما را مختل کند ، می توانید در مدت زمان بسیار کمی آن را بهبود بدهید. یک افزونه پشتیبان وردپرس از کل پایگاه داده وردپرس و سایر پرونده های نصب شده در وردپرس شما پشتیبان تهیه می کند.
انواع حمله SQL تزریق شناخته شده
اکنون که برخی از آسیب هایی را که حملات مبتنی بر SQL می توانند به وجود آورند شناختیم ، زمان آن فرا رسیده است که جنبه فنی تری از تزریقات را بررسی کنیم. چند زیر مجموعه مهم از انواع تزریق وجود دارد که باید بدانید.
تزریق کلاسیک SQL (یا SQLi)
رایج ترین نوع تزریق ، نسخه کلاسیک آن است. زمانی که مهاجم کد SQL را از قبل بداند. همچنین این نوع تزریق بیشتر مورد استفاده در وردپرس است. از آنجا که وردپرس منبع باز است ، عموم مردم به تمام اجزای آن ، از جمله کوئری های SQL دسترسی دارند.
بعداً به مثالهای واقعی خواهیم پرداخت ، اما با این روش تزریق ، مهاجمان اغلب برای “لغو” قسمت اول یکی از کوئری ها را دستکاری می کنند. سپس یک کوئری سفارشی را وارد می کنند تا در سرور اجرا شود. انگار که توسعه دهنده اصلی آن را نوشته باشد.
تزریق کور SQL (یا SQLi)
برخلاف نسخه کلاسیک ، تزریق SQL کور زمانی اتفاق می افتد که مهاجم به کد SQL دسترسی نداشته باشد و به سادگی مجبور شود حدس بزند. علاوه بر این ، این نوع مهارت بسیار بیشتری نسبت به SQLi کلاسیک نیاز دارد ، زیرا نتایج یک حمله موفقیت آمیز برای مهاجم نمایش داده نمی شود.
تزریق ترکیبی SQL (یا SQLi)
این شکل از حمله زمانی است که یک حمله جداگانه با SQLi ترکیب شود تا نتیجه دلخواه را بدست آورد. پیچیده ترین از سه زیر گروه ، مهاجم باید یک exploit را اجرا کند که به آنها امکان می دهد SQLi ای را اجرا کنند که به تنهایی کارساز نخواهد بود. سو استفاده هایی که به طور معمول SQLi را در این نوع حمله همراهی می کنند ، نقض احراز هویت ، حملات توزیع نشده خدمات (DDoS) ، هواپیماربایی DNS و حملات اسکریپتی بین سایت است.
چرا وب سایت های وردپرس در برابر تزریق SQL آسیب پذیر هستند؟
وردپرس در برابر تزریق های SQL آسیب پذیر است زیرا بسیار مورد استفاده قرار گرفته است (اکنون 40٪ از کل وب سایت ها را تأمین می کند!) و مدتی است (از سال 2003) وجود دارد. وردپرس مبتنی بر PHP ، یک زبان برنامه نویسی سمت سرور است که برای ادغام آسان با MySQL طراحی شده است.
وردپرس از پایگاه های داده SQL برای ذخیره تقریباً همه چیز ، از نظرات گرفته تا پست ها تا حساب ها و اطلاعات تجارت الکترونیکی ، استفاده می کند.
اکثر قریب به اتفاق تلاش های تزریق SQL وردپرس بر روی فرم هایی است که داده ها را به یک اسکریپت PHP حاوی کوئیری SQL که مهاجم می خواهد از آن سو استفاده کند ، ارسال می کند.
این یک نقص در طراحی نیست ، بلکه یک نتیجه جانبی از روش طراحی وردپرس است.
اگرچه بهره برداری اولیه از SQLi تقریباً هرگز روی CMS مدرن مانند وردپرس کار نمی کند. اما مهاجمان در طول سالها با زیرکی عمل کرده اند. نگاهی خواهیم انداخت به یک مثال ساده از شکل SQLi در یک وب سایت کاملاً محافظت نشده.
هشدارهای مهم در مورد تزریق SQL
تقریباً در هر کشوری ، حتی اقدام به سو استفاده از یک سایت وردپرسی که متعلق به شما نیست ، غیرقانونی است. مجازات ها ممکن است کاملاً شدید باشد و حتی در برخی موارد منجر به حبس شود! در حالی که آزاد هستید نمونه های ما را از طریق سخت افزار شخصی خود امتحان کنید ، هرگز سعی نکنید این کار را بدون مجوز صریح در سایت های دیگر انجام دهید.
قبل از ادامه ، یک نکته مهم دیگر وجود دارد که میخواهیم کاملاً روشن کنیم تا به شما کمک کنیم تا در مسیر مشترک وردپرس و امنیت سایبری خود در مسیر حرکت باشید!
به روز نگه داشتن نسخه وردپرس یکی از بهترین دفاع ها در برابر سو استفاده های SQLi است. حتی اگر به معنای خراب شدن موقت چند افزونه باشد ، برای امنیت سایت شما ارزش دارد.
نمونه تزریق SQL
اکنون که این سلب مسئولیت ها را از سر راه خود برداشتیم ، بیایید به نمونه های SQLi نگاهی بیندازیم. برای درک این موارد ، باید کمی اصطلاحات SQL را بدانید. SQL از دستوراتی مانند SELECT برای گرفتن اطلاعات ، DROP TABLE برای از بین بردن کامل جدول درون پایگاه داده. DELETE برای حذف ردیف ها از یک جدول و موارد دیگر استفاده می کند. علاوه بر این ، کاراکتر “*” در SQL به معنی “همه” است.
اساسی ترین پرسش در SQL این است: SELECT * FROM TABLE_NAME. این امر می گوید که همه داده ها از جدول به نام “TABLE_NAME” انتخاب و نمایش داده شود. وقتی داده ها را به فرم ورود وارد می کنید ، از طریق یک اسکریپت PHP اجرا می شود که اعتبارنامه شما را با یک جدول از کاربران مطابقت می دهد. در مثال ما ، تصور خواهیم کرد که در امنیت سایبری بسیار بد عمل کرده ایم و یک جدول کاملاً رمزگذاری نشده و جداگانه با ستونهایی به نام USER و PASS داریم.
آماده سازی کوئری
در پایگاه داده بسیار ناامن ، جدول ما با نام های کاربری و رمزهای عبور BADLY_DONE_TABLE نامیده می شود. کوئری برای تأیید اعتبار ورود به سیستم کاربر به سادگی این است: SELECT * FROM BADLY_DONE_TABLE WHERE USER = ‘[username from form]’ AND PASS = ‘[password from form]’.
همانطور که مشاهده می کنید ، در صورتی که نام کاربری و گذرواژه وارد شده در فرم مطابقت داشته باشد ، میتوانیم “لیست” کاربران را بدست آوریم. SQL همچنین اجازه می دهد تا از کلمه کلیدی OR (یا)در عبارات شرطی استفاده شود ، مانند AND (و) که در درخواست ما مشاهده می کنید.
اکنون وقت آن است که سواستفاده (exploit) خود را بسازیم.
سواستفاده از جستجوی SQL محافظت نشده ما
کوئری ما تنظیم شده است تا در صورت تطابق نام کاربری و رمز ورود کاربر ، کاربر را برگرداند. ما میتوانیم “بلنبیخی” را به عنوان نام کاربری خود تایپ کنیم و سپس ‘ OR ‘1’=’1. را تایپ کنیم.
یعنی اگر عدد “1” با عدد “1” برابر باشد (شگفت آور است!) ، بدون توجه به صحیح بودن اعتبارنامه هایی که وارد کردیم ، همه چیز را از جدول برگردان.
در سال 1998 ، این نتیجه می داد. اکنون ، به طور کلی مهارت های بیشتری در هر دو SQL و SQLi برای ساخت سواستفاده های مفید برای وردپرس نیاز است.
تزریق SQL و وب سایت های وردپرس
مثال قبلی ما در سایت های مدرن وردپرس کار نمیکند مگر اینکه مدیر سایت تمام راهکارهای امنیتی را غیرفعال کند.
با این حال ، با استفاده از اصول یکسان ، هکرها همچنان سوءاستفاده های SQLi را اجرا کرده و یا به سایر کاربران می فروشند.
از آنجا که وردپرس منبع باز است و یک جامعه توسعه گسترده در پشت آن قرار دارد. بسیاری از محققان امنیتی اغلب این سواستفاده ها را قبل از هکر ها ، پیدا میکنند. سپس آنها را به تیم وردپرس گزارش میدهند. تیم وردپرس در اسرع وقت یک راه حل سریع ایجاد کرده و آن را به عنوان یک به روزرسانی منتشر میکند.
پیشگیری از تزریق SQL
پس از خواندن این مقاله ، شما احتمالاً از خود میپرسید که چگونه اطمینان حاصل کنید که سایت WordPress شما قربانی بعدی حمله SQLi نمیشود. ما در اینجا چند توصیه برای شما داریم:
در مورد هرگونه فایل PHP که مینویسید یا از سایت های دیگر میگیرید و نصب میکنید (به طور خاص افزونه های وردپرس) بسیار مراقب باشید. تمام آنچه که لازم است یک اسکریپت PHP ضعیف است. که ورودی کاربر را خراب می کند تا سایت وردپرس شما را خراب کند.
در صورت تلاش کسی برای انجام این حمله علیه سایت شما ، از افزونه نظارت امنیتی شناخته شده استفاده کنید. تا بتوانید از قبل آن را مسدود کنید.
از همه مهمتر ، شما همیشه باید سایت وردپرس خود را به آخرین نسخه به روز کنید. بسیاری از دارندگان سایت دلایلی به روزرسانی را متوقف میکنند. و سایت خود را در برابر نا امن می کنند.
افزونه ها و قالب های وردپرس خود را به روز کنید. افزونه ها و قالب های آسیب پذیر دلیل شماره 1 هک شدن سایت های وردپرس است.
با هم به یک وب امن تر برسیم
اگر از مشاهده همه تهدیدهای امنیتی بالقوه ای که به دنبال سایت وردپرس شما هستند ، کمی احساس ضعف و نگرانی میکنید حقیقت این است که تهدیدها زیاد هستند. اما راه حل ها می توانند ساده باشند.
شما می توانید تمام نگرانی های امنیت وب سایت وردپرس خود را به تیم متخصص مغازتو بسپارید. ما در خدمات پشتیبانی وردپرس تمام اقدامات لازم برای امنیت وب سایت شما را فراهم می کنیم.
امیدواریم که این راهنما به شما کمک کند تا خطر حملات تزریق SQL به سایت وردپرس خود را درک کنید.
دیدگاهتان را بنویسید