MSSQL
Explicación sobre MSSQL
Fuentes
Microsoft SQL
Resumen
Base de datos y protocolo de Microsoft, closed source.
Puerto TCP 1433, 2433.
Tiene 2 modos de autenticación, el modo "Windows" y el modo "mixto".
Windows: Las cuentas con las que se inicia sesión son las de Windows. MSSQL delega y confía en la autenticación realizada por el SO (O por AD). Activado por defecto, más seguro.
Mixto: Hay tanto cuentas de Windows como cuentas que solo existen en el entorno de MSSQL. Útil para cuando se hacen conexiones con terceros.
Conexión
Desde Windows:
Es posible conectarse con la aplicación cliente oficial SMSS, es posible encontrarla instalada en alguna máquina vulnerada (con, posiblemente, credenciales a alguna cuenta)
También podemos usar
sqlcmden el CLI.
Desde Linux podemos usar
Impacket-mssqlclientosqsh(CLI) ydbeaver(GUI)
Enumeración de Mode de Auth
Para conocer el modo de autenticación (windows/mixto) necesitaremos una cuenta en el servidor SQL, no tiene por qué ser privilegiada, dado que cualquier usuario, por defecto, tiene el rol public y tiene permiso para ver las propiedades básicas del servidor. Necesitamos este query:
Desde dbeaver: Click derecho al nodo mayor > SQL Editor > New SQL Script y escribimos como esto, guardando el resultado en una variable, luego lo ejecutamos. P.ej:
Según el valor de retorno:
0: Modo mixto1: Modo Windows
Listado de DBs y Tablas
Para listar bases de datos:
Para listar tablas en esa base de datos:
Ejecución de comandos
MSSQL dispone de un método para ejecutar comandos en el servidor, con los mismos privilegios con los que se ejecuta el proceso de mssql, este método es xp_cmdshell.
Si xp_cmdshell está desactivado, podemos activarlo así:
O también:
Impacket-mssqlclient tiene un "macro" que automatiza el (des)activar xp_cmdshell:
Robo de Hash con XP_DIRTREE
XP_DIRTREExp_dirtree es un comando de mssql que permite listar los archivos en un share SMB. El problema de este procedimiento es que para conectarse a ese share SMB:
El servicio MSSQL necesitará privilegios elevados de la DB para comunicarse por la red
Tendrá que compartir su hash NTLMv2 para autenticarse en SMB Esto implica que, si con
responder(u otro programa) creamos un share SMB falso y desde una cuenta no privilegiada de MSSQL nos tratamos de conectar, podremos conseguir el hash de la cuenta de servicio del servidor SQL
Y desde el servidor SQL:
En Responder veremos:
Ese NTLMv2-SSP Hash podremos crackearlo offline
Última actualización