flagConversor HackTheBox (Easy)

Escaneo de puertos

nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn <IP>
nmap -sCV -p<PORTS> <IP>

Info:

Starting Nmap 7.95 ( https://nmap.org ) at 2025-10-26 01:32 PDT
Nmap scan report for 10.10.11.92
Host is up (0.032s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.13 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   256 01:74:26:39:47:bc:6a:e2:cb:12:8b:71:84:9c:f8:5a (ECDSA)
|_  256 3a:16:90:dc:74:d8:e3:c4:51:36:e2:08:06:26:17:ee (ED25519)
80/tcp open  http    Apache httpd 2.4.52
|_http-title: Did not follow redirect to http://conversor.htb/
|_http-server-header: Apache/2.4.52 (Ubuntu)
Service Info: Host: conversor.htb; OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 15.93 seconds

Veremos dos puertos interesantes, pero el que mas nos interesa es el puerto 80 que aloja una pagina web y por lo que vemos nos redirige a un dominio llamado conversor.htb el cual tendremos que añadir a nuestro archivo hosts.

Lo guardamos y entramos dentro de dicho dominio.

Info:

Veremos un login bastante interesante y en el mismo tambien vemos un boton llamado register, vamos a probar a registrar una cuenta y entrar dentro con dichas credenciales.

Una vez creada nuestra cuenta veremos lo siguiente en la pagina:

Veremos que podremos subir archivos, pero nos esta especificando que solamente con el formato XML y XSLT, tendremos que subir los 2 archivos uno apoyandose en el otro, con esto nos da una pista de que podriamos realizar un XSLT Injection o Server-Side XSLT Processing, por lo que vamos a probar de primeras a ver que esta haciendo por dentro.

test.xml

Con este primero archivos referenciamos al test.xsl para que lo cargue.

test.xsl

En este caso lo que hacemos es que muestre en la pagina como esta funcionando por dentro y que esta haciendo.

Si subimos esto a la pagina veremos que se sube de forma correcta y nos generara un .html en el cual si entramos veremos unicamente esto:

Vemos que esta funcionando y nos esta mostrando que esta usando una libreria super famosa de linux de la biblioteca C, que puede tener algunas funciones interesantes.

Si probamos a escribir un archivo en /tmp de esta forma:

Lo guardamos, subimos los dos archivos y veremos que funciona, ya que si entramos al HTML generado veremos lo siguiente:

Este codigo lo saque de idea de esta fuente:

URL = XSLT Injection Infoarrow-up-right

Ahora sabiendo esto podremos probar a realizar otras funciones mas interesantes, si probamos en la ruta /var/www/conversor.htb/ tambien funcionara ya que es la ruta tipica de apache2 cuando se crea un dominio.

Escalate user www-data

Gobuster

Vamos a realizar un poco de fuzzing a ver que vemos.

Info:

Veremos varios directorios interesantes, pero sin mas, veremos about, si vamos dentro de el...

Veremos que muestra los trabajadores en el codigo fuente de la pagina, pero algo interesante, veremos abajo un boton llamado Download Source Code, si le damos nos descarga un .tar.gz del codigo fuente de la pagina (La estructura de la pagina).

Vamos a descomprimirlo de esta forma:

Si listamos la carpeta veremos esto:

Vemos que la estructura contiene varios directorios interesantes entre ellos scripts y vemos que la estructura es de un servidor de python3 Flask, inspeccionando el codigo de app.py veremos que realmente hay una vulnerabilidad de la que comente antes.

Tambien veremos una ruta de DB que es /var/www/conversor.htb/instance/users.db por lo que esto nos interesara mas adelante seguramente.

Pero el archivo mas interesante que vemos es install.md:

Vemos que en la carpeta scripts hay un crontab que ejecuta cualquier archivo de python con .py que este dentro, por lo que podremos depositar atraves de la vulnerabilidad XLST Injection un archivo de python3 para que se ejecute una shell.

test.xsl

Antes de subir este archivo, vamos a ponernos a la escucha:

Ahora si subimos el archivo y accedemos al HTML que nos ha generado, veremos una pantalla en blanco, pero si volvemos a donde tenemos la escucha y esperamos unos minutos, veremos lo siguiente:

Veremos que ha funcionado, por lo que vamos a sanitizar la shell (TTY).

Sanitización de shell (TTY)

Escalate user

Recordemos que antes en el app.py vimos que apuntaba a un .db en la siguiente ruta el cual vamos a leer de esta forma:

Info:

Vamos a listar las tablas que haya:

Info:

Vamos a ver la informacion de la tabla users de esta forma:

Info:

Vemos interesante el usuario llamado fismathack, es el que nos interesa ya que si listamos el /etc/passwd:

Info:

Vamos a intentar crackear dicha contraseña a ver si fuera la misma que la del usuario a nivel de sistema.

hash

Ahora vamos a probar a crackearlo...

Info:

Veremos que ha funcionado, ahora si probamos la contraseña con el usuario...

Metemos como contraseña Keepmesafeandwarm...

Veremos que ha funcionado, por lo que leeremos la flag del usuario.

user.txt

Escalate Privileges

Si hacemos sudo -l veremos lo siguiente:

Vemos que podemos ejecutar como el usuario root el binario needrestart, por lo que vamos a ver que hace dicho binario.

Si listamos el help del binario, veremos que con el -c podremos cargar una configuracion personalizada, vamos a probar esto:

Info:

Ahora si listamos el directorio /tmp veremos que funciono:

Info:

Por lo que vamos a realizar lo siguiente:

Antes de ejecutarlo nos pondremos a la escucha:

Ahora si ejecutamos lo siguiente:

Esto se quedara pensando, pero si volvemos a donde tenemos la escucha, veremos lo siguiente:

Vemos que ha funcionado y seremos root, por lo que leeremos la flag de root.

root.txt

Last updated