حمله به برنامه
های وبی (4):
حملات پیشرفته تر
در
حملاتی که تا اینجا مورد بررسی قرار گرفتند، یک
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
می باشد.
|