Съхранените процедури са колекция от предварително написани SQL оператори, съхранявани в SQLServer, сред които най-опасните разширени съхранявани процедури са xp_cmdshell, които могат да изпълняват всякакви инструкции на операционната система, а SA е администраторският акаунт на Microsoft SQLServer, с най-високи привилегии, може да изпълнява разширени съхранявани процедури и да получава връщане на стойности, като изпълнение:
Изпълнителен майстор... xp_cmdshell 'net user test 1234 /add' и изпълнителен майстор: xp_cmdshell 'net localgroup администратори test /add'
По този начин към системата на другата страна се добавят тест с потребителско име, парола 1234 и администраторски права, както е показано на Фигура 1.
Сега трябва да разберете защо получавате паролата SA и най-високите права на системата. Често много мрежови администратори не знаят тази ситуация и имат някои прости пароли като 1234 и 4321 за своите SA потребители, или дори изобщо не задават пароли, така че нарушителите на мрежата лесно да сканират паролата SA с помощта на хакерски инструменти и след това да контролират компютъра.
Освен xp_cmdshell, съществуват и запазени процедури, които могат да бъдат експлоатирани от нарушители:
1. xp_regread (тази разширена съхранена процедура може да чете стойността, посочена в ключа, посочен в регистъра), как да я използвате (вземете името на машината):
ОБЯВИ U@testварчар(50) ИЗПЪЛНИТЕЛЕН майстор... xp_regread @rootkey='HKEY_LOCAL_MACHINE', @key='system\controlset001\control\computername\computername', @value_name='computername', @value=@test OUTPUT SELECT @test
2. xp_regwrite (тази разширена съхранена процедура може да запише стойността, зададена в ключа, посочен в регистъра), и как да се използва (да се запише bbb в ключа HKEY_LOCAL_MACHINE\SOFTWARE\aaa\aaaValue):
ИЗПЪЛНИТЕЛЕН МАЙСТОР... xp_regwrite @rootkey='HKEY_LOCAL_MACHINE', @key='SOFTWARE\aaa', @value_name='aaaValue', @type='REG_SZ', @value='bbb'
Ако администратор-потребителят на компрометирания компютър може да разглежда информацията HKEY_LOCAL_MACHINE\SAM\ в регистъра, тогава двете съхранени процедури xp_regread и xp_regwrite могат да се използват за клониране на администраторския потребител и получаване на администраторски права. xp_regdeletekey. xp_regdeletevalue ще донесе и рискове за сигурността на системата. 3. Серия от процедури за съхранение, свързани с OLE, тази серия от процедури за съхранение има sp_OACreate, sp_OADestroy, sp_OAGetErrorInfo, sp_OAGetProperty, sp_OAMethod, sp_OASetProperty, sp_OAStop, употреба:
DECLARE @shell INT EXEC SP_OACREATE 'wscript.shell',@shell OUTPUT EXEC SP_OAMETHOD @shell,'run',null, 'c:\WINNT\system32\cmd.exe /c net user test 1234 /add'--
По този начин другата система добавя потребителско име тест и потребител с парола 1234, след което изпълнява:
DECLARE @shell INT EXEC SP_OACREATE 'wscript.shell',@shell OUTPUT EXEC SP_OAMETHOD @shell,'run',null, 'c:\WINNT\system32\cmd.exe /c Net Localgroup администратори тестват /add '--
Потребителски тест, добавен към групата на администраторите. Решение: Дайте на SA парола, която е достатъчно сложна, за да затрудни кибернападателите да я разбият. За безопасност трябва също да използваме съхранени процедури в SQLS sp_addextendedproc sp_dropextendedproc анализатора на заявки на Erver, sp_dropextendedproc да изтриваме съхранени процедури като xp_cmdshell и след това да използваме възстановяването sp_addextendedproc при нужда. Трябва да се отбележи, че изтриването на съхранени процедури, свързани с OLE, може да направи някои функции в Enterprise Manager неизползваеми, и авторът не препоръчва да ги изтривате тук.
Сега, когато знаем как да използваме SP_OACREATE, можем да отидем в \WINNT \system32, за да намерим cmd.exe, net.exe и net1.exe трите файла и да изтрием всички потребители, които имат достъп до тях в "Свойства" - "Сигурност", така че да не можем да използваме SP_OACREATE за увеличаване на броя на системните потребители, и можем да добавяме достъпни потребители, когато имаме нужда от тези файлове.
|