Skip to main content
HackTheBox machines – Pollution WriteUp

HackTheBox machines – Pollution WriteUp

Pollution es una de las maquinas existentes actualmente en la plataforma de hacking HackTheBox basada en Linux

Pollution es una de las maquinas existentes actualmente en la plataforma de hacking HackTheBox y es de dificultad Difícil.

En este caso se trata de una máquina basada en el Sistema Operativo Linux.

 

Escaneo de puertos

Como de costumbre, agregamos la IP de la máquina Pollution 10.10.11.192 a /etc/hosts como pollution.htb y comenzamos con el escaneo de puertos nmap.

Una vez descubiertos los puertos abiertos, lanzamos un escaneo completo sobre los mismos

 

Enumeración

Accedemos al portal web y vemos la siguiente ventana

HackTheBox machines – Pollution WriteUp

 

Revisamos el código fuente y vemos varias referencias al dominio collect.htb así que lo añadimos al fichero y hosts antes de continuar.

Seguimos revisando y vemos una pantalla de login y una de registro así que creamos una cuenta y accedemos a la aplicación

HackTheBox machines – Pollution WriteUp

 

Seguimos revisando el portal y descubrimos que está permitida listar ficheros a través del navegador

Enumerando directorios

Así que revisamos el contenido de cada directorio y vemos dos ficheros interesantes

El fichero /assets/js/delete_user.js

Y el fichero assets/js/send_xml.js

 

En ambos vemos comportamientos de la aplicación que pueden ser de ayuda más adelante así que los guardamos para revisarlos en otro momento más en detalle.

No vemos mucho más por aquí así que seguimos enumerando y descubrimos dos subdominios

 

Accedemos a la página de developers, pero necesitamos auth que no tenemos

Acceso al portal de developers

 

Vamos a la página de forum y nos encontramos un foro realizado con MyBB

Acceso al foro

 

Obtención de permisos de admin

Revisamos el portal, los usuarios, hilos, y vemos uno en el cual un usuario adjunta un fichero llamado proxy_history.txt en el cual se ven las diferentes peticiones capturadas con burpsuite

Revisamos a fondo el mismo y encontramos una petición interesante contra la uri /set/role/admin

Recuperación de peticiones

 

Así que nos hacemos un pequeño script que decodifique todas las peticiones y nos las guarde en ficheros

 

Y al revisar los mismos encontramos una petición para modificar el rol de un usuario a través de la api, y un token

 

Así que interceptamos la petición con burp, modificamos la cookie por la de nuestra sesión y añadimos el carácter % al final del token, completados los pasos enviamos la petición

Explotando el servicio

 

Y conseguiremos acceder a la página de admin

Accediendo como admin

 

Así que ahora que tenemos acceso a la sección de admin, hacemos scroll en la página y registraremos un usuario en la api

Registrando un usuario en la api

Completada esta parte, y para comunicarnos con la api, retomaremos los ficheros javascript que vimos al principio, en concreto el fichero send_xml.js

 

Explotando la API

Viendo el código javascript del fichero vemos como debemos hacer la petición y como debemos de montar nuestro fichero xml con el fin de poder explotar una vulnerabilidad de XXE.

Para ver como explotarlo nos fijaremos en el siguiente post de hacktricks.

Así que generamos nuestro fichero xml quedando así

Generaremos entonces nuestro fichero dtd, que será quién le indique que debe de hacer a continuación

Una vez completados nuestros ficheros lanzaremos la petición post

Explotando una vulnerabilidad de XXE

 

Y si revisamos nuestra escucha tenemos el contenido del fichero

Si decodificamos el base64 obtenido obtenemos el fichero index.php

 

Sacaremos también el fichero bootstrap, donde observamos las credenciales del servicio de redis

No podemos hacer mucho más por aquí por el momento así que seguimos buscando y encontramos unas credenciales del portal de developer en el fichero .htpasswd

Desciframos la password con john

Y accedemos al portal de developer donde vemos la siguiente ventana

Acceso al panel de developers

 

Estamos ante un portal de login en el que no podemos hacer prácticamente nada, así que vamos a conectarnos a redis, y revisando las sesiones existentes vamos a modificar la nuestra para conseguir acceso.

Conectaremos a redis entonces y enviaremos la siguiente petición

El siguiente paso será recargar la página y ya estaremos dentro del portal

Acceso al panel de developers

 

Viendo el portal no parece que podamos hacer nada por aquí, pero si recordamos lo realizado anteriormente, la aplicación era vulnerable a un RCE explotando los filter chain de php por lo que vamos a google y encontramos el siguiente post que lo explica bastante bien.

Y la herramienta php_filter_chain_generator para generar nuestros payload.

Así que hacemos una pequeña prueba para ejecutar el comando id en el sistema y mandaremos el payload a través del parámetro page

Y observamos que funciona correctamente

Explotando un RCE

Trataremos entonces de envíar una revshell con el siguiente payload

 

aunque nos da un error de que la petición de demasiado larga

Testeando un RCE

Por lo que lo haremos enviando un fichero con nuestra shell y descargandolo en la máquina mediante curl.

Generamos entonces nuestro fichero

Y nuestro payload

Enviamos la petición y ahora sí que conseguimos acceder

 

Escalado al usuario victor

Revisamos los ficheros y encontramos unas credenciales de base de datos, aunque no podemos hacer mucho al respecto por ahora

 

Continuamos enumerando la máquina y observamos un puerto interesante

El puerto 9000 es el utilizado por defecto por fastcgi, en este caso lanzado por php-fpm, así que buscamos en google y encontramos un post que indica como explotar fastcgi

Revisamos que efectivamente corresponde al servicio php-fpm y es lanzado por el usuario victor

Y modificaremos el script que muestra en el post para obtener una shell con el usuario, quedando así

El siguiente paso será ejecutarlo

Y tendremos una shell en nuestra escucha con el usuario victor

 

Obteniendo la flag de user

Ahora que ya hemos conseguido escalar, vamos a la home del usuario y cogemos la flag

 

Escalado de privilegios

Por ganar persistencia y mejorar nuestra shell, creamos una clave y nos conectamos por ssh a la máquina.

Revisaremos entonces los puertos en escucha

Y vemos el puerto 3000, que corresponde a la api que utilizamos anteriormente.

Lanzamos un curl para ver que hay detrás y vemos que se trata de un node

Y además vemos que el servicio se ejecuta con el usuario root, por lo que puede ser nuestra forma de escalar privilegios

Así que viendo las vulnerabilidades descubiertas anteriormente buscamos en google como llevar a cabo un envenenamiento sobre nodejs

Recuperamos las credenciales de la base de datos para revisar la misma

Revisamos el esquema pollution_api, más en concreto la tabla users del mismo

 

Y modificaremos el rol de nuestro usuario para que tenga permisos de admin

 

El siguiente paso será conectarnos a través de la api para obtener un token de acceso

Y siguiendo el último post, enviaremos la siguiente petición para tratar de obtener permisos de suid en el binario de bash

Una vez ejecutado, revisamos el fichero y vemos que se han aplicado los permisos

 

Obteniendo la flag de root

Completada esta parte, nos queda escalar a root y obtener nuestra flag

Y ya tenemos nuestra flag de root para completar esta máquina y conseguir nuestros puntos.

 

Si eres usuario de HackTheBox y te gustó mi writeup, por favor, dame respeto en el siguiente enlace

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *