Skip to main content
HackTheBox machines - Book

HackTheBox machines – Book WriteUp

Book es una de las maquinas existentes actualmente en la plataforma de hacking HackTheBox.

Book 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 Book 10.10.10.176 a /etc/hosts como book.htb y comenzamos con el escaneo de puertos nmap.

Tras un primer escaneo no observamos muchos puertos abiertos, para el acceso por ssh no disponemos de credenciales así que por el momento lo dejamos y pasaremos directamente al puerto 80.

 

Enumeración

Pasamos al puerto 80, donde observamos el siguiente portal web en una primera vista:

HackTheBox machines - Book

 

Vemos dos secciones, una primera de login y otra de signup:

HackTheBox machines - Book

 

Nos registramos y accedemos al portal donde observamos de primeras el siguiente portal web de libros en pdf:

HackTheBox machines - Book

 

Navegamos entre las diferentes secciones del portal donde encontramos una sección para descargar libros, subirlos, enviar un mensaje o ver los datos de nuestra cuenta. Nos centramos en la sección de Collections donde cabría la posibilidad de subir un fichero php, aunque después de varios intentos no conseguimos obtener ningún resultado.

Ejecutamos entonces la tool dirb para enumerar los posibles directorios y ficheros existentes en el portal y observamos lo siguiente:

Encontramos entre los resultados un directorio muy interesante, /admin, así que vemos que existe un panel de administración para el cual no disponemos de credenciales:

HackTheBox machines - Book

 

Seguimos revisando el portal descubierto hasta el momento y encontramos un dato interesante al inspeccionar el código fuente de la sección de Contact Us:

Sabemos la dirección de correo del usuario admin pero no tenemos todavía sus credenciales.

Buscando por google, encontramos una nueva técnica de SQL Injection realizando un truncado de la consulta, así que abrimos Burp Suite y probamos a realizar el mismo en el panel de registro:

Obteniendo acceso de admin

 

Y conseguimos saltar el error de usuario existente en el formulario de registro, probamos a acceder al portal y después al portal de admin, y estamos dentro de la sección de administración del site:

HackTheBox machines - Book

 

En esta sección tenemos diferentes funciones como ver los usuarios registrados en el portal, mensajes envíados, si se ha enviado algún tipo de feedback en alguno de los libros existentes y las colecciones que existen para descargar las mismas en formato pdf como vemos en la siguiente captura:

Colecciones en el panel de admin

 

Después de jugar un poco con estos paneles y opciones, vemos la posibilidad de realizar un ataque XSS para conseguir un fichero del sistema y descargarlo a través de la función de colecciones del administrador y que podemos ver explicado en su totalidad en la web de noob ninja.

Así que, después de varias pruebas vamos a intentar obtener el fichero /etc/passwd del sistema con el siguiente código en javascript:

Introduciremos dicho código en los campos de autor y título del libro de la sección de subida de archivos del portal de usuario:

XSS en la subida de ficheros

 

Y acto seguido, descargaremos el fichero en PDF de las colecciones desde el panel de administrador para conseguir el fichero /etc/passwd:

Obtenido este fichero importante, descubrimos un potencial usuario en el sistema llamado reader, así que vamos a intentar conseguir la clave ssh del usuario con el fin de poder después loguearnos en el sistema a través del puerto 22 visto en el primer escaneo con nmap.

Utilizaremos en este caso la siguiente carga útil:

y ejecutamos la misma igual que hicimos para el fichero passwd. Descargamos después el fichero pdf y lo tenemos, la clave sh del usuario reader:

 

Obteniendo la clave ssh

 

Copiamos la misma y probamos a acceder pero nos da un error debido al formato utilizado en el fichero pdf, y debido a que la conversión manual no funciona, en nuestro caso, abrimos el pdf con libreoffice para conseguir el texto sin el formato de pdf y conseguir entrar a la máquina.

 

Obteniendo la flag de user

Una vez solucionado el error de formato, accedemos con el usuario reader a la instancia y conseguimos la flag de user:

Revisamos el resto de archivos existentes en la home del usuario y encontramos un directorio llamado “backup” y un fichero access.log en su interior, aunque está vacío.

 

Escalando privilegios

Para la escalada de privilegios, subimos y ejecutamos en la máquina el fichero LinEnum.sh para verificar diferentes ficheros binarios, permisos y demás y vemos que logrotate se ejecuta como root, por lo que relacionamos con el fichero access.log visto anteriormente.

Para confirmar lo mencionado, utilizamos también el ejecutable de pspy para ver de una mejor forma los procesos ejecutados y efectivamente observamos la ejecución de logrotate con el usuario root, por lo que puede ser una posible forma de escalar privilegios:

pspy monitorizacion de procesos

Con lo visto hasta el momento, revisamos la versión de logrotate utilizada por el sistema y buscamos información al respecto en google.

Buscamos en google y encontramos el repositorio en github de logrotten mediante el cual podemos hacer que al ejecutar el logrotate como root, le inyectemos nuestro payload y se ejecute en la próxima vez que lo lance.

Descargaremos el código en nuestra máquina y lo compilaremos:

Generaremos el payload, en nuestro caso hemos creado una reverse shell en bash con el siguiente código:

A continuación subiremos los ficheros a la instancia y ejecutaremos logrotten. Como vimos anteriormente, existía un fichero de log en la carpeta backups de la home del usuario, utilizaremos entonces el mismo para ejecutar nuestro payload y escalar privilegios.

Añadiremos cualquier contenido al fichero access.log para forzar el rotado, en nuestro caso le añadimos el string “pwn”:

Y a los pocos segundos se completará nuestro comando logrotten:

 

Obteniendo la flag de root

Una vez completada la ejecución de logrotten, obtendremos una shell como root en la escucha que teníamos previamente:

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 respecto en el siguiente enlace https://www.hackthebox.eu/home/users/profile/103792

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada.