💻MSSQL
Microsoft SQL ( MSSQL) es el sistema de gestión de bases de datos relacionales basado en SQL de Microsoft.
Última actualización
Microsoft SQL ( MSSQL) es el sistema de gestión de bases de datos relacionales basado en SQL de Microsoft.
Última actualización
A diferencia de MySQL, que analizamos en la última sección, MSSQL es de código cerrado y fue escrito inicialmente para ejecutarse en sistemas operativos Windows. Es popular entre los administradores y desarrolladores de bases de datos cuando crean aplicaciones que se ejecutan en el marco .NET de Microsoft debido a su sólido soporte nativo para .NET. Hay versiones de MSSQL que se ejecutan en Linux y MacOS, pero es más probable que nos encontremos con instancias de MSSQL en objetivos que ejecutan Windows.
SQL Server Management Studio ( SSMS
) viene como una característica que se puede instalar con el paquete de instalación de MSSQL o se puede descargar e instalar por separado. Normalmente se instala en el servidor para la configuración inicial y la gestión a largo plazo de las bases de datos por parte de los administradores.
Ten en cuenta que, dado que SSMS es una aplicación del lado del cliente, se puede instalar y utilizar en cualquier sistema desde el que un administrador o desarrollador planee administrar la base de datos. No sólo existe en el servidor que aloja la base de datos. Esto quiere decir que podríamos encontrarnos con un sistema vulnerable con SSMS con credenciales guardadas que nos permitan conectarnos a la base de datos. La siguiente imagen muestra SSMS en acción.
Se pueden utilizar muchos otros clientes para acceder a una base de datos que se ejecuta en MSSQL. Incluyendo pero no limitado a:
De los clientes MSSQL enumerados anteriormente, los pentesters pueden encontrar mssqlclient.py
de Impacket como el más útil debido a que el proyecto Impacket de SecureAuthCorp está presente en muchas distribuciones de pentesting durante la instalación. Para saber si el cliente está ubicado en nuestro host y dónde, podemos usar el siguiente comando:
MSSQL tiene bases de datos del sistema predeterminadas que pueden ayudarnos a comprender la estructura de todas las bases de datos que pueden estar alojadas en un servidor de destino. Aquí están las bases de datos predeterminadas y una breve descripción de cada una:
Base de datos del sistema predeterminada | Descripción |
| Realiza un seguimiento de toda la información del sistema para una instancia de servidor SQL |
| Base de datos de plantilla que actúa como estructura para cada nueva base de datos creada. Cualquier configuración modificada en la base de datos del modelo se reflejará en cualquier base de datos nueva creada después de los cambios en la base de datos del modelo. |
| El Agente SQL Server utiliza esta base de datos para programar trabajos y alertas |
| Almacena objetos temporales |
| Base de datos de solo lectura que contiene objetos del sistema incluidos con el servidor SQL |
Fuente de la tabla: Bases de datos del sistema Microsoft Doc
Cuando un administrador instala y configura inicialmente MSSQL para que sea accesible desde la red, es probable que el servicio SQL se ejecute como archivo NT SERVICE\MSSQLSERVER
. Es posible conectarse desde el lado del cliente a través de la autenticación de Windows y, de forma predeterminada, no se aplica el cifrado al intentar conectarse.
La autenticación configurada en Windows Authentication
significa que el sistema operativo Windows subyacente procesará la solicitud de inicio de sesión y utilizará la base de datos SAM local o el controlador de dominio (que aloja Active Directory) antes de permitir la conectividad con el sistema de administración de la base de datos. El uso de Active Directory puede ser ideal para auditar la actividad y controlar el acceso en un entorno Windows, pero si una cuenta se ve comprometida, podría provocar una escalada de privilegios y un movimiento lateral en un entorno de dominio Windows. Al igual que con cualquier sistema operativo, servicio, función de servidor o aplicación, puede resultar beneficioso configurarlo en una máquina virtual desde la instalación hasta la configuración para comprender todas las configuraciones predeterminadas y los posibles errores que podría cometer el administrador.
Puede resultar beneficioso colocarnos en la perspectiva de un administrador de TI cuando tenemos un contrato. Esta mentalidad puede ayudarnos a recordar buscar varias configuraciones que un administrador pueda haber configurado mal o de manera peligrosa. Un día de trabajo en TI puede ser bastante ajetreado, con muchos proyectos diferentes sucediendo simultáneamente y la presión de desempeñarse con velocidad y precisión siendo una realidad en muchas organizaciones, se pueden cometer errores fácilmente. Sólo hace falta un pequeño error de configuración que podría comprometer un servidor o servicio crítico en la red. Esto se aplica a casi todos los servicios de red y funciones de servidor que se pueden configurar, incluido MSSQL.
Esta no es una lista extensa porque hay innumerables formas en que los administradores pueden configurar las bases de datos MSSQL según las necesidades de sus respectivas organizaciones. Podríamos beneficiarnos al investigar lo siguiente:
Los clientes MSSQL no utilizan cifrado para conectarse al servidor MSSQL
El uso de certificados autofirmados cuando se utiliza cifrado. Es posible falsificar certificados autofirmados
El uso de tuberías con nombre.
Credenciales sa
débiles y predeterminadas . Los administradores pueden olvidarse de desactivar esta cuenta.
Hay muchas maneras en que podemos abordar el seguimiento del servicio MSSQL; cuanto más específicos seamos con nuestros escaneos, más información útil podremos recopilar. NMAP tiene scripts mssql predeterminados que se pueden usar para apuntar al puerto tcp predeterminado 1433
en el que escucha MSSQL.
El escaneo NMAP programado a continuación nos proporciona información útil. Podemos ver hostname
, database instance name
, software version of MSSQL
y named pipes are enabled
. Nos beneficiaremos añadiendo estos descubrimientos a nuestras notas.
También podemos usar Metasploit para ejecutar un escáner auxiliar llamado mssql_ping
que escaneará el servicio MSSQL y proporcionará información útil en nuestro proceso de huella.
Si podemos adivinar u obtener acceso a las credenciales, esto nos permite conectarnos de forma remota al servidor MSSQL y comenzar a interactuar con bases de datos usando T-SQL ( Transact-SQL
). La autenticación con MSSQL nos permitirá interactuar directamente con las bases de datos a través del SQL Database Engine. Desde un equipo de atacante, podemos usar mssqlclient.py
de Impacket
para conectarnos como se ve en el siguiente resultado. Una vez conectado al servidor, puede ser bueno tener una idea del terreno y enumerar las bases de datos presentes en el sistema.
Comando | Descripción |
impacket-mssqlclient | Inicia sesión en el servidor MSSQL utilizando la autenticación de Windows. |