
Un amigo señaló una vulnerabilidad de inyección SQL en una aplicación con la que trabajo.
Este parámetro de búsqueda:
'; exec xp_cmdshell 'dir'; --
Devolvió el mensaje:
The EXECUTE permission was denied on the object
'xp_cmdshell', database 'mssqlsystemresource', schema 'sys'.
Porque la búsqueda se ejecuta desde una cuenta que sólo tiene permisos de selección en unas pocas tablas y procedimientos almacenados.
Me preguntaba, si un usuario malintencionado conociera la información de inicio de sesión de una cuenta de administrador para el servidor SQL, ¿le sería posible utilizar las credenciales para acceder a la raíz de la máquina a través del shell cmd, o algún otro trabajo travieso?
Respuesta1
Es posible que una inyección SQL pueda cambiar a un usuario con mayores privilegios en el servidor SQL usando exec as {credentials}
. Sin embargo, el usuario original que ejecuta la consulta debería tener IMPERSONATE
permisos para el usuario al que intenta cambiar. Esta no es una configuración predeterminada, tendría que agregarla (sería bastante extraño agregarla también).
Respuesta2
Realmente no importa si es posible o no, aquí tienes un problema legítimo que deberías intentar resolver. Este comando ni siquiera debería haberse enviado al servidor.