Stored procedures er en samling af forudskrevne SQL-sætninger, der er gemt i SQLServer, hvoraf de farligste udvidede lagrede procedurer er xp_cmdshell, som kan udføre enhver instruktion i operativsystemet, og SA er administratorkontoen for Microsoft SQLServer, med de højeste privilegier, den kan udføre udvidede stored procedures og opnå returnværdier, såsom execution:
Exec Master.. xp_cmdshell 'net user test 1234 /add' og exec master: xp_cmdshell 'net localgroup administrators test /add'
På denne måde tilføjes en brugernavngiven test, adgangskode 1234 og administratorrettigheder til den anden parts system, som vist i figur 1.
Nu burde du forstå, hvorfor du får SA-adgangskoden og får systemets højeste privilegier. Ofte kender mange netværksadministratorer ikke til denne situation og har nogle simple adgangskoder som 1234 og 4321 til deres SA-brugere, eller sætter endda slet ikke adgangskoder, så netværksindtrængere nemt kan scanne SA-adgangskoden med nogle hackingværktøjer og derefter kontrollere computeren.
Ud over xp_cmdshell findes der også lagrede procedurer, som kan udnyttes af indtrængere:
1. xp_regread (denne udvidede lagrede procedure kan læse værdien angivet i nøglen i registreringsdatabasen), hvordan man bruger den (får maskinens navn):
ERKLÆR@testvarchar(50) EKSEKUTIV mester.. xp_regread @rootkey='HKEY_LOCAL_MACHINE', @key='system\controlset001\control\computername\computername', @value_name='computername', @value=@test OUTPUT SELECT @test
2. xp_regwrite (denne udvidede lagrede procedure kan skrive den værdi, der er angivet i nøglen i registreringsdatabasen), og hvordan man bruger den (skriv bbb i nøglen HKEY_LOCAL_MACHINE\SOFTWARE\aaa\aaaValue):
EXEC-mester.. xp_regwrite @rootkey='HKEY_LOCAL_MACHINE', @key='SOFTWARE\aaa', @value_name='aaaValue', @type='REG_SZ', @value='bbb'
Hvis administratorbrugeren på den kompromitterede computer kan gennemse HKEY_LOCAL_MACHINE\SAM\SAM\-informationen i registret, kan de to lagrede procedurer xp_regread og xp_regwrite bruges til at klone administratorbrugeren og opnå administratorrettigheder. xp_regdeletekey. xp_regdeletevalue vil også medføre sikkerhedsrisici for systemet. 3. En række OLE-relaterede lagringsprocedurer, denne række af lagringsprocedurer har sp_OACreate, sp_OADestroy, sp_OAGetErrorInfo, sp_OAGetProperty, sp_OAMethod, sp_OASetProperty, sp_OAStop, anvendelse:
DEKLAR @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å denne måde tilføjer det andet system en brugernavngiven test og en bruger med adgangskoden 1234, og udfører derefter:
DEKLAR @shell INT EXEC SP_OACREATE 'wscript.shell',@shell OUTPUT EXEC SP_OAMETHOD @shell,'run', null, 'c:\WINNT\system32\cmd.exe /c netværk localgroup administrators test /add '--
Brugertest, tilføjet til Administrator-gruppen. Løsning: Giv SA en adgangskode, der er kompleks nok til at gøre det svært for cyberangribere at knække. For sikkerhedens skyld skal vi også bruge lagrede procedurer i SQLS sp_addextendedproc sp_dropextendedproc ervers forespørgselsanalysator sp_dropextendedproc slette lagrede procedurer som xp_cmdshell og derefter bruge sp_addextendedproc recovery, når det er nødvendigt. Det skal bemærkes, at sletning af lagrede procedurer relateret til OLE kan gøre nogle funktioner i Enterprise Manager ubrugelige, og forfatteren anbefaler ikke at slette dem her.
Nu hvor vi ved, hvordan man bruger SP_OACREATE, kan vi gå til \WINNT \system32 for at finde cmd.exe, net.exe og net1.exe tre filer, og slette alle brugere, der kan tilgå dem i "Egenskaber" - "Sikkerhed", så vi ikke kan bruge SP_OACREATE til at øge antallet af systembrugere, og vi kan tilføje adgangsbrugere, når vi har brug for at få adgang til disse filer.
|