Skip to main content
HackTheBox machines – Encoding WriteUp

HackTheBox machines – Encoding WriteUp

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

Encoding 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 Encoding 10.10.11.198 a /etc/hosts como encoding.htb y comenzamos con el escaneo de puertos nmap.

Bueno hecha la primera parte de enumeración de puertos procedemos a revisar en detalle los mismos.

 

Enumeración

Obviamente vamos al puerto 80 y nos encontramos la siguiente página web

HackTheBox machines – Encoding WriteUp

 

Revisamos el portal y las páginas existentes en el mismo y vemos una página donde habla de la api y explica como funciona la misma con varios ejemplos

HackTheBox machines – Encoding WriteUp

 

Entre los ejemplos observamos en concreto uno donde explica como hacer la petición indicando los datos en un servidor externo

 

Hacemos alguna que otra prueba y es posible referencia a ficheros locales, por lo que sería vulnerable a LFI, así que generemos un script propio para ello

Y verificamos que consegimos leer el fichero passwd

 

Visto el funcionamiento modificamos el script para pasar el fichero que se desea obtener por parámetro

 

Después de alguna que otra prueba encontramos el directorio del portal web que sería /var/www/html para el portal en sí y /var/www/api para la apirest, así que descargamos y damos alguna vuelta pero sin más descubrimientos.

Procedemos a la lectura de fichero de hosts de la máquina y descubrimos un subdominio nuevo, image.haxtables.htb

 

Aunque si accedemos a través del navegador no tenemos permisos para ver el contenido

Acceso a image.haxtables.htb

Así que revisamos el fichero index.php

Revisamos el fichero utils y en el mismo vemos parte de código que ejecuta comandos de git

Así que vamos a ver si existe algún repositorio en el mismo, y está en /.git pero no tenemos permisos así que tendremos que aprovecharnos del LFI para poder acceder al contenido.

Dicho esto descargamos los scripts de GitTools y haremos una modificación en el fichero gitdumper.sh cambiando la línea siguiente

Por esta otra

Y con el cambio realizado lanzamos para descargar los datos

 

Ya tenemos los directorios creados, ahora descargamos los ficheros con el script extractor incluido en el mismo repositorio

 

Revisamos el código existente y vemos un fichero interesante llamado action_handler.php y cuyo contenido es el siguiente

 

En el código anterior se hace un include del contenido del parámetro page sin realizar ningún tipo de validación sobre el mismo, por lo que puede ser perfecto para poder subir un fichero o ejecutar un comando con el que obtener una shell.

Así que vemos que hay un fichero handler.php en la página inicial que ya vimos en la enumeración de ficheros por lo que hacemos una petición al mismo

Nos faltan parámetros así que leemos el fichero con el LFI

 

Debido a la falta de validación podemos aprovechar el parámetro uri_path para ejecutar un comando por lo que hacemos unas pruebas en burp con un payload similar al siguiente

Y obtenemos el fichero

Probando con burp

 

 

Llegados a este punto no funciona la obtención de una shell así que vamos a utilizar la herramienta php_filter_chain_generator para generar un payload que nos permita obtener la misma.

Generamos el payload para la prueba

Y lanzamos con burp para verificar que la misma es correcta.

Obteniendo revshell con LFI

 

Así que ahora generamos el payload bueno

Y lanzaremos con burp para obtener el acceso en nuestra escucha

 

Escalado al usuario svc

Ya estamos dentro con el usuario www-data así que revisamos los permisos de este y vemos que puede ejecutar un comando como el usuario svc

Y el script en cuestión tiene el siguiente contenido

 

No tenemos permisos para hacer modificaciones pero podemos abusar de los filtros para ejecutar un script propio, así que creamos el script en primer lugar, el cual copiará la clave ssh del usuario svc

Iniciamos git

Añadimos el filtro en el fichero attributes

Aplicamos el mismo en la configuración de git indicando nuestro script

Y ejecutamos

Consiguiendo con ello la clave del usuario svc

 

Obteniendo la flag de user

Con la clave en nuestro poder accedemos por ssh y conseguimos la primera flag

 

Escalado de privilegios

Para el escalado revisamos los permisos de sudo del usuario

Revisamos si tenemos algún tipo de permiso de escritura y vemos que podemos escribir en el directorio /etc/systemd/system así que vamos a crear nuestro servicio, el cual añada el bit suid al binario de bash

Reiniciamos el servicio y vemos como se ha añadido el permiso

 

Obteniendo la flag de root

Con el permiso de suid añadido escalamos a root y cogemos 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 *