HTB BOUNTYHUNTER

Resumen:

Herramientas
Nmap
Gobuster
Burp Suite
XXE
Escalada de privilegios
archivo.py

En esta máquina veremos una vulnerabilidad XXE y un poco de interpretación con python, fundamentales para poder resolverla.

Nmap

Lanzamos un NMAP con los parámetros necesarios para ver los puertos que tenemos abiertos y vemos como tenemos un http, por lo tanto ya sabemos que hay una página web por detrás. a demás tenemos un ssh que nos permitirá un acceso remoto.

Volvemos a lanzar NMAP pero ahora, en base de los puertos que descubrimos anteriormente, ver que versiones e información extra obtenemos.

Whatweb

Vemos si a través de “whatweb” no ofrece más información pero no obtenemos mucho más.

Web

Como tenemos el puerto HTTP abierto vamos a ver que contiene, haciendo una pequeña inspección visual a la web damos con la siguiente pestaña en la que podemos introducir los datos que nos solicita y cargarlos en la web:

Gobuster

Antes de seguir viendo que podemos hacer con lo anterior vamos a buscar directorios por si hubiera algunos más interesantes.

Si nos metemos en el directorio “resources” vemos un “directoy Lister”, ojeamos que hay:

Encontramos el siguiente que se refiere al portal donde teníamos que ingresar cve y demás y vemos como en la “data” aparece xml, ya nos podemos ir haciendo una idea por donde van los tiros.

Una cosa que debíamos a ver mirado antes con gobuster es si hay extensiones potenciales como por ejemplo .php o .txt y vemos que hay una que llama la atención “db.php”.

Miramos pero no muestra nada………………¿que habrá ahí?

Burp Suite

Utilizamos burp suite e interceptamos para ver como esta transfiriendo los datos que le introducimos y vemos un valor en la data que se supone que serán los valores que estamos metiendo.

Lo metemos en el “repeater” y vemos como la data es interpretada. El valor de la data está en base64 pero una cosa importante a tener en cuenta es que también está en URL Encode.

Decodificamos la data desde el propio burp suite, para ello la seleccionamos y vemos en la parte derecha la decodificación, nos encontramos ante un XML y ya lo primero que se nos viene a la cabeza es XXE.

Probamos el siguiente código en XML el cual me devolvería el contenido de un archivo interno, en este caso el “passwd”.

<?xml  version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE data [<!ENTITY file SYSTEM "file:///etc/passwd"> ]>
		<bugreport>
		<title>&file;</title>
		<cwe>prueba</cwe>
		<cvss>prueba</cvss>
		<reward>prueba</reward>
		</bugreport>

Ahora para meter el código anterior hacemos lo siguiente:

Decode URL:

Decode base64 y vemos el contenido xml de los datos que introdujimos primero.

Cambiamos el código y hacemos “encode base64”

Lo copiamos.

Pero antes de enviarlo tenemos que recordar que utilizaba el URL Encode.

Y logramos ver el archivo “passwd”.

Nota: lo anterior lo hemos hecho con la pestaña “decoder” del propio burp pero hay una manera más sencilla y directa que es utilizando un conjunto de teclas:

*ctrl+shift+u –> Pasa de URLencode a Base64

*ctrl+shift+b –> Decodifica

Como anteriormente descubrimos un db.php que “no hacía nada” y tiene pinta de ser de una base de datos o algo, podemos intentar verlo de la siguiente manera la cual nos dará el contenido de la información en base64:

<?xml  version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE data [<!ENTITY file SYSTEM "php://filter/read=convert.base64-encode/resource=/var/www/html/db.php"> ]>
		<bugreport>
		<title>&file;</title>
		<cwe>prueba</cwe>
		<cvss>prueba</cvss>
		<reward>prueba</reward>
		</bugreport>

Repetimos el mismo proceso de antes y vemos como nos devuelve el deb.php pero en base64.

Lo decodificamos y damos con una password.

Como teníamos un ssh abierto vamos a probarlo, probamos con el user admin pero no vale (ya que en el listado que vimos de usuarios no estaba) asi que probamos con el usuario:

Probamos y ya estamos dentro.

Flag User

Escalar Privilegios

Hacemos un poco de reconocimiento en el sistema y nos encontramos con el siguiente permiso que tenemos en el que podemos ejecutar lo siguiente como “root” sin proporcionar contraseña.

Inspeccionamos primero el archivo python y conseguimos ver como tenemos que ejecutarlo.

Así que nos creamos un arhivo “.md”.

La idea es que nos devuelva una bash y como se ejecuta como “root” tendríamos una shell con privilegios.

Lo ejecutamos y………………….CONSEGUIDO!!!!!!!!!!!!

Flag root