فهرست مطالب
ToggleSql injection یکی از معروفترین حملات برای هک و نفوذ به دیتابیس بوده که اغلب خرابکاران از آن برای نفوذ به منابع اطلاعاتی استفاده میکنند. از این نوع تکنیک برای ازکارانداختن و ازبینبردن پایگاهداده استفاده میشود و در هک وب کاربرد دارد. تزریق کدهای SQL به معنای قراردادن کدهای مخرب در SQL بهوسیله صفحات وب است. هنگامی که هکرها از این طریق وارد میشوند، میتوانند پایگاه داده وب سایت را کنترل کنند و اطلاعات کاربران را بربایند. در این مقاله توضیح خواهیم داد که حملات SQL Injection چگونه کار میکنند، چگونه با حملات SQL Injection مقابله کنید و چگونه یک ابزار آنتی ویروس قوی میتواند از شما در برابر حملات سایبری محافظت کند.
SQL چیست؟
قبل از اینکه وارد بخش توضیح چگونگی تزریق شویم، اجازه دهید ابتدا مشخص کنیم که SQL چیست. SQL که در دهه ۱۹۷۰ توسعه یافت، مخففStructured Query Language بوده و از آن زمان به زبان استاندارد برای مدیریت پایگاه داده تبدیل شده است. اگر یک وب سایت برای یافتن یا ویرایش اطلاعات نیاز به دسترسی به پایگاه داده روی سرور خود داشته باشد، از SQL برای رسیدگی به آن جستجو (Query) یا درخواست استفاده میکند.
SQL یک زبان گسترده و انعطاف پذیر است که به طراحان پایگاه داده امکانات زیادی میدهد. اکثر طراحان، پایگاههای داده را با مجموعهای از قوانین SQL منحصربهفرد ایجاد میکنند تا به بهترین نحو با نیازهای خاص خود مطابقت داشته باشد. شما نمیتوانید به سادگی SQL یک پایگاه داده را روی دیگری کپی و جایگذاری کنید، زیرا این پایگاه دادهها ممکن است به دو روش کاملا متفاوت ساخته شده باشند.
SQL Injection چیست؟
اگر یک توسعه دهنده وب مراقب نباشد، ممکن است سایت خود را به گونهای بسازد که یک عامل مخرب بتواند اثرات ناخواستهای را در پایگاه داده ایجاد کند. این روشی است که SQL Injection یا SQLI اتفاق میافتد. هکر کد SQL مخرب را در وب سایت وارد یا تزریق میکند (نوعی بدافزار که به عنوان payload شناخته میشود) و آن را فریب میدهد تا آن کد را به عنوان یک جستجوی معتبر به پایگاه داده خود تحویل دهد.
حملات SQL Injection تنها زمانی امکان پذیر است که یک وب سایت، فاقد پاکسازی کامل ورودیها باشد. پاکسازی ورودیها فرآیندی است که اطمینان حاصل میکند که ورودی کاربران نمیتواند از شکافها عبور کند و به عنوان کد اجرایی در سمت سرور عمل کند. پاکسازی ورودی برای توسعه دهنده زحمت بیشتری دارد، اما در نهایت از وب سایت در برابر SQL Injection، اسکریپت بین سایتی و انواع دیگر حملات محافظت میکند.
حملات SQL Injection چه کاری میکنند؟
هکرها از حملات SQL Injection برای ورود به پایگاه داده وب سایت استفاده میکنند. آنها ممکن است قصد داشته باشند که با حذف دادهها در سایت خرابکاری کنند، یا ممکن است به دنبال ویرایش پایگاه داده باشند، به خصوص اگر وب سایتهای مالی هدف قرار بگیرند. هنگامی که هکر کنترل پایگاه داده را در اختیار داشته باشد، تغییر مانده حساب مشتریان و انتقال پول به حساب هکر کار آسانی خواهد بود.
در بیشتر موارد، مجرم سایبری به دنبال دادههای ذخیره شده مربوط به کاربران وبسایت، مانند نام کاربری و رمز ورود به سیستم است. هکرها میتوانند از این دادهها برای انجام اقداماتی از طرف کاربران آسیبدیده استفاده کنند یا لیستی از این اطلاعات را جمعآوری کنند تا به مجرمان سایبری دیگر در دارک وب بفروشند. افرادی که این اطلاعات دزدیده شده را میخرند اغلب این کار را برای ارتکاب سرقت هویت و کلاهبرداری انجام میدهند.
حمله SQL Injection چگونه اتفاق میافتد؟
اگر یک وب سایت ورودیها را به طور کامل پاکسازی نکرده باشد، یک هکر میتواند کد SQL خود را تزریق کند. سپس، وبسایت کد هکر (payload) را به سرور خود تحویل میدهد. هنگامی که کد هکر به پایگاه داده وب سایت در سرور میرسد، وارد عمل میشود و پایگاه داده را برای تحقق اهداف هکر تحت تأثیر قرار میدهد. در ادامه روشهای حمله SQLI مورد بررسی قرار گرفتهاند.
SQL Injection از طریق ورودی کاربر
SQL Injection از طریق دادههای ورودی کاربر سادهترین راه برای انجام حملات SQL Injection است. هزاران وب سایت ورودی کاربران را جمع آوری کرده و به سرور ارسال میکنند. اگر چیزی آنلاین سفارش دادهاید و آدرس خود را وارد کردهاید، شامل این جمع آوری اطلاعات میشوید. همین امر در مورد بخش نظرات یا نقد و بررسیهای کاربران نیز صدق میکند. بدون پاکسازی ورودی قوی، یک فرم قابل پر کردن یا کادر نظر یک آسیب پذیری آشکار SQL Injection است.
به جای پر کردن این فرمها با پاسخها و محتوای استاندارد، هکرها با استفاده از SQL Injection مسیر دیگری را انتخاب میکنند. آنها یک رشته کد SQL را وارد میکنند. هنگامی که یک وب سایت با پاکسازی ورودی ضعیف محتوای فرم را به سرور خود ارسال میکند، کد هکر اجرا میشود. به این ترتیب SQLI به هکرها اجازه میدهد تا دادههای کاربر را بدزدند یا عملکرد یک وب سایت را مختل کنند.
به عنوان یک مثال واقعی، موقعیتی را در نظر بگیرید که در آن فرد برای شغلی درخواست میکند. نام متقاضی باب آلیس است، اما در درخواست خود مینویسد «باب آلیس را استخدام کنید». هنگامی که مدیر استخدام نام متقاضی را با صدای بلند میخواند، تیم منابع انسانی میشنود که مدیر استخدام میگوید «باب آلیس را استخدام کنید» و بنابراین یک پیشنهاد شغلی رسمی برای باب میفرستند. باب به جای ذکر نام واقعی خود، یک payload SQL ارسال کرد که وقتی توسط پایگاه داده – مدیر استخدام – اجرا میشود، باعث استخدام باب خواهد شد.
SQL Injection از طریق دستکاری کوکی
کوکیها فایلهای کوچکی هستند که در مرورگر شما ذخیره میشوند و به وب سایتها اطلاعاتی درباره شما میدهند. گاهی اوقات آنها مفید هستند، مانند زمانی که به راحتی اعتبار ورود به سیستم و تنظیمات برگزیده شما را به خاطر میآورند. گاهی اوقات، کوکیها وحشتناک هستند – بسیاری از سایتها از کوکیها برای ردیابی رفتار شما در اینترنت و همچنین در صفحات خود استفاده میکنند. آنها از بینشهای به دست آمده از طریق ردیابی برای تحقیقات بازار و اهداف تبلیغاتی استفاده میکنند. این نوع دوم کوکی یک ابزار متداول ردیابی وب است. مجرمان سایبری میتوانند کوکیها را دستکاری یا «مسموم» کنند تا وقتی اطلاعات را به سرور وبسایت ارسال میکنند، کد SQL را به پایگاه داده تحویل دهند.
SQL Injection از طریق متغیرهای سرور
هنگامی که URL یک وب سایت را در مرورگر خود وارد میکنید، توالی سریعی از ارتباطات وجود دارد که آن سایت را به شما ارائه میدهد. به عنوان بخشی از این فرآیند، مرورگر شما لیستی از اطلاعاتی را درخواست میکند که به عنوان متغیرهای سرور شناخته میشوند که به آن کمک میکند تا سایت را به درستی ارائه دهد. هکرهای باهوش میتوانند کد SQL را در درخواستهای مرورگر قرار دهند، که اگر به درستی پاکسازی نشود، میتواند به پایگاه داده وب سایت روی سرور تزریق شود.
SQL Injection از طریق ابزارهای هک خودکار
اگر همه اینها خیلی پیچیده به نظر میرسد، یک گزینه سادهتر وجود دارد. ابزارهای تزریق خودکار SQL مانند SQLMAP هرگونه آسیب پذیری SQL Injection موجود در یک وب سایت معین و پایگاه داده آن را شناسایی و از آنها سوء استفاده میکند. sqlmap یک ابزار منبع باز است که در بین مدیران پایگاه داده و توسعه دهندگان وب سایت که به دنبال اصلاح سایتهای خود در برابر SQL Injection هستند، محبوب است، اما هیچ چیز مانع از استفاده از sqlmap به قصد خرابکاری نمیشود.
حملات SQL مرتبه دوم
SQL Injection مرتبه دوم این تکنیک را با رویکردی بسیار پیچیدهتر به سطحی بالاتر میبرد. از آنجایی که بسیاری از وبسایتها در برابر ورودیهای مستقیم کاربر پاکسازی میشوند، هکرها نوعی از SQL را تزریق میکنند که برای اجرا در بازدیدهای بعدی طراحی شده است. با وجود اقدامات اولیه پاکسازی ورودی، وب سایت هدف یک حمله معمولی SQLI را مسدود میکند که به عنوان یک حمله «مرتبه اول» شناخته میشود. اما حمله SQL Injection مرتبه دوم مثل یک بمب ساعتی است. شرایط این حمله به این صورت است:
یک هکر مقداری کد را به پایگاه داده تزریق میکند که به تنهایی هیچ کاری انجام نمیدهد. اما این کد برای تغییر نحوه عملکرد پایگاه داده در هنگام تفسیر آن کد به عنوان ورودی پایگاه داده طراحی شده است. بنابراین هنگامی که SQL پایگاه داده کد هکر را در توابع خود قرار میدهد، حمله آغاز میشود.
برای نشان دادن این مفهوم، اجازه دهید به یکی از آثار کلاسیک ادبیات بپردازیم: اودیسه هومر. در طول داستان، اودیسیوس توسط یک سیکلوپ به نام پولیفموس اسیر میشود. اودیسیوس به عنوان بخشی از نقشه فرار خود، پولیفموس را مست میکند. وقتی پولیفموس نام او را میپرسد و میخواهد از او برای شراب تشکر کند، ادیسه پاسخ میدهد که نام او «هیچکس» است.
این اولین مرحله از حمله مرتبه دوم SQL است: اودیسیوس به عنوان هکر SQL payload به ظاهر خوش خیم «هیچکس» را به پایگاه داده پولیفموس تزریق میکند. بعدا اودیسیوس پولیفموس را کور میکند. سیکلوپ خشمگین میدود تا به برادرانش بگوید که او توسط «هیچکس» فریب خورده و کور شده است. در جواب همه میخندند. پولیفموس به جای انتقام گرفتن، تحقیر میشود و اودیسه میتواند فرار کند.
مشخص است که «هیچکس» به خودی خود بی خطر است اما وقتی پولیفموس سعی میکند از آن استفاده کند، حمله خود را نشان میدهد. از آنجایی که این نوع حمله در ابتدا غیرقابل شناسایی است، تزریق مرتبه دوم SQL یک روش غیرمستقیم و مؤثر برای مجرمان سایبری است تا از رویههای اولیه پاکسازی ورودی عبور کنند.
تاثیر حملات SQL Injection
حملات SQL Injection میتواند طیف گستردهای از پیامدها را به همراه داشته باشد. یک حمله SQLI میتواند اثرات مخربی بر روی قربانیان فردی و همچنین کسب و کار یا شرکت مورد نظر داشته باشد.
اثرات SQLI برای افراد
در حالی که SQLI مستقیما شما را هدف قرار نمیدهد، اگر از وب سایتی استفاده میکنید که هدف حمله قرار گرفته است، تأثیر آن میتواند قابل توجه باشد. داشتن یک حساب کاربری با یا ارسال دادههای شخصی در وب سایتی که هدف هکرها قرار گرفته، میتواند به آنها اجازه دهد کارهای بسیار بیشتری از دستیابی به اطلاعات شخصی شما انجام دهند. حملات SQL Injection میتواند عواقب زیادی برای افراد داشته باشد، مانند:
- از دست دادن پول: یک هکر میتواند از SQLI در بانک یا موسسه مالی دیگر برای انتقال پول از حساب شما استفاده کند.
- سرقت هویت: با کنترل بر پایگاه داده، هکرها میتوانند دادههای آن را ضبط کرده و در دارک وب بفروشند. سپس سایر مجرمان سایبری میتوانند این دادهها را خریداری کرده و از آن برای سرقت هویت استفاده کنند.
میتوانید با راهکارهای امنیتی که دارک وب را پایش میکند، خود را در برابر حملات احتمالی سرقت هویت محافظت کنید. علاوه بر این یک راهکار امنیتی موثر در صورتی که وبسایتی که استفاده میکنید در معرض هک یا سایر حملات امنیتی قرار گرفته باشد به شما هشدار میدهد.
اثرات SQLI برای مشاغل
از آنجایی که کسبوکارها هدف مستقیم حملات SQLI هستند، با طیف وسیعتری از تهدیدات روبرو هستند. هنگامی که یک هکر وارد یک پایگاه داده میشود، میتواند چندین کار انجام دهد و هنگامی که این خبر عمومی شود، کسب و کار هدف باید هزینه زیادی برای ترمیم اعتبار از دست رفته خود صرف کند.
در ادامه فقط چند مورد از راههایی که حملات SQLI میتوانند به کسب و کارها آسیب برسانند آورده شده است:
- خرابکاری: با پاک کردن پایگاه داده یک کسب و کار یا از کار انداختن وب سایت آن، یک هکر به راحتی میتواند یک کسب و کار را به آشوب بکشاند.
- سرقت دادهها: هدف بسیاری از حملات SQLI سرقت دادههای محرمانه مثل اسرار تجاری، اطلاعات داخلی، مالکیت معنوی محافظت شده و اغلب اطلاعات کاربر یا مشتری است.
- نقض امنیت: یک هکر ممکن است بتواند از محتویات یک پایگاه داده نقض شده برای دسترسی به سایر بخشهای شبکه داخلی یک شرکت استفاده کند. در نهایت، کل شبکه ممکن است در معرض خطر قرار گیرد.
- از دست دادن شهرت: پس از تحمل اثرات حمله SQLI، کسب مجدد اعتماد مشتریان و عموم مردم برای یک کسب و کار دشوار است.
هزینههای احتمالی حملات SQLI
با توجه به دامنه آنچه که یک هکر میتواند با SQLI به دست آورد، هزینههای بالقوه میتواند قابل توجه باشد. مطالعهای که در سال ۲۰۱۴ انجام شد نشان داد که حتی حملات SQL Injection جزئی میتواند حدود ۲۰۰۰۰۰ دلار هزینه داشته باشد که این فقط پیامدهای مالی است.
یک مقاله Ars Technica که در همان سال منتشر شد گزارش داد که نیروی دریایی ایالات متحده بیش از نیم میلیون دلار برای پاسخ به یک حمله SQL Injection هزینه کرده است. در نتیجه این حمله، بیش از ۷۰ نفر از نیروهای خدماتی نتوانستند به مدت چند ماه به درخواستهای معلق انتقال رسیدگی کنند. علاوه بر هزینههای مالی مقابله با یک حمله، آسیب بلندمدت وارد شده به شهرت یک کسبوکار ممکن است غیرقابل برگشت باشد.
چگونه میتوانیم از حملات SQL Injection جلوگیری کنیم؟
تا زمانی که یک توسعه دهنده وب نباشید، نمیتوانید اقدامی کنید. SQL Injection مستقیما شما را هدف قرار نمیدهد، بنابراین هیچ راهی برای شناسایی، مقابله یا مسدود کردن یک حمله برای شما وجود ندارد. تا زمانی که اثرات حمله در طول زمان خود را نشان ندهند، متوجه نخواهید شد که از یک سایت در معرض خطر استفاده میکنید یا خیر.
مسئولیت جلوگیری از حملات SQL Injection بر عهده مدیران و تیم فنی وب سایتهایی است که استفاده میکنید. اما برای مبارزه با SQLI کاملا ناتوان نیستید. میتوان با استفاده از ابزارهای بررسی هک شدن یک سایت شروع کنید تا ببینید آیا هر یک از اطلاعات ورود شما به وب سایت فاش شده است یا خیر. اگر چنین است، بلافاصله رمز عبور خود را در آن سایت تغییر دهید. از آنجایی که بسیاری از حملات SQL Injection برای سرقت دادههای کاربر استفاده میشوند، بررسی هک شدن وب سایت، یکی از راههای کاهش خطراتی است که متوجه شما میشود.
چگونه میتوان از SQL Injection جلوگیری کرد؟
در حالی که نمیتوانید از وقوع حملات SQL Injection جلوگیری کنید، میتوانید احتمال درگیر شدن با چنین حملاتی را کاهش داده و در صورت گرفتار شدن، اثرات مخرب آن را کمتر کنید. عادات ایمن زیر را به عنوان بخشی از روال استفاده اینترنت خود قرار دهید:
- اطلاعات شخصی خود را در اختیار وب سایتهای مشکوک وارد نکنید. درعوض، اطمینان حاصل کنید که دادههای حساس را فقط در وبسایتهای قابل اعتمادی وارد میکنید که تدابیر امنیتی قوی دارند. البته این راه هم نمیتواند متضمن درگیر نشدن با این نوع حملات باشد، اما برای شروع اقدام مثبتی است.
- در جریان اخبار امنیتی فناوری باشید. شرکتها اعلام میکنند که مورد حمله قرار گرفتهاند یا نه و چه زمانی پایگاه دادههای آنها توسط حملات هکری نقض شده است. از اخبار مربوط به وبسایتهایی که استفاده میکنید آگاه باشید و اگر با یک اطلاعیه حمله SQLI مواجه شدید، اطلاعات ثبت نام خود را در اسرع وقت تغییر دهید.
- روشهای ایجاد رمز عبور ایمن را یاد بگیرید و استفاده کنید. میتوانید با استفاده از رمزهای عبور منحصر به فرد برای هر حسابی که دارید، خطر را کاهش دهید. روشهای خوب ایجاد رمز عبور را دنبال کنید تا یک قدم جلوتر از هکرها بمانید.
- از یک برنامه مدیریت رمز عبور استفاده کنید. اگر وب سایتی که استفاده میکنید در معرض خطر قرار گرفته باشد، بسیاری از برنامههای مدیریت رمز عبور به شما هشدار میدهند. اگر چنین است، میتوانید به سرعت از یک رمز عبور منحصر به فرد و سخت به رمز عبور به دیگری تغییر دهید. برنامهای را نصب کنید که عملکرد چند پلتفرمی را فراهم میکند تا بتوانید رمزهای عبور خود را در همه دستگاههای خود داشته باشید.
- از نرم افزار آنتی ویروس استفاده کنید. یک ابزار آنتی ویروس قابل اعتماد میتواند از دستگاه شما در برابر طیف گستردهای از تهدیدات از جمله وب سایتهای مخرب محافظت کند.