Skip to main content
HackTheBox machines - Travel

HackTheBox machines – Travel WriteUp

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

Travel 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 Travel 10.10.10.189 a /etc/hosts como travel.htb y comenzamos con el escaneo de puertos nmap.

Encontramos tres puertos abiertos, 22, 80 y 443 y 3 dominios:

  • travel.htb
  • blog.travel.htb
  • blog-dev.travel.htb

Así que añadimos los mismos a nuestro fichero de /etc/hosts y comenzamos enumerando las páginas web existentes.

 

Enumeración

Comenzamos con el portal situado en travel.htb cuyo aspecto es el siguiente:

HackTheBox machines - Travel

Enumeramos los posibles directorios con dirb y descubrimos lo siguiente:

Aunque después de varias búsquedas e inspecciones en el código no conseguimos nada relevante así que seguimos.

Comprobamos la misma url pero en el acceso por HTTPS:

HackTheBox machines - Travel https

 

Aunque tampoco es útil, además de un mensaje de error de que utilicemos el sitio sin SSL, esto nos hace pensar, pero no conseguimos nada así que continuaremos.

Accedemos al portal de blog.travel.htb donde observamos un sitio basado en el CMS WordPress:

HackTheBox machines - Travel blog

 

Escaneamos los posibles directorios con wfuzz y obtenemos varias rutas interesantes:

 

Seguimos enumerando, y en este caso accedemos al portal de blog-dev.travel.htb, aunque este nos devuelve un error 403:

HackTheBox machines - Travel

 

Enumeramos el mismo con wfuzz y encontramos varios directorios y ficheros pertenecientes a un repositorio de git:

Así que utilizaremos la herramienta git-dumper para descargar los mismos:

Revisamos el contenido obtenido y encontramos el directorio .git y varios ficheros php:

Revisamos primero el log de git y encontramos un usuario llamado jane:

Y varios ficheros que mostramos a continuación, un fichero README típico de un repositorio:

 

En este fichero observamos varios datos interesantes, como la ruta donde se encuentran los logs de la aplicación o, la copia de la plantilla de rss_template.php, cuyo contenido vemos a continuación:

Y el fichero de template:

 

Viendo el código del fichero template.php y el primer comentario:

Observamos que el nombre es el mismo que el de la página de rss del blog:

HackTheBox machines - Travel RSS

 

Revisamos el código obtenido y observamos que en el fichero rss_template.php encontramos un posible parámetro para realizar algún tipo de injección:

Y encontramos una parte interesante en el fichero template.php donde podemos, aparentemente, ejecutar una shell con curl:

Así que hacemos una petición con curl:

Y tenemos una respuesta en nuestra escucha:

Hacemos una segunda petición indicando algo más de información que una simple ip:

Y en este segundo caso obtenemos algo más de información al respecto:

Descubrimos que la librería utilizada en este caso es SimplePie, una librería en PHP para el manejo de datos RSS.

Descubierta la librería, por el momento no podemos hacer mucho al respecto, así que seguimos buscando y encontramos algunas protecciones en el fichero de template:

Son protecciones contra LFI, Command Injection y SSRF así que tal vez estas no sean las opciones disponibles para obtener una shell en el sistema.

Continuamos revisando y en el fichero rss_template.php, además de la librería, vemos que se está utilizando memcache:

y encontramos otro trozo interesante en el fichero rss_template.php donde referencia a un fichero, debug.php:

Hacemos una petición a través del navegador a http://blog.travel.htb/wp-content/themes/twentytwenty/debug.php pero sólo devuelve:

Tal vez sea una forma pero necesitamos primero comprobarlo. Vemos en el código del fichero rss_template.php que, si no encuentra el parámetro de custom_feed_url, carga el contenido de:

Así que para verificar si estamos en lo cierto, nos descargamos dicho fichero con wget:

 

Levantamos un servidor con python y hacemos la petición a:

Y vemos como se ha descargado el fichero feed.xml desde nuestro servidor:

Acto seguido, volvemos a la página de debug.php y obtenemos los datos serializados de memcache:

HackTheBox machines - Travel

 

