حمله به برنامه
هاي وبي (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
مي باشد.
|