در حملاتی که تا اینجا مورد بررسی قرار گرفتند، یک SQL ساده به برنامه تزریق می شد. در صورتی که تدابیر لازمه اندیشیده نشود همه پایگاه های داده در برابر این نوع حملات آسیب پذیر هستند. به عنوان یک واقعیت همه سیستم های مدیریت پایگاه داده نقاط ضعف و قوت خاص خود را دارند و بنابراین امکان نفوذ به آنها برای مهاجم ها در هر زمانی وجود دارد.
یکی دیگر از حملات که از موارد قبلی پیشرفته تر است اجرای دستورات خارجی سیستم عامل می باشد از درون محیط سیستم مدیریت پایگاه داده است. به عنوان مثال SQL Server به کاربران اجازه می دهد که با استفاده از روال ذخیره شده۱ xp-cmdshell دستورات خارجی سیستم عامل را اجرا کند.
برای بهره گرفتن از این قابلیت کاربر می تواند در بخش ورود اطلاعات صفحه وب متن زیر را وارد نماید:
‘exec master..xp-cmdshell ‘net user HackUser Mypassword /ADD’–
در این صورت برنامه کاربردی عبارت SQL زیر را ساخته و آن را به SQL Server ارسال می نماید:
SELECT CustomerID, CompanyName, ContactName, ContactTitle FROM Customers WHERE CustomerID = ”exec master..xp-cmdshell ‘net user HackUser Mypassword /ADD’–
SQL Server با این عبارت Sql به عنوان دو دستور مجزا که به صورت دسته ای صادر شده اند برخورد می کند. این دو دستور به صورت زیر هستند:
SELECT CustomerID, CompanyName, ContactName, ContactTitle FROM Customers WHERE CustomerID = ”
exec master..xp-cmdshell ‘net user HackUser Mypassword /ADD’–
SQL Server در ابتدا عبارت Select را اجرا نموده و سپس دستور سیستم عامل را اجرا می نماید که در نتیجه آن کاربر HackUser با گذرواژه MyPassword به SAM ۲ محلی افزوده می شود و از ادامه عبارت SQL به دلیل اینکه پس از عبارت توضیح (–) آمده است صرف نظر می شود. در صورتی که برنامه کاربردی با اختیارات مدیر سیستم در حال اجرا باشد این دستور بدون هیچ مشکلی اجرا می شود. به عنوان مثال کاربری مانند sa که برای اهراز هویت در SQL Server به کار می رود دارای اختیارت کافی برای ایجاد کاربر جدیدی با عنوان HackUser می باشد.
[1]- System Account Manager
[2]- Stored Procedure
منبع: امداد امنیت کامپیوتری ایران