githubEditar

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 sqlcmd en el CLI.

  • Desde Linux podemos usar Impacket-mssqlclient o sqsh (CLI) y dbeaverarrow-up-right (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 mixto

  • 1: 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

Última actualización