Revisamos y encontramos la función de serialización en el fichero template.php, la cual no incluye ninguna protección al realizar este paso:

Por lo que este será nuestro vector de ataque para conseguir el acceso a la máquina. En el siguiente post explica como podemos hacer un ataque de ejecución remota de código a través de la serialización de datos en PHP.

Dicho esto, revisaremos el código de la clase de SimplePie y encontramos la forma en la que obtiene el hash para el serializado:

Por lo que vemos que el valor xct_c4e10fd34c es parte del md5 generado por el anterior código, por lo que el hash completo que necesitaríamos sería:

Revisando como hacer este tipo de ataque nos encontramos con que Gopherus tiene un código para este tipo de ataque con el fichero PHPMemcached.py, cuyo código es el siguiente:

Y del cual cogeremos algunas partes para hacer nuestro payload y nuestro script personalizado.

Tendremos que cambiar algunas cosas, por una parte necesitamos nuestro código que estará formado por php-serialize + ssrf + phpmemcache por lo que el código sería el siguiente:

Para el payload utilizaremos el hash md5 que generamos anteriormente:

Y codificaremos el mismo con el siguiente código:

Quedando como resultado el payload de la siguiente forma:

Completado todo esto, haremos la petición a

y llamaremos a la deserialización a través de la url

Ejecutaremos entonces nuestro script con los pasos indicados:

Y hemos conseguido subir nuestro payload, por lo que procedemos a aprovecharnos de la consola y verificar si realmente tenemos acceso:

Y vemos como estamos conectados a la máquina con el usuario www-data.

Verificamos si existe nc en la máquina para conseguir una shell:

Y haremos la petición para conseguir el acceso:

Y ya estamos dentro con el usuario www-data:

Revisamos el site y encontramos unas credenciales de conexión a mysql en el fichero wp-config.php:

Así que accedemos al mismo:

Obtenemos las bases de datos existentes:

Las tablas de la base de datos wp:

Y encontramos un usuario en la table wp_users:

Probamos con john a descifrar la misma pero sin éxito así que seguimos buscando y encontramos un backup de la misma base de datos en la ruta /opt/wordpress/backup-13-04-2020.sql

Nos descargamos la misma y la analizamos y encontramos que en la misma tabla existe un usuario más en el backup:

Volvemos a probar con john con el usuario lynik-admin y ahora sí conseguimos una password:

 

Obteniendo la flag de user

Con las password obtenida del usuario lynik-admin, accedemos por ssh:

Y conseguimos la flag de user.

 

Escalado de privilegios

Procedemos a enumerar la máquina en busca de posibles fugas o errores que nos permitan escalar privilegios y encontramos dos ficheros con información relevante en la home del usuario.

El fichero .ldaprc donde descubrimos un nuevo dominio de la máquina, ldap.travel.htb:

Y el fichero .viminfo donde descubrimos una contraseña:

Conocemos entonces que existe ldap en la máquina y con ello vemos que está la herramienta ldapsearch así que utilizamos la misma con la password obtenida para intentar obtener más información:

Y entre toda la información obtenida observamos que el usuario lynik-admin pertenece al grupo de “LDAP administrators” por lo que nos da un punto a favor, ya que podemos realizar cualquier modificación en cualquier usuario, incluso añadir el mismo a sudoers, entre los que encontramos los siguientes en la misma salida del último comando:

Revisamos en google y encontramos un par de posts donde explica como funciona ldap con sudoers y como podemos aprovecharlo para escalar privilegios:

https://www.sudo.ws/man/1.8.16/sudoers.ldap.man.html

https://www.digitalocean.com/community/tutorials/how-to-use-ldif-files-to-make-changes-to-an-openldap-system

 

Averiguado esto, comprobamos si existe ldapmodify en la máquina:

Y creamos nuestro fichero ldif, en nuestro caso, para elevar los privilegios del usuario jerry:

Y lanzaremos ldapmodify con nuestro fichero ldif:

Consiguiendo con ello escalar privilegios.

 

Obteniendo la flag de root

Ahora accederemos con el usuario jerry al cual elevamos los privilegios del mismo:

Escalaremos a 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 *