یکی از رایجترین و البته کاربردیترین انواع حملات در وب سایتها و اپلیکیشنهای تحت وبِ داده محور SQL injection است که در این مطلب به توضیح آن میپردازیم.
یکی از رایجترین نوع حملات به وب سایتها، حملهی SQL injection است تا هکر با استفاده از آن بتواند دادهها و اطلاعات حساس سازمانها را بدست بیاورد. اگرچه این حمله روی تمامی اپلیکیشنهای داده محور که از پایگاه دادهی SQL استفاده میکنند، کاربرد دارد اما اغلب از آن برای حمله به وب سایتها استفاده میشود. اما واقعاً SQL injection چیست؟ با فیسیت همراه باشید تا دربارهی این موضوع صحبت کنیم.
حمله SQL injection چیست
این حمله در اصل یکی از تکنیکهای code injection است که هکرها برای وارد کردن دستورات SQL مورد نظرشان (که مطمئناً بدخواهانه است) به یک فیلد ورودی از آن استفاده میکنند تا اصطلاحاً کوئیری مورد نظر خودشان را اجرا کنند. امکان انجام این حمله به واسطهی کد نویسی نامناسب و آسیب پذیریهای اپلیکیشنهای تحت وب به وجود میآید. درواقع برنامه نویسی نامناسب این امکان را فراهم میکند که هکر بتواند از طریق فیلد ورودی، یک کوئیری را به پایگاه داده ارسال کند.
خطرات حمله SQL injection
هکرها دائماً وب سایتهای موجود در سطح اینترنت را بررسی میکنند تا اینکه وب سایتهای آسیب پذیر نسبت به حمله SQL injection را بیایند. درواقع هکرها از ابزارهایی استفاده میکنند که به صورت اتوماتیک آسیب پذیری SQLi در وب سایتها را یافته و تلاش میکنند تا به استفاده از این ترفند، در وهلهی اول و در پیش پا افتادهترین حالت ممکن، سود مالی دریافت کنند.
یک حملهی SQL injection موفق میتواند امکان دسترسی غیرمجاز به دادههای حساس مانند رمزهای عبور و... را برای هکر فراهم کند. جالب است اشاره کنیم که بسیاری از موارد نشت اطلاعات در سالهای اخیر به واسطهی تزریق اس کیو ال صورت گرفته است. از جمله مشکلاتی که حمله SQLi به وجود میآورد میتوانیم به موارد زیر اشاره کنیم:
- سرقت، تغییر و دستکاری، تخریب و از بین بردن دادههای حساس (برای مثال اطلاعات شخصی کاربران، یوزر نیم و پسورد)
- تغییر امتیازات دسترسی در سطوح مختلف اپلیکیشن، پایگاه داده و حتی سیستم عامل
- و...
مثالی از حمله SQL injection
تا به اینجا با مفهوم تزریق اس کیو ال و خطراتی که دارد آشنا شدیم اما در ادامه میخواهیم به یک نمونهی سادهی این نوع حمله اشاره کنیم.
به دو خط کد زیر نگاه کنید که یک فیلد UserId دارد که شماره شناسایی کاربر را دریافت میکند و در خط بعدی تمامی اطلاعات کاربری با آن شماره (UserId) را به نمایش درمیآورد.
UserId = getRequestString("UId"); SQLQuerry = "SELECT * FROM Users WHERE UId = " + UserId;
یک کاربر معمولی شماره کاربری خود، مثلا 105 را وارد میکند. اما یک هکر را در نظر بگیرید که زیر و بم هک را میداند و به دنبال راهی برای نفوذ به سیستم است و حالا راه را برای بدست آوردن اطلاعاتش پیدا کرده است. پس هکر با وارد کردن یک ورودی هوشمندانه، کارش را انجام میدهد. پس به جای 105، عبارت 105 OR 1=1 را وارد میکند. پس مقدار عبارت SQLQuerry حالا به صورت زیر درمیآید:
SELECT * FROM Users WHERE UserId = 105 OR 1=1;
از آنجایی که 1=1 همواره مقدار True دارد، پس این کوئیری تمامی مقادیر و تمامی سطرها و ستونهای جدول Users را در اختیار هکر قرار میدهد. این جدول میتواند شامل اطلاعات مهم و حساس کاربران از جمله رمزعبور آنها باشد! حالا سادگی حملهی SQL injection و اهمیت جلوگیری از آن را متوجه شدید؟ البته این مثال تنها یک حملهی سادهی تزریق اس کیو ال بود.
ما را در شبکههای اجتماعی مختلف تلگرام، توییتر، اینستاگرام، سروش همراهی کنید.
منبع خبر: faceit
ثبت نظر