Ante la necesidad de usar xp_cmdshell, con un user no perteneciente a sysadmin, es necesario hacer uso del “proxy”, en SQL Server. Solo habilitaría xp_cmdshell, si fuera estrictamente necesario y como última opción. Ya que está deshabilitado de forma predeterminada, por razones de seguridad.
Por darte un ejemplo; usuarios malintencionados pueden intentar darse o elevar sus privilegios, dentro del sitema, utilizando xp_cmdshell…
Paso1:
Para poder ejecutar xp_cmdshell se requiere habilitar su ejecución en la configuración del SQL Server utilizando el procedimiento almacenado sp_configure
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell', 1
GO
RECONFIGUREGO
Paso 2:
Si usamos un usuario que pertenece a la función fija de servidor sysadmin, podemos ejecutar el procedimiento xp_cmdshell el cual utiliza la cuenta de servicio del SQL Server, para ejecutar los comandos del sistema.
Por otro lado, cuando se llama a xp_cmdshell, por un usuario que no pertenece a la función fija de servidor sysadmin, xp_cmdshell se conecta a Windows con el nombre de cuenta y contraseña, almacenadas en la credencial con el nombre ##xp_cmdshell_proxy_account##. Si no existe esta credencial de proxy, xp_cmdshell registrará errores.
Para crear la credencial de cuenta de proxy, debe ejecutar sp_xp_cmdshell_proxy_account. Como argumentos, este procedimiento almacenado utiliza un nombre de usuario y una contraseña de Windows.
Ejemplo:
Exec sp_xp_cmdshell_proxy_account 'Dominio_o_maquinaUsuario', 'PasswDeUsuario'
Paso 3:
Si no pertenecemos a la función fija de servidor sysadmin solo debemos tener permiso de ejecución en el procedimiento almacenado xp_cmdshell (en la base de datos master ), y no hace falta asignar el permiso CONTROL SERVER como dice la ayuda, donde podremos ver ejemplos de su uso:
http://msdn.microsoft.com/en-us/library/ms175046.aspx
Apunte realizado por Norman M. Pardell
Puedes consultarme, si deseas cualquier aclaración, pregunta o sugerencia en: Contacto, contestaré tan pronto como me sea posible.