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!!!!!!!!!!!!