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_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

