Skip to main content
HackTheBox machines – Passage WriteUp

HackTheBox machines – Bucket WriteUp

Bucket es una de las maquinas existentes actualmente en la plataforma de hacking HackTheBox basada en linux

Bucket es una de las maquinas existentes actualmente en la plataforma de hacking HackTheBox y es de dificultad media.

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 Bucket 10.10.10.212 a /etc/hosts como bucket.htb y comenzamos con el escaneo de puertos nmap.

En esta máquina no vemos de primeras muchos puertos abiertos, asi que vamos directamente a revisar el portal web existente.

 

Enumeración

Accedemos al portal web y observamos la siguiente página web:

Bucket Advertising Platform

 

No vemos nada de primeras, más que un simple html, así que revisamos el código fuente y encontramos un subdominio al revisar la localización de las imágenes incrustadas:

Revisando el código fuente

 

Añadiremos el subdominio s3.bucket.htb a nuestro fichero /etc/hosts y accederemos al mismo a través del navegador, donde vemos el siguiente fragmente en json que indica que el servicio está funcionando:

Comprobando el acceso del servicio S3

 

No vemos mucho más así que vamos a intentar descubrir si existe algún directorio en este nuevo subdominio, utilizaremos para ello gobuster:

Y descubrimos dos directorios, el primero de ellos, /health, nos muestra los servicios disponibles, en este caso están s3 y dynamodb de AWS:

S3 y dynamodb como servicios disponibles

 

Pero nada más en el mismo, en el segundo de ellos observamos una web shell del servicio dynamodb de aws:

DynamoDB Javascript Shell

 

Vamos a probar el acceso a los servicios descubiertos, pero no tenemos unas claves como tal, y la webshell parece que tiene valores por defecto así que utilizaremos las claves que aparecen en la documentación de aws para el ejemplo en la siguiente url:

https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html

Y configuramos aws:

Una vez añadidas las credenciales, en nuestro caso hemos añadido un perfil nuevo, procedemos a revisar las tablas existentes en el servicio dynamodb:

Descubrimos la tabla users, por lo que ahora vamos a ver el contenido de la misma:

Donde obtenemos las contraseñas de varios usuarios, aunque todavía no podemos hacer nada con las mismas.

Revisaremos ahora el servicio de S3, y en primer lugar listaremos los bucket existentes:

Sólo hay uno así que revisaremos el contenido del mismo:

Revisamos los ficheros existentes y se trata del fichero index y las imágenes que vimos en el primer portal web que visitamos por lo que intentaremos subir una reverse shell en php con el objetivo de ejecutarla en el portal y conseguir acceso al servidor. En nuestro caso hemos sacado la reverse shell del repositorio de github de pentestmonkey.

Así que una vez creado nuestro fichero lo subimos al bucket y verificamos que el mismo existe:

Y vemos que el fichero se ha subido correctamente, pero lanzamos un curl y este nos da un error 404:

Revisamos de nuevo el mismo y este se ha borrado por lo que parece que existe algún script de limpieza que elimina el fichero a los pocos segundos de subirlo. Haremos entonces un script que suba el fichero y automáticamente lance un curl para ejecutar el mismo, el script tendrá el siguiente contenido:

Ejecutaremos el mismo y conseguiremos nuestra shell inversa con el usuario www-data:

Revisamos a continuación los usuarios existentes en la máquina y vemos que existe el usuario roy, por lo que trataremos de acceder con el mismo con las contraseñas que descubrimos anteriormente en la tabla users del servicio dynamodb.

Y conseguimos acceder con una de ellas:

 

Obteniendo la flag de user

Ahora que ya tenemos acceso con el usuario roy, obtendremos una shell más cómoda con python y conseguiremos la flag de user:

Primer paso completado, vamos a por root.

 

Escalado de privilegios

Ahora que tenemos un usuario con más privilegios que www-data, vamos a crear una clave ssh y la añadiremos al usuario roy para hacer más cómoda la enumeración posterior.

Una vez dentro con nuestra clave encontramos un directorio interesante en la ruta /var/www/bucket-app con permisos de root, aunque observamos que tiene una acl configurada:

Y dentro del mismo vemos los siguientes ficheros y directorios:

Revisamos los mismos y encontramos algo muy interesante en el fichero index.php:

Observamos que aparece un punto de acceso desconocido hasta el momento en la red local, una tabla nueva en dynamodb llamada alerts y un ejecutable en java para la creación de un fichero pdf por lo que buscamos en google alguna forma de abusar de este servicio de pdf y encontramos el siguiente enlace donde trata el tema:

https://pd4ml.com/cookbook/pdf-attachments.htm

Así que para completar esta parte necesitaremos realizar varios pasos.

  • Acceder al puerto 4566 de la máquina local mediante un forward a un puerto local en nuestra máquina
  • Crear la tabla alerts
  • Añadir los datos indicados y la creación del fichero pdf con la clave ssh de root
  • Lanzar una petición POST con el parámetro “action=get_alerts”

 

Explicados los pasos continuaremos con ello. En primer lugar hacemos un forward de un puerto local al puerto del servidor bucket:

Para verificar que funciona correctamente, accedemos a través del navegador a la url http://127.0.0.1:12312 y observamos la siguiente página en construcción:

Sitio en construcción en local de Bucket

 

Completado este primer paso, crearemos la tabla alerts en la máquina:

Y haremos un insert de los datos indicados en el fichero index.php:

Por último paso lanzaremos la petición POST:

Completados los pasos, accederemos al navegador a la ruta http:127.0.0.1:12312/files y vemos que ha generado nuestro fichero:

Generando el fichero pdf con la clave de root de Bucket

Ahora nos queda abrir el fichero pdf y descargar la clave ssh de root:

Descarga de la clave de root de Bucket

 

Obteniendo la flag de root

Como último paso accederemos con el usuario root y la clave obtenida en el último paso para conseguir 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.