filthyHacker@home:~$

Explore - Hack The Box

En esta ocasión vamos a estar resolviendo la máquina Explore de Hack The Box. Es una máquina Android de nivel de dificultad fácil en la intrusión, y medio en la escalada de privilegios según figura en la plataforma.

User Rated Difficulty

Fase De Reconocimiento

Primeramente vamos a lanzar una traza ICMP para saber si la máquina está activa.

ping -c 1 10.10.10.247

2

Una vez comprobamos que la máquina está activa (pues nos devuelve una respuesta), podemos también determinar a que tipo de máquina nos estamos enfrentando en base al valor del TTL; en este caso el valor del TTL de la máquina es 63, por lo que podemos intuir que estamos ante una máquina Linux. Recordemos que algunos de los valores referenciales son los siguientes:

Sistema Operativo (OS) TTL
Linux 64
Windows 128
Solaris 254

Si nos damos cuenta, en esta ocasión, el valor del TTL es 63 y no 64 como indica la tabla anterior, esto se debe a que en el entorno de máquinas de Hack The Box, no nos comunicamos directamente con la máquina a vulnerar, sino que existe un nodo intermediario, por lo que el TTL disminuye en una unidad.

ping -c 1 10.10.10.247 -R

3

Posteriormente, vamos a utilizar la herramienta Nmap para determinar que puertos están abiertos, así como identificar la versión y servicios que corren en el activo. Para determinar que puertos están abiertos podemos realizar lo siguiente:

nmap -p- --open -T5 -v -n 10.10.10.247

En caso de que el escaneo tarde demasiado en completar, tenemos esta otra alternativa:

sudo nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 10.10.10.247

A continuación se explican los parámetros utilizados en el escaneo de puertos con Nmap:

Parámetro Explicación
-p- Escanea todo el rango de puertos (65535 en total)
--open Nos indica todos aquellos puertos que están abiertos (o posiblemente abiertos)
-T5 La plantilla de temporizado nos permite agilizar nuestro escaneo, este valor puede ir desde 0 hasta 5, cabe aclarar que a mayor sea el valor de la plantilla, “generaremos más ruido”, pero no pasa nada ¿no? Al fin y al cabo estamos practicando en un entorno controlado y aquí somos todos White Hat
-v Verbose, reporta lo encontrado por consola
-n No aplicar resolución DNS
-sS Escaneo TCP SYN
-min-rate Emitir paquetes no más lentos que <valor> por segundo
-vvv Triple verbose, para obtener mayor información por consola
-Pn No aplicar host discovery

Una vez hemos detectado los puertos que se encuentran abiertos en el activo, podemos pasar a determinar la versión y servicios que corren bajo estos puertos.

nmap -sC -sV -p 2222,42135,42607,59777 10.10.10.247

A continuación se explican los parámetros utilizados en el escaneo de versiones y servicios con Nmap:

Parámetro Explicación
-sC Scripts básicos de enumeración
-sV Versión y servicios que corren bajo los puertos encontrados
-p Especificamos que puertos queremos analizar (los que encontramos abiertos en el paso anterior)

Basándonos en la información que nos reporta Nmap, podemos darnos cuenta que nos encontramos frente a un teléfono móvil, y nuestra primera gran pista para la siguiente fase es el puerto 42135.

4

Fase De Explotación

Para explotar el servicio ES File Explorer, empezaremos buscando algún exploit que se encuentre en Exploit Database, para ello utilizaremos SearchSploit para poder seguir trabajando desde nuestra terminal.

searchsploit ES File Explorer

5

En este caso SearchSploit no mostró nada interesante, sin embargo, si revisamos manualmente en la página de Exploit Database, podemos encontrar un script que nos permite leer archivos alojados en el servicio de ES File Explorer de versión 4.1.9.7.4, por esta razón es importante no quedarnos conformes únicamente con el primer resultado que encontremos.

6

Sin embargo, tampoco será este el script con el que trabajaremos; en esta ocasión estaremos utilizando un proyecto de GitHub del usuario fs0c131y, este se llama ESFileExplorerOpenPortVuln.

Para empezar a trabajar con este repositorio bastará con clonarlo en nuestra máquina.

git clone https://github.com/fs0c131y/ESFileExplorerOpenPortVuln

Una vez lo tengamos descargado, podemos empezar a revisar que información se alojaba en el servicio ES File Explorer.

Después de estar listando el contenido almacenado en el teléfono móvil, encontramos entre las fotografías, una llamada creds, lo cual nos hace pensar a que se refiere a credenciales con las que posteriormente autenticarnos.

python3 poc.py --cmd listPics --ip 10.10.10.247

7

Por lo que procedemos a descargar esta imagen.

python3 poc.py --get-file /storage/emulated/0/DCIM/creds.jpg --ip 10.10.10.247 

8

9

Si recordamos, otro servicio que detectamos con Nmap, fue el servicio SSH en el puerto 2222.

10

Por lo que procederemos a autenticarnos con las credenciales encontradas:

ssh kristi@10.10.10.247 -p 2222

11

Una vez dentro de la máquina, procederemos a buscar la primera flag. Por lo que buscaremos el archivo user.txt dentro de todo el sistema.

echo **/*user.txt*

12

13

Podemos ver que en efecto esta es la flag del usuario con bajos privilegios.

Lo más común sería utilizar find / -name user.txt (y en este caso, redirigir todo el stderr o Standard Error hacia el /dev/null), sin embargo, no conseguimos ningún resultado en esta máquina, por lo que resulta conveniente conocer otros métodos para realizar el mismo proceso.

Escalada De Privilegios

Para poder conseguir la siguiente flag (la del usuario con máximos privilegios), tenemos que percatarnos que la máquina tiene más puertos abiertos que los registrados con Nmap, a estos se los conoce como puertos internos.

netstat -nlpt

14

Si nos percatamos, la máquina utiliza el puerto 5555 para realizar varios procesos relacionados con Android; esto tiene sentido ya que algunos dispositivos Android tienen este puerto abierto para realizar procesos relacionados con el Android Debug Bridge o ADB por sus siglas en inglés.

Por lo que, lo que vamos a realizar es un remote port forwarding, para posteriormente, con el servicio ADB conseguir una shell de máximos privilegios con la que poder migrar al usuario root y conseguir la última flag.

En caso de no contar con el servicio ADB instalado, bastará con realizar lo siguiente:

sudo apt install adb

Una vez instalado el servicio ADB, podemos pasar a conseguir una shell con máximos privilegios dentro del dispositivo.

ssh -L 5555:localhost:5555 kristi@10.10.10.247 -p 2222
adb start-server
adb connect localhost:5555
adb devices
adb -s localhost:5555 shell
su root

15

Una vez hemos migrado al usuario root, simplemente tendremos que buscar la respectiva flag.

echo **/*root.txt*

16