Execução do objeto xp_cmdshell sem permissão de sysadmin.

Hoje foi solicitado que uma rotina de leitura e criação de arquivos fossem executadas pela rotina do xp_cmdshell sem permissão de sysadmin, abaixo segue roteiro de como resolvi este problema.

1 – Iremos necessitar da criação de uma conta de serviço no AD com as opções de expiração e troca de senhas desativadas:

Usuário: xp_cmdshell_proxy_account

Senha: 12345678

2 – Iremos adicionar a conta de serviço xp_cmdshell_proxy_account conforme imagem abaixo:

Link da documentação: https://learn.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/log-on-as-a-batch-job

3 – Criar a credencial de proxy no SQL Server com grant para usuário da aplicação chamado USR_APP que ira executar a xp_cmdshell:

USE master;
GO
CREATE CREDENTIAL ##xp_cmdshell_proxy_account## WITH IDENTITY = 'cesardba.net\xp_cmdshell_proxy_account', SECRET = '12345678';

USE [master];
GO
GRANT EXEC ON xp_cmdshell TO USR_APP; 
GO

4 – A procedure xp_cmdshell seria executado para fazer leitura em um mapeamento na rede, foi necessário dar permissão de leitura e escrita no mapeamento do servidor web \\srv01\arquivos para a conta cesardba.net\xp_cmdshell_proxy_account do proxy SQL Server:

5 – Testando a leitura de arquivos no diretório pelo SQL Server Management Studio com a procedure xp_cmdshell conectado com o usuário usado na aplicação USR_APP:

EXEC xp_cmdshell 'whoami.exe'
EXEC xp_cmdshell 'dir /B "\\srv01\arquivos"';

Resumo do poste, como utilizar a procedure xp_cmdshell sem permissão de sysadmin de forma simples e direta.

Leave a Reply

Your email address will not be published. Required fields are marked *

search previous next tag category expand menu location phone mail time cart zoom edit close