Procedury przechowywane to zbiór gotowych instrukcji SQL przechowywanych w SQLServer, wśród których najbardziej niebezpieczne są procedury rozszerzone przechowywane xp_cmdshell, które mogą wykonywać dowolne instrukcje systemu operacyjnego, a SA jest kontem administratora Microsoft SQLServer, z najwyższymi uprawnieniami, może wykonywać rozszerzone procedury przechowywane i otrzymywać wartości zwrotne, takie jak wykonanie:
Mistrz wykonawczy... xp_cmdshell 'test użytkownika sieciowego 1234 /add' i executive master: xp_cmdshell 'net localgroup administrators test /add'
W ten sposób do systemu drugiej strony dodaje się test o nazwie użytkownika, hasło 1234 oraz uprawnienia administratora, jak pokazano na Rysunku 1.
Teraz powinieneś zrozumieć, dlaczego dostajesz hasło do SA i masz najwyższe uprawnienia systemu. Często wielu administratorów sieci nie zna tej sytuacji i ma proste hasła, takie jak 1234 i 4321, dla swoich użytkowników SA, albo nawet w ogóle ich nie ustawia, aby intruzi sieciowi mogli łatwo zeskanować hasło SA za pomocą narzędzi hakerskich, a następnie kontrolować komputer.
Oprócz xp_cmdshell istnieją również procedury przechowywane, które mogą być wykorzystywane przez intruzy:
1. xp_regread (ta rozszerzona procedura przechowywana może odczytać wartość podaną w kluczu określonym w rejestrze), jak jej używać (uzyskać nazwę maszyny):
DECLARE@testvarchar (50) EXECUTIVE master... xp_regread @rootkey='HKEY_LOCAL_MACHINE', @key='system\controlset001\control\computername\computername', @value_name='computername', @value=@test OUTPUT SELECT @test
2. xp_regwrite (ta rozszerzona procedura przechowywana może zapisać wartość określoną w kluczu określonym w rejestrze) oraz jak ją używać (zapisywać bbb w kluczu HKEY_LOCAL_MACHINE\SOFTWARE\aaa\aaaValue):
EXECUTIVE master... xp_regwrite @rootkey='HKEY_LOCAL_MACHINE', @key='SOFTWARE\aaa', @value_name='aaaValue', @type='REG_SZ', @value='bbb'
Jeśli administrator użytkownika zainfekowanego komputera może przeglądać informacje HKEY_LOCAL_MACHINE\SAM\SAM\ w rejestrze, to dwie procedury przechowywane xp_regread i xp_regwrite mogą być użyte do sklonowania użytkownika administratora i uzyskania uprawnień administratora. xp_regdeletekey xp_regdeletevalue również niesie ze sobą zagrożenie dla bezpieczeństwa. 3. Seria procedur przechowywania danych związanych z OLE, ta seria procedur przechowywania ma sp_OACreate, sp_OADestroy, sp_OAGetErrorInfo, sp_OAGetProperty, sp_OAMethod, sp_OASetProperty, sp_OAStop, użycie:
DECLARE @shell INT EXEC SP_OACREATE 'wscript.shell', @shell OUTPUT EXEEC SP_OAMETHOD @shell,'run',null, 'c:\WINNT\system32\cmd.exe /c net user test 1234 /add'--
W ten sposób drugi system dodaje test o nazwie użytkownika oraz użytkownika z hasłem 1234, a następnie wykonuje:
DECLARE @shell INT EXEC SP_OACREATE 'wscript.shell', @shell OUTPUT EXEEC SP_OAMETHOD @shell,'run',null, 'c:\WINNT\system32\cmd.exe /c net localgroup administrators test /add '--
Test użytkownika, dodany do grupy Administratorów. Rozwiązanie: Nadaj SA hasło na tyle skomplikowane, że cyberatakom trudno je złamać. Dla bezpieczeństwa musimy także używać procedur przechowywanych w SQLS sp_addextendedproc sp_dropextendedproc analizatorze zapytań ervera, sp_dropextendedproc usuwać procedury przechowywane, takie jak xp_cmdshell, a następnie korzystać z sp_addextendedproc recovery, gdy jest to potrzebne. Należy zauważyć, że usunięcie procedur przechowywanych związanych z OLE może sprawić, że niektóre funkcje w Enterprise Manager staną się nieużyteczne, a autor nie zaleca ich usuwania tutaj.
Teraz, gdy wiemy, jak SP_OACREATE używać, możemy przejść do \WINNT \system32, aby znaleźć cmd.exe, net.exe i net1.exe trzy pliki, a następnie usunąć wszystkich użytkowników, którzy mają do nich dostęp, w "Właściwościach" - "Bezpieczeństwie", aby nie mogli użyć SP_OACREATE do zwiększenia liczby użytkowników systemu, a także dodać użytkowników dostępu wtedy, gdy potrzebujemy dostępu do tych plików.
|