A tárolt eljárások előre megírt SQL utasítások gyűjteménye, amelyeket az SQLServerben tárolnak, ezek közül a legveszélyesebb kiterjesztett tárolt eljárások a xp_cmdshell, amelyek bármely operációs rendszer utasítását képesek végrehajtani, és az SA a Microsoft SQLServer adminisztrátori fiókja, a legmagasabb jogosultságokkal rendelkezik, képes kiterjesztett tárolt eljárásokat futtatni, és visszanyerni a visszatérési értékeket, például a végrehajtást:
Végrehajtó mester.. xp_cmdshell 'net user test 1234 /add' és exec master: xp_cmdshell 'net localgroup administrators test /add'
Így egy felhasználói nevű teszt, 1234-es jelszó és adminisztrátori jogosultságok kerülnek a másik fél rendszerébe, ahogy az 1. ábrán látható.
Most már értened kell, miért kapod meg a SA jelszót, és miért kapod meg a rendszer legmagasabb jogosultságait. Gyakran sok hálózati adminisztrátor nem ismeri ezt a helyzetet, és egyszerű jelszavakat használnak, mint például 1234 és 4321 a SA felhasználók számára, vagy egyáltalán nem állítanak be jelszavakat, így a hálózati behatolók könnyen beolvashatják a SA jelszót néhány hackelő eszközzel, majd irányíthassák a számítógépet.
A xp_cmdshell mellett vannak tárolt eljárások is, amelyeket a betolakodók kihasználhatnak:
1. xp_regread (ez a kiterjesztett tárolt eljárás képes olvasni a regiszterben megadott kulcsban megadott értéket), hogyan kell használni (megszerezni a gép nevét):
DEKLARÁLNI@testvarchar (50) EXECUTIVE mester.. xp_regread @rootkey='HKEY_LOCAL_MACHINE', @key='system\controlset001\control\computername\computername', @value_name='computername', @value=@test KIMENET SELECT @test
2. xp_regwrite (ez a kiterjesztett tárolt eljárás képes megírni a regiszterben megadott kulcsban megadott értéket), és hogyan kell használni (bbb írása a HKEY_LOCAL_MACHINE\SOFTWARE\aaa\aaaValue kulcsba):
EXECUTIVE mester.. xp_regwrite @rootkey='HKEY_LOCAL_MACHINE', @key='SOFTWARE\aaa', @value_name='aaaValue', @type='REG_SZ', @value='bbb'
Ha a kompromittált számítógép adminisztrátor felhasználója böngészheti a HKEY_LOCAL_MACHINE\SAM\SAM\ információkat a nyilvántartásban, akkor a xp_regread és xp_regwrite tárolt két eljárás felhasználható az adminisztrátor felhasználó klónozására és az adminisztrátori jogosultságok megszerzésére. xp_regdeletekey xp_regdeletevalue biztonsági kockázatokat is hoz a rendszerben. 3. Az OLE-hez kapcsolódó tárolási eljárások sorozata, ezek a tárolási eljárások sp_OACreate, sp_OADestroy, sp_OAGetErrorInfo, sp_OAGetProperty, sp_OAMethod, sp_OASetProperty, sp_OAStop, használatot foglalnak:
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'--
Így a másik rendszer hozzáad egy felhasználónevű tesztet és egy 1234-es jelszóval rendelkező felhasználót, majd végrehajtja:
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 '--
Felhasználói teszt, hozzáadva az Adrátorok csoporthoz. Megoldás: Adj egy olyan jelszót a SA-nak, amely elég összetett ahhoz, hogy a kibertámadók számára megnehezítsék a feltörést. A biztonság érdekében SQLS-ben tárolt eljárásokat sp_addextendedproc sp_dropextendedproc Erver's query analyzer-t is használnunk kell, sp_dropextendedproc törölni a tárolt eljárásokat, például az xp_cmdshell-t, majd szükség esetén sp_addextendedproc helyreállítást is alkalmazunk. Fontos megjegyezni, hogy az OLE-hez kapcsolódó tárolt eljárások törlése bizonyos funkciók használhatatlanságát okozhatja az Enterprise Managerben, és a szerző nem javasolja ezek törlését itt.
Most, hogy tudjuk, hogyan kell használni a SP_OACREATE, elmehetünk a \WINNT \system32 oldalra, hogy megtaláljuk a cmd.exe, net.exe és net1.exe három fájlt, és töröljük az összes felhasználót, aki hozzáférhet hozzájuk a "Tulajdonságok" - "Biztonság" részben, így ne tudjuk SP_OACREATE segítségével növelni a rendszerfelhasználók számát, és hozzáadhatjuk a hozzáférési felhasználókat, amikor szükségünk van ezekhez a fájlokhoz.
|