HackTheBox - Passage
Creado

Máquina Linux nivel medio. Explotaremos el servicio CuteNews para ejecutar comandos en el sistema, después jugaremos con hashes y crackeo. Jugaremos con llaves privadas y romperemos un proceso que se ejecuta con privilegios de administrador (USBCreator) para extraer archivos del sistema como usuario administrador.
TL;DR (Spanish writeup)
Creador: ChefByzen.
Hola hola!
Empezaremos enumerando un servicio web, en el que no será necesario hacer fuerza bruta, simplemente abrir bien los ojos. Encontraremos una ruta hacia el servicio CuteNews
, nos mirara a la cara un login y un área para registrarnos, despues de crear la cuenta obtendremos la versión del software, buscando en internet nos topamos con un Arbitrary File Upload
del cual nos aprovecharemos jugando con los Magic Bytes
para subir un archivo PHP
y ejecutar comandos en el sistema remotamente. Enumerando obtenemos dos usuarios en el sistema: paul
y nadav
… Además en el directorio CuteNews
encontraremos unos hashes, usaremos hashcat
para crackearlos y obtener la contraseña del usuario paul
.
Migraremos a nadav
con la llave privada del mismo encontrada en el /home
de paul
Para la escalada de privilegios encontraremos un proceso ejecutándose con privilegios de administrador (USBCreator), buscando en internet sobre él y exploits asociados, usando gdbus
tenemos la capacidad de hacer uso de USBCreator.Image
para (entre varios procesos) copiar archivos del sistema como el usuario root
. Usaremos eso para extraer la llave privada (id_rsa
) de él e ingresar como hicimos con el usuario nadav
al sistema.
Clasificación de la máquina.
Tirando a real (:
Escribo para tener mis “notas”, por si algun dia se me olvida todo, leer esto y reencontrarme (o talvez no) :) además de enfocarme en plasmar mis errores y exitos (por si ves mucho texto), todo desde una perspectiva más de enseñanza que de solo plasmar lo que hice.
…
Fases
…
Enumeración #
Empezamos realizando un escaneo de puertos sobre la máquina para saber que servicios está corriendo.
En este caso fue rápido, así que no tuvimos que agregarle más argumentos para acelerar el proceso.
Parámetro | Descripción |
---|---|
-p- | Escanea todos los 65535 |
–open | Solo los puertos que están abiertos |
-v | Permite ver en consola lo que va encontrando |
-oG | Guarda el output en un archivo con formato grepeable para usar una función de S4vitar que me extrae los puertos en la clipboard |
Muy bien, tenemos los siguientes servicios:
Puerto | Descripción |
---|---|
22 | SSH: Conexion remota segura mediante una shell |
80 | HTTP: Servidor web |
Hagamos nuestro escaneo de versiones y scripts con base en cada puerto, con ello obtenemos información más detallada de cada servicio:
Parámetro | Descripción |
---|---|
-p | Escaneo de los puertos obtenidos |
-sC | Muestra todos los scripts relacionados con el servicio |
-sV | Nos permite ver la versión del servicio |
-oN | Guarda el output en un archivo |
Tenemos:
Puerto | Servicio | Versión |
---|---|---|
22 | SSH | OpenSSH 7.2p2 Ubuntu 4 |
80 | HTTP | Apache httpd 2.4.18 |
…
Puerto 80 ⌖
Se nos presentan varias “noticias”, en la que la inicial parece ser la más importante, veamos de que se trata:
Han implementado en su web la herramienta Fail2Ban, básicamente para prevenir fuerza bruta sobre el servidor web (: baneando la IP por 2 minutos.
Si revisamos el código fuente, encontramos varias cosas interesantes:
- Vemos una ruta nueva,
/CuteNews
. - Usuarios con emails,
admin:nadav@passage.htb
ypaul:paul@passage.htb
. - Posible inyección por medio de la URL,
/index.php?id=11
. Sigamos (:
Démosle a la ruta:
Tenemos un login panel, con una versión 2.1.2
del gestor de noticias CuteNews
.
Probando credenciales por default no obtenemos respuesta válida, también podemos registrarnos:
Obtenemos:
Buscando por internet existen varios exploits que se aprovechan de una opción que nos permite subir un avatar (imagen) a nuestro perfil para ejecutar comandos en el sistema. Por lo visto el gestor se guía por los magic bytes para validar el tipo de archivo. Así que si subimos un archivo .php
así sin más, no nos lo va a dejar subir, pero si al archivo .php
le agregamos al inicio la cadena GIF 8;
, ahora interpretara que el tipo de archivo es un GIF
(:
…
Explotación #
En el dashboard damos clic en Personal option
y llegamos acá:
Creamos archivo malicioso:
Modificamos los magic bytes
:
Subimos y guardamos cambios:
Los avatars quedan guardados en la ruta /uploads
:
Perfecto, tenemos ejecución de comandos remotamente, generemos una reverse shell (: Pongamonos en escucha y despues hacemos la petición:
Listos, ahora a enumerar (:
- En la maquina tenemos dos usuarios:
paul
ynadav
.
…
En los archivos que tenemos sobre la ruta /CuteNews
nos encontramos con /cdata/users/lines
:
Tenemos cadenas en formato base64
, pasémoslas a texto legible, podemos crear un script sencillo que nos haga la tarea:
Vemos usuario, email y pass (password supongo). Tomemos las passwords, que son hashes en formato SHA-256 y guardémoslas en un archivo, para posteriormente apoyarnos de hashcat
y crackearlos:
Perfecto, si usamos esa contraseña para movernos al usuario paul
logramos obtener su sesión:
Ahora puedo pensar que debemos migrar al usuario nadav
… A darle.
…
Movimiento lateral #
En nuestro /home
tenemos archivos SSH
, si miramos detenidamente que llaves tienen permitido el acceso, tenemos:
Obtenemos una llave privada, guardemosla en un archivo e intentemos ingresar a la máquina mediante SSH
:
Listos, somos nadav
, sigamos enumerando y veamos como convertirnos en usuario administrador…
…
Escalada de privilegios #
Después de enumeración básica con scripts, dejar pasar cosas y enredarme con otras, no encontré nada útil, simplemente que hay un servicio llamado CUPS
corriendo localmente en el puerto 631
… Pero esto fue un lindo rabbit hole en el que perdí un buen rato :(
Realizando un escaneo de procesos corriendo en la máquina, notamos que hay uno ejecutándose con privilegios de administrador:
Buscando en internet usb-creator exploit
nos encontramos un lindo artículo en el que se explica el funcionamiento de USBCreator y D-Bus, en el sistema. Básicamente la vulnerabilidad consiste en que podemos sobreescribir archivos del sistema y todo con el usuario root
sin necesidad de contraseña.
A system bus, which is mainly used by privileged services to expose system-wide relevant services, and one session bus for each logged in user, which exposes services that are only relevant to that specific user. PaloAltoNetworks
Recomiendo mucho leer el artículo :)
La vulnerabilidad se da por una herramienta de Unix (dd
), la cual es usada por USBCreator
. Que es la que nos permite copiar archivos. Intentemos copiarnos el archivo /etc/shadow
.
Perfecto, pues copiemos el id_rsa
del usuario root
para posteriormente obtener una Shell ingresando con su llave privada, lo mismo que hicimos con nadav
.
La guardamos en keyroot
y entramos :)
Perfecto, perfecto… Solo nos queda ver las flags :)
…
El rabbit hole que me comí fue interesante (por lo menos recordé como hacer Remote Port Forwarding
). Pensé de más en la escalada de privilegios, pero estuvo bien. Me gusto mucho el tema de las llaves SSH
. Y nada… Nos encontraremos en otro writeup y a seguir rompiendo todo, muchas gracias a @ChefByzen por la máquina y a ustedes por leer :)
Comments