یک حمله موفقیت آمیز تزریق SQLمی تواند منجر به دسترسی غیرمجاز به داده های حساس شود، مانند:
حملات تزریق SQLدر طول سالها در بسیاری از نقضهای اطلاعاتی با مشخصات بالا مورد استفاده قرار گرفتهاند. اینها باعث آسیب به شهرت و جریمه های نظارتی شده است. در برخی موارد، مهاجم میتواند یک درب پشتی دائمی در سیستمهای یک سازمان به دست آورد که منجر به مصالحه طولانیمدت میشود که میتواند برای مدت طولانی مورد توجه قرار نگیرد.
چگونه آسیب پذیری های تزریق SQLرا شناسایی کنیم
شما می توانید تزریق SQLرا به صورت دستی با استفاده از مجموعه ای سیستماتیک از تست ها در برابر هر نقطه ورودی در برنامه تشخیص دهید. برای انجام این کار، معمولاً باید موارد زیر را ارسال کنید:
کاراکتر نقل قول تکی ' و به دنبال خطاها یا ناهنجاری های دیگر باشید.
برخی از نحوهای خاص SQLکه ارزش پایه (اصلی) نقطه ورودی و مقدار متفاوت را ارزیابی می کند و به دنبال تفاوت های سیستماتیک در پاسخ های برنامه است.
شرایط بولی مانند OR 1=1و OR 1=2، و به دنبال تفاوت در پاسخ های برنامه باشید.
بارهای پرداختی طراحی شده برای ایجاد تاخیر زمانی در هنگام اجرا در پرس و جوی SQL، و به دنبال تفاوت در زمان پاسخگویی هستند.
بارهای OASTطراحی شده اند تا هنگام اجرای یک پرس و جوی SQL، یک تعامل شبکه خارج از باند را راه اندازی کنند و هرگونه تعامل حاصل را نظارت کنند.
از طرف دیگر، میتوانید اکثر آسیبپذیریهای تزریق SQLرا با استفاده از Burp Scannerبه سرعت و با اطمینان پیدا کنید.
تزریق SQLدر قسمت های مختلف پرس و جو
اکثر آسیبپذیریهای تزریق SQLدر عبارت WHEREیک کوئری SELECTرخ میدهند. اکثر تسترهای با تجربه با این نوع تزریق SQLآشنا هستند.
با این حال، آسیبپذیریهای تزریق SQLمیتوانند در هر مکانی در پرس و جو و در انواع مختلف پرس و جو رخ دهند. برخی از مکان های رایج دیگر که در آن تزریق SQLایجاد می شود عبارتند از:
در دستورات UPDATE، در مقادیر به روز شده یا عبارت WHERE.
در دستورات INSERT، در داخل مقادیر درج شده.
در دستورات SELECT، در نام جدول یا ستون.
در عبارات SELECT، در بند ORDER BY.
نمونه های تزریق SQL
آسیبپذیریها، حملات و تکنیکهای تزریق SQLزیادی وجود دارد که در موقعیتهای مختلف رخ میدهند. برخی از نمونه های رایج تزریق SQLعبارتند از:
بازیابی داده های پنهان، که در آن می توانید یک پرس و جوی SQLرا برای بازگرداندن نتایج اضافی تغییر دهید.
براندازی منطق برنامه، که در آن می توانید یک پرس و جو را تغییر دهید تا با منطق برنامه تداخل داشته باشد.
حملات UNION، که در آن می توانید داده ها را از جداول پایگاه داده مختلف بازیابی کنید.
تزریق SQLکور، که در آن نتایج جستجویی که شما کنترل میکنید در پاسخهای برنامه برگردانده نمیشود.