Shranjene procedure so zbirka vnaprej napisanih SQL ukazov, shranjenih v SQLServerju, med katerimi so najnevarnejši razširjeni shranjeni postopki xp_cmdshell, ki lahko izvajajo katerokoli ukaze operacijskega sistema, SA pa je skrbniški račun Microsoft SQLServerja, z najvišjimi privilegiji lahko izvaja razširjene shranjene postopke in pridobi povratne vrednosti, kot je izvajanje:
Izvršni mojster.. xp_cmdshell 'NET User Test 1234 /add' in izvršni mojster: xp_cmdshell 'net localgroup administrators test /add'
Na ta način se v sistem druge strani dodajo uporabniško ime test, geslo 1234 in administratorske pravice, kot je prikazano na sliki 1.
Zdaj bi moral razumeti, zakaj dobiš geslo za SA in največje privilegije sistema. Pogosto mnogi omrežni administratorji ne poznajo te situacije in imajo za svoje uporabnike SA preprosta gesla, kot sta 1234 in 4321, ali pa gesel sploh ne nastavijo, da lahko vsiljivci v omrežje enostavno skenirajo geslo z nekaterimi hekerskimi orodji in nato nadzorujejo računalnik.
Poleg xp_cmdshell obstajajo tudi shranjene procedure, ki jih lahko vsiljivci izkoristijo:
1. xp_regread (ta razširjena shranjena procedura lahko prebere vrednost, določeno v ključu, določenem v registru), kako jo uporabiti (pridobiti ime stroja):
DECLARE@testvarchar (50) IZVRŠNI mojster.. xp_regread @rootkey='HKEY_LOCAL_MACHINE', @key='system\controlset001\control\computername\computername', @value_name='computername', @value=@test IZPIS SELECT @test
2. xp_regwrite (ta razširjena shranjena procedura lahko zapiše vrednost, določeno v ključu, določenem v registru) in kako jo uporabiti (zapisati bbb v ključ HKEY_LOCAL_MACHINE\SOFTWARE\aaa\aaaValue):
IZVRŠNI mojster.. xp_regwrite @rootkey='HKEY_LOCAL_MACHINE', @key='SOFTWARE\aaa', @value_name='aaaValue', @type='REG_SZ', @value='bbb'
Če lahko skrbniški uporabnik kompromitiranega računalnika pregleduje podatke HKEY_LOCAL_MACHINE\SAM\SAM\ v registru, se lahko shranjeni postopki xp_regread in xp_regwrite uporabita za kloniranje skrbniškega uporabnika in pridobitev skrbniških pravic. xp_regdeletekey. xp_regdeletevalue bo prav tako predstavljal varnostna tveganja za sistem. 3. Serija postopkov shranjevanja, povezanih z OLE, ima sp_OACreate, sp_OADestroy, sp_OAGetErrorInfo, sp_OAGetProperty, sp_OAMethod, sp_OASetProperty, sp_OAStop, uporabo:
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'--
Na ta način drugi sistem doda test z uporabniškim imenom in uporabnika z geslom 1234 ter nato izvede:
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 '--
Uporabniški test, dodan v skupino Administratorji. Rešitev: Dajte SA geslo, ki je dovolj zapleteno, da kibernetskim napadalcem oteži razbijanje. Za varnost moramo prav tako uporabljati shranjene postopke v SQLS sp_addextendedproc sp_dropextendedproc erverjevem analizatorju poizvedb sp_dropextendedproc brisanje shranjenih postopkov, kot je xp_cmdshell, in nato uporabiti sp_addextendedproc obnovo, kadar je to potrebno. Opozoriti je treba, da brisanje shranjenih postopkov, povezanih z OLE, lahko povzroči, da nekatere funkcije v Enterprise Managerju postanejo neuporabne, avtor pa tukaj ne priporoča njihovega brisanja.
Zdaj, ko vemo, kako uporabljati SP_OACREATE, lahko gremo na \WINNT \system32, da poiščemo cmd.exe, net.exe in net1.exe tri datoteke ter izbrišemo vse uporabnike, ki jih lahko dostopajo, v "Lastnostih" - "Varnosti", tako da ne moremo uporabiti SP_OACREATE za povečanje števila sistemskih uporabnikov, in lahko dodamo dostopne uporabnike, ko potrebujemo dostop do teh datotek.
|