Inicio Heist Writeup - HackTheBox
Entrada
Cancelar

Heist Writeup - HackTheBox

Heist es una máquina Linux de dificultad fácil ofrecida por la plataforma de Hack The Box. A lo largo de este post encontrarás un writeup de su resolución.

Información

Info

Enumeración

Rustscan - NMAP

Como siempre, se iniciará realizando un escaneo general de los 65535 puertos. En este caso se utilizará Rustscan, proporcionando comandos de nmap para realizar el escaneo desde un solo comando.

  • rustscan 10.10.10.149 -- -sC -sV | tee ports-rustcan
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
.----. .-. .-. .----..---.  .----. .---.   .--.  .-. .-.
| {}  }| { } |{ {__ {_   _}{ {__  /  ___} / {} \ |  `| |
| .-. \| {_} |.-._} } | |  .-._} }\     }/  /\  \| |\  |
`-' `-'`-----'`----'  `-'  `----'  `---' `-'  `-'`-' `-'
Faster Nmap scanning with Rust.
________________________________________
: https://discord.gg/GFrQsGy           :
: https://github.com/RustScan/RustScan :
 --------------------------------------
🌍HACK THE PLANET🌍

[~] The config file is expected to be at "/home/rustscan/.rustscan.toml"
[~] File limit higher than batch size. Can increase speed by increasing batch size '-b 1048476'.
Open 10.10.10.149:80
Open 10.10.10.149:135
Open 10.10.10.149:445
Open 10.10.10.149:5985
Open 10.10.10.149:49669

(...)

PORT      STATE SERVICE       REASON  VERSION
80/tcp    open  http          syn-ack Microsoft IIS httpd 10.0
| http-cookie-flags:
|   /:
|     PHPSESSID:
|_      httponly flag not set
| http-methods:
|   Supported Methods: OPTIONS TRACE GET HEAD POST
|_  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         syn-ack Microsoft Windows RPC
445/tcp   open  microsoft-ds? syn-ack
5985/tcp  open  http          syn-ack Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
49669/tcp open  msrpc         syn-ack Microsoft Windows RPC
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
  • Resumen puertos
PuertoEstadoServicio
80/tcpAbiertohttp - Microsoft IIS httpd 10.0
135/tcpAbiertoMicrosoft Windows RPC
445/tcpAbiertoSMB - microsoft-ds
5985/tcpAbiertoWinRM - Microsoft HTTPAPI httpd
49669/tcpAbiertoMicrosoft Windows RPC

Enumeración web

Lo primero será ingresar a la web y ver que hay expuesto. Se aprecia un login, en donde existe la opción de ingresar como usuario invitado.

Al entrar como invitado se visualiza una especie de mesa de ayuda con información que podría ser relevante. De primeras se identifica que los usuarios Hazard y admin pueden ser usuarios potenciales del sistema.

El ticket contiene un archivo adjunto que al abrirlo, revela un archivo de configuración de un router cisco.

De esto podemos extraer potenciales usuarios y contraseñas. Pero antes, habrá que tratar de convertir o crackear los hashes obtenidos.

1
2
3
4
enable secret 5 $1$pdQG$o8nrSzsGXeaduXrjlvKc91

username rout3r password 7 0242114B0E143F015F5D1E161713
username admin privilege 15 password 7 02375012182C1A1D751618034F36415408

En el caso de las password 7 existe un recurso online que permite desencriptar este tipo de contraseñas.

Para el último hash, deberemos utilizar john para romperlo con fuerza bruta utilizando rockyou.txt

  • john --wordlist=/usr/share/wordlists/rockyou.txt hash

Por lo tanto, tendríamos lo siguiente.

  • users.txt
1
2
3
hazard
rout3r
admin
  • passwords.txt
1
2
3
$uperP@ssword
Q4)sJu\Y8qz*A3?d
stealth1agent

Acceso inicial

Con esta información y utilizando crackmapexec, realizaremos un password spray para detectar si existen credenciales válidas con la información que se ha recopilado hasta el momento.

Testeando nuevamente con CME validamos que el usuario no tiene permisos para el acceso remoto al protocolo WinRM.

Continuando con la enumeración, ahora que tenemos credenciales válidas, se puede intentar un brute-forcing de usuarios a través de RID. Y al cabo de unos segundos se obtienen más usuarios.

Se agregan al archivo users.txt y realizaremos nuevamente el password spray.

Esta vez utilizando el módulo smb_login de metasploit, ya que por algún motivo CME no muestra más matches una vez que encuentra una credencial válida.

Y como resultado se obtiene una credencial válida para el user Chase. Nuevamente se intenta el login a través de WinRM, esta vez con éxito.

Escalada de privilegios

Procedemos a loguear al sistema con Evil-WinRM.

  • evil-winrm -i 10.10.10.149 -u 'Chase' -p 'Q4)sJu\Y8qz*A3?d'

Una vez dentro, haciendo enumeración básica, se detecta algo inusual, al revisar los procesos se ve que está en ejecución Firefox, el cual no viene instalado por defecto en Windows. Esto nos da un indicio de que es probable que juegue un rol en la escalada de privilegios.

Siguiendo esta lógica, lo siguiente será realizar un dump del proceso de Firefox para ver que se encuentra almacenado. Para esto utilizaremos una herramienta nativa de Microsoft que se puede descargar desde su web oficial - Procdump.

Descargamos la herramienta y la subimos a la máquina víctima.

En su primera ejecución, deberemos aceptar el EULA y posterior a esto realizar el dump. Para esto existen los siguientes modos:

En esta ocasión utilizaremos el modo Full, especificando un PID o número de proceso de Firefox.

  • .\procdump64.exe -ma 6380

Al cabo de unos segundos obtendremos un archivo con extensión .dmp el cual podríamos intentar leer utilizando strings. Esto se puede realizar transfiriendo el archivo hacia nuestro Parrot o bien subir el binario para Windows de la herramienta strings.

Por lo tanto, haciendo uso de Impacket para compartir un server SMB, transferiremos el archivo a nuestra máquina para leer su contenido.

  1. strings firefox.exe_211214_081618.dmp -n 30 > output.txt
  2. grep --color "password" output.txt

Y obtenemos la siguiente string.

1
http://localhost/login.php?login_username=admin@support.htb&login_password=4dD!5}x/re8]FBuZ&login=

De la cual se puede leer la password 4dD!5}x/re8]FBuZ. Podemos suponer que esta es la contraseña del usuario Administrador, por lo que ya podemos conectarnos y leer las flags.

Y esto sería todo para la máquina Heist, una máquina sencilla pero viene bien para repasar conceptos.

Esta entrada está licenciada bajo CC BY 4.0 por el autor.