صفحه اول > مقالات

 

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


[1]- System Account Manager

[2]- Stored Procedure