Security Layer
Research Articles 🔎🎵👽GitHub
  • Bienvenido a Security Layer
  • 👾Hack The Box
    • 👾HACK THE BOX
    • Archetype
    • Responder
    • Three
  • Crocodile
  • Unrested
  • Shibboleth
  • Active
  • Bastion
  • Access
  • Devel
  • Optimum
  • Cicada
  • Forest
  • Sauna
  • Support
  • 👾Try Hackme
    • 👾TRY HACKME
    • Attacking Kerberos
  • 🛠️Tools
    • 🛠️Tools
    • Suite Impacket
    • SMBmap
    • SMBclient
    • WinPEAS
    • EvilWinRM
  • Wfuzz
  • Responder
  • John The Ripper
  • Gobuster
  • Hydra
  • Ffuf
  • nxc
  • Enum4Linux/Enum4Linux-ng
  • Crear Diccionarios
  • Kerbrute
  • Microsoft Windows
    • MSSQL
    • Glosario
  • ⚠️Scripts
    • Shell.ps1
    • Common shell Payloads
  • Comand Line Tools
    • Comand Line Tools Linux
    • Wget
    • Strings
    • Compartir y descargar recursos
    • Comand Line Tools Windows
    • Enumerar permisos de usuarios
    • Listar o identificar ficheros especificos
  • AWS
    • Conexiones a Bucket s3
Powered by GitBook
On this page
  1. Microsoft Windows

MSSQL

📌 Comandos en MSSQL para Evaluar Seguridad

Si tienes acceso a un servidor Microsoft SQL Server, puedes ejecutar varios comandos para evaluar qué tan seguro o vulnerable se encuentra

🔍 Ver permisos y usuarios en el servidor

🔹 Listar todos los usuarios en SQL Server :

SQL (ARCHETYPE\sql_svc  dbo@master)> SELECT name, create_date, modify_date FROM sys.sql_logins;
name                                create_date   modify_date   
---------------------------------   -----------   -----------   
sa                                  2003-04-08 09:10:35   2020-01-19 15:10:07   

##MS_PolicyEventProcessingLogin##   2017-08-22 19:39:30   2020-01-19 15:10:07   

##MS_PolicyTsqlExecutionLogin##     2017-08-22 19:39:30   2020-01-19 15:10:07   

🔹 Comprobar si tienes permisos sysadmin :

SQL (ARCHETYPE\sql_svc  dbo@master)> SELECT IS_SRVROLEMEMBER('sysadmin');
    
-   
1  

🔹 Ver los roles de servidor y sus miembros

SQL (ARCHETYPE\sql_svc  dbo@master)> SELECT spr.name AS ServerRole  FROM sys.server_role_members srm  JOIN sys.server_principals spr ON srm.role_principal_id = spr.principal_id  JOIN sys.server_principals sp ON srm.member_principal_id = sp.principal_id  WHERE sp.name = 'ARCHETYPE\sql_svc';
ServerRole   
----------   
sysadmin 

Explicación:

  • sys.server_role_members almacena la relación entre roles y usuarios a nivel de servidor.

  • sys.server_principals almacena los usuarios y roles de servidor.

  • JOIN nos ayuda a obtener el nombre de los roles y los usuarios asignados a ellos

🔹 Ver qué roles tiene un usuario específico

SQL (ARCHETYPE\sql_svc  dbo@master)> SELECT dr.name AS DatabaseRole  FROM sys.database_role_members drm  JOIN sys.database_principals dp ON drm.member_principal_id = dp.principal_id  JOIN sys.database_principals dr ON drm.role_principal_id = dr.principal_id  WHERE dp.name = 'sql_svc';
DatabaseRole   
------------ 

Explicación:

  • sys.database_role_members: Relación entre usuarios y roles dentro de una base de datos.

  • sys.database_principals: Contiene la lista de usuarios y roles de la base de datos.

  • JOIN nos permite combinar la información de los usuarios y los roles.

🔍 Buscar posibles credenciales en la base de datos

🔹 Ver conexiones activas y qué usuarios están conectados

SQL (ARCHETYPE\sql_svc  dbo@master)> SELECT session_id, login_name, host_name, program_name FROM sys.dm_exec_sessions;
session_id   login_name                host_name   program_name    
----------   -----------------------   ---------   -------------   
         1   ARCHETYPE\sql_svc         bMobAXqR    YcrAHibK            

         2   NT SERVICE\SQLTELEMETRY   ARCHETYPE   SQLServerCEIP          

         3   sa                        NULL        NULL            

         4   sa                        NULL        NULL  

🔹 Listar todas las bases de datos disponibles

SQL (ARCHETYPE\sql_svc  dbo@master)> SELECT name FROM sys.databases;
name     
------   
master   

tempdb   

model    

msdb   

🔹 Ver si hay credenciales almacenadas en texto plano (puede requerir permisos elevados)

SQL (ARCHETYPE\sql_svc  dbo@master)> SELECT name, password_hash FROM sys.sql_logins;
name                                                                                                                                                                  password_hash   
---------------------------------   -----------------------------------------------------------------------------------------------------------------------------------------------   
sa                                  b'0200100bac9600580c3c299ed7ff81d77bcbe50b830ca60306d7a5e5bf34a5c6be0d895247952bfff5708764033a797e8ca4f2004797203d7ee5c794d655c3218a0b13a3ce63'   

##MS_PolicyEventProcessingLogin##   b'02003d1be73b4e8454e737ed6b68096e53a810f2ff98dc50df96a240f5b560aebdafcbf6c2db0cab31ad1b1f2af285b3659a6d5479de875380b8100a34882ad7748438985cae'   

##MS_PolicyTsqlExecutionLogin##     b'0200b21fd125bfc51840773537c9389ba510dddede01db01a45dbea30a74cb34a3b84fb7fa54c60d7f5c7e71813f50182f6ad974c7ab3cd077ca1bea8e1e65979b6d9e1cb223'   

🔹 Buscar posibles credenciales en texto dentro de las tablas

SQL (ARCHETYPE\sql_svc  dbo@master)> SELECT TABLE_NAME, COLUMN_NAME  FROM INFORMATION_SCHEMA.COLUMNS  WHERE COLUMN_NAME LIKE '%pass%' OR COLUMN_NAME LIKE '%cred%'; 
TABLE_NAME   COLUMN_NAME   
----------   ----------- 
🔍 Evaluar missconfigurations

🔹 Ver ubicación de los archivos de la base de datos (puede revelar rutas sensibles)

SQL (ARCHETYPE\sql_svc  dbo@master)> EXEC sp_helpdb;

name     db_size         owner   dbid   created       status                                                                                                                                                                                                                     compatibility_level   
------   -------------   -----   ----   -----------   ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------   -------------------   
master         6.44 MB   sa         1   Apr  8 2003   Status=ONLINE, Updateability=READ_WRITE, UserAccess=MULTI_USER, Recovery=SIMPLE, Version=869, Collation=SQL_Latin1_General_CP1_CI_AS, SQLSortOrder=52, IsAutoCreateStatistics, IsAutoUpdateStatistics                                      140   

model         16.00 MB   sa         3   Apr  8 2003   Status=ONLINE, Updateability=READ_WRITE, UserAccess=MULTI_USER, Recovery=FULL, Version=869, Collation=SQL_Latin1_General_CP1_CI_AS, SQLSortOrder=52, IsAutoCreateStatistics, IsAutoUpdateStatistics                                        140   

msdb          15.44 MB   sa         4   Aug 22 2017   Status=ONLINE, Updateability=READ_WRITE, UserAccess=MULTI_USER, Recovery=SIMPLE, Version=869, Collation=SQL_Latin1_General_CP1_CI_AS, SQLSortOrder=52, IsAutoCreateStatistics, IsAutoUpdateStatistics, IsFullTextEnabled                   140   

tempdb        24.00 MB   sa         2   Apr  2 2025   Status=ONLINE, Updateability=READ_WRITE, UserAccess=MULTI_USER, Recovery=SIMPLE, Version=869, Collation=SQL_Latin1_General_CP1_CI_AS, SQLSortOrder=52, IsAutoCreateStatistics, IsAutoUpdateStatistics                                      140   

🔹 Listar configuraciones avanzadas (puede revelar configuraciones débiles)

SQL (ARCHETYPE\sql_svc  dbo@master)> EXEC sp_configure;
name                                minimum      maximum   config_value   run_value   
---------------------------------   -------   ----------   ------------   ---------   
allow polybase export                     0            1              0           0   

allow updates                             0            1              0           0   

backup checksum default                   0            1              0           0   

backup compression default                0            1              0           0   

clr enabled                               0            1              0           0   

contained database authentication         0            1              0           0   

cross db ownership chaining               0            1              0           0   

default language                          0         9999              0           0   

external scripts enabled                  0            1              0           0   

filestream access level                   0            2              0           0   

hadoop connectivity                       0            7              0           0   

max text repl size (B)                   -1   2147483647          65536       65536   

nested triggers                           0            1              1           1   

polybase network encryption               0            1              1           1   

remote access                             0            1              1           1   

remote admin connections                  0            1              0           0   

remote data archive                       0            1              0           0   

remote login timeout (s)                  0   2147483647             10          10   

remote proc trans                         0            1              0           0   

remote query timeout (s)                  0   2147483647            600         600   

server trigger recursion                  0            1              1           1   

show advanced options                     0            1              0           0   

user options                              0        32767              0           0   

Conceptos y aclaraciones:

📌 ¿Por qué SQL Server permite ejecutar comandos del sistema?

SQL Server permite ejecutar comandos del sistema operativo mediante procedimientos almacenados extendidos como xp_cmdshell o funciones del sistema porque, en entornos legítimos, esto facilita tareas administrativas y de automatización. Sin embargo, esta funcionalidad también representa un riesgo de seguridad si se abusa.

📌 ¿Qué es xp_cmdshell?

xp_cmdshell es un procedimiento almacenado extendido en Microsoft SQL Server que permite ejecutar comandos del sistema operativo desde SQL Server.

✅ Si el usuario tiene privilegios suficientes (sysadmin o control sobre la base de datos master), puede usar xp_cmdshell para ejecutar comandos como si estuviera en una terminal de Windows.

⚠️ Peligro de seguridad: Debido a que permite ejecución remota de comandos, xp_cmdshell es una función peligrosa y suele estar deshabilitada por defecto en SQL Server por razones de seguridad.

📌 Procedimiento Almacenado Extendido en Microsoft SQL Server

Un Procedimiento Almacenado Extendido (Extended Stored Procedure, XP) es una función especial en SQL Server que permite ejecutar código nativo del sistema operativo (C/C++) directamente desde SQL Server.

Estos procedimientos permiten a SQL Server interactuar con el sistema operativo, ejecutar comandos externos y acceder a funcionalidades avanzadas fuera del alcance de T-SQL tradicional.

📌 Procedimiento almacenado y procedimiento almacenado extendido en SQL Server

Un Procedimiento Almacenado (Stored Procedure) es un conjunto de instrucciones SQL predefinidas que se pueden ejecutar con un solo comando. Es como un script predefinido dentro del servidor que se puede reutilizar múltiples veces.

Ejemplo de un procedimiento almacenado en SQL Server:

CREATE PROCEDURE ObtenerUsuarios
AS
BEGIN
    SELECT * FROM Usuarios;
END;

Luego, se ejecuta así:

EXEC ObtenerUsuarios;

Ventajas de los procedimientos almacenados: - Mejor rendimiento (se compilan y almacenan en caché). - Reutilización del código. - Mayor seguridad (pueden restringirse permisos).

📌 ¿Qué es un Procedimiento Almacenado Extendido?

Un Procedimiento Almacenado Extendido (Extended Stored Procedure) es una versión especial que permite a SQL Server ejecutar funciones externas del sistema operativo, generalmente mediante archivos DLL.

Diferencia clave: 🔹 Procedimientos almacenados normales → Ejecutan solo comandos SQL. 🔹 Procedimientos almacenados extendidos → Se comunican con el sistema operativo

Por ejemplo xp_cmdshell es un procedimiento almacenado extendido, porque permite ejecutar comandos del sistema operativo desde SQL Server. En cambio sp_configure no es un procedimiento almacenado extendido porque solo modifica configuraciones internas de SQL Server y no interactúa directamente con el sistema operativo.

Last updated 1 month ago