Skip to main content
HackTheBox machines - Quick

HackTheBox machines – Quick WriteUp

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

Quick 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 Quick 10.10.10.186 a /etc/hosts como quick.htb y comenzamos con el escaneo de puertos nmap.

Observamos dos puertos abiertos, el 22 para el que no tenemos acceso todavía y el puerto 9001 que aloja una página web, accedemos por el navegador y vemos el siguiente portal:

 

Enumeración

Recorremos el site y encontramos un enlace a la página de https://portal.quick.htb pero no hemos descubierto el puerto 443 así que por el momento lo dejamos.

Lanzamos dirb para encontrar posibles páginas más existentes en el portal y obtenemos el siguiente listado:

Recorremos las posibles webs, a la página de ticket no tenemos acceso, necesitamos previamente autenticarnos pero no tenemos credenciales.

Creamos un diccionario con cewl basándonos en el contenido de las páginas index y clients:

Pero tampoco conseguimos acceder así que volveremos a escanear con nmap, en este caso por udp, a ver si damos con el puerto 443:

Y parece que sí pero no podemos acceder por udp de una forma sencilla, para ello necesitamos utilizar HTTP/3 y para ello necesitaremos utilizar la herramienta cargo junto con quiche, así que instalaremos las mismas como indica la documentación de rustc y quiche.

Una vez hecho lanzaremos cargo para acceder a través de este puerto udp y conseguiremos la siguiente página html:

Donde observamos tres enlaces más a distinto contenido.

La sección de contact nos muestra un simple formulario de contacto, en la cual no hay nada interesante, lo mismo pasa con la página about que nos muestra datos de 3 usuarios del portal que añadiremos a nuestro diccionario y la tercera, docs incluye 2 ficheros en formato pdf.

Descargaremos los mismos también con cargo:

Revisamos los documentos y en el fichero Connectivity.pdf encontramos una contraseña de acceso, aunque no especifica el usuario:

 

Así que volveremos a la página de login que tiene el siguiente aspecto:

 

Y lanzaremos un ataque con wfuzz para intentar acceder con alguno de los usuarios conocidos y la password y boom, nos logueamos:

 

Con el acceso verificado, nos logueamos en el portal y llegamos a una página con un framework de seguimiento de tickets:

 

Donde tenemos un formulario para la creación de tickets propios:

 

Y que posteriormente podemos ver a través del formulario de la página de inicio de esta sección:

 

Aunque si nos fijamos en el código fuente también podemos hacerlo a través de la url:

Revisamos el portal, código fuente, peticiones y encontramos una cabecera interesante que nos indica de que software se trata:

Buscamos en google información de Esigate y descubrimos que se trata de un acelerador e integrador de aplicaciones web, así que buscaremos posibles vulnerabilidades, consiguiendo averiguar que es vulnerable a inyecciones de código XSLT, por lo que ya sabemos por donde podríamos saltarnos esta página.

Buscamos más información acerca de como realizar este tipo de ataques y encontramos un post muy interesante que explica la Inyección ESI.

Conocido como funciona necesitaremos enviar nuestro fichero xml mediante una inyección ESI, por lo que hemos creado 6 ficheros, 3 en xsl y 3 en xml.

En el caso del xml este sería un ejemplo:

Tendremos que enviar tres peticiones con cada uno de nuestros ficheros, y los ficheros xsl serían los siguientes:

En el primer paso subiremos el binario de nc para conseguir nuestra shell inversa:

En el segundo paso daremos permisos de ejecución al binario de nc:

Y en el tercer paso lanzaremos nuestra shell inversa:

Una vez enviada cada petición haremos la ejecución haciendo la llamada al ticket en cuestión:

 

 

Obteniendo la flag de user

Una vez completados los anteriores pasos, obtendremos una shell con el usuario sam y con ello la flag de user:

Ahora, para poder disponer de una consola en condiciones, nos creamos una clave ssh y la añadimos al fichero authorized_keys del usuario:

Y accedemos por ssh:

 

Escalado de privilegios

Una vez conseguida la shell comenzamos a revisar el sistema a ver que posibilidades tenemos a la hora de escalar privilegios en la máquina.

Revisamos el site y el fichero db.php con el que no pudimos hacer nada desde el navegador y obtenemos unas credenciales de acceso a mysql:

Probamos el acceso y esto es lo que nos encontramos:

Obtenemos unas contraseñas cifradas en md5, las pasamos por varias herramientas como John o hashcat y algunas online pero no conseguimos descifrar la password del user srvadm así que siguiendo con la búsqueda, encontramos la forma en la que se codifican las mismas en otro fichero del portal.

Crearemos un siguiente script en php para descifrarla:

Lo ejecutamos y boom, tenemos la password del usuario srvadm@quick.htb:

Ahora necesitaremos conocer donde tenemos que loguearnos así que revisamos los sites existentes configurados en apache:

Y encontramos el site printerv2.quick.htb, el cual sólo responde al puerto 80 en local por lo que nos creamos un tunel en el puerto 80 local para acceder al puerto de la instancia desde localhost:

Añadimos el dominio a nuestro fichero en /etc/hosts y accedemos por el navegador obteniendo la siguiente pantalla de login:

 

Nos logueamos con las credenciales obteniedas y tenemos un portal de gestión de impresoras:

 

Hacemos varias pruebas de creación de impresoras para ver su funcionamiento y analizamos el código y encontramos una condición de carrera en el fichero job.php:

Tal como se ve en el código cuando creamos un job se guarda en la carpeta jobs con la fecha y hora actual como nombre así que vamos a crear un script con el cual crearemos un enlace del fichero del job a la clave ssh del usuario srvadmin de la máquina:

 

Ejecutamos nuestro script, ponemos una escucha en local con netcat, creamos nuestra impresora y lanzamos la creación de un job con un nombre aleatorio:

Y conseguimos en nuestra escucha la clave ssh del usuario srvadm (para evitar un copia pega completo no se muestra la clave completa):

 

Probamos el acceso con la misma y estamos dentro con el usuario srvadm:

 

Ya queda menos para root, volvemos a enumerar la máquina con este usuario y encontramos un fichero intersante en la carpeta .cache/conf.d de la home del usuario:

Y encontramos unas credenciales en la siguiente línea del fichero printers.conf

 

Obteniendo la flag de root

Decodificaremos la url que obtuvimos en el último paso y probaremos el acceso a root y boom!, somos root:

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. Los campos obligatorios están marcados con *