Lupinone
Máquina de dificultad media de la plataforma HackMyVM
Comprobación
Para empezar lo que vamos a hacer antes de empezar a reconocer los puertos de esta máquina y tal es ver si mi máquina atacante se ve con la máquina ctf

Una vez que vemos que está la máquina activa vamos a pasar con la parte de escanear los puertos y ver qué servicios corren para esta máquina
Escaneo de puertos
Vamos a realizar un escaneo de puertos en el que nos genere un archivo el cual vamos a tratar luego con expresiones regulares con una herramienta nuestra

Ahora que hemos hecho el escaneo y que nos ha generado el archivo “puertos” vamos a tratarlo con la herramienta “portsClean” la cual está en nuestro github. Esta herramienta te representa los datos de la siguiente manera

Una vez que tenemos los puertos que están activos de la máquina vamos a aplicarles un escaneo un poco más específico para estos puertos, descubriendo qué versión corre para cada servicio y usando unos cuantos scripts de nmap escritos en Lua

Ahora que tenemos toda esta información de la máquina y que hemos visto que tiene el puerto 80 abierto, vamos a aplicarle la herramienta “whatweb” que es lo mismo que un wappalyzer pero desde la terminal, la cual nos permite ver qué tecnologías corren por detrás en la máquina

Ahí están las tecnologías, tampoco nos da mucha info pero nunca está de más hacerlo
Una vez que tenemos esta información vamos a irnos a web para ver a qué nos enfrentamos, okey pues nada más entramos tenemos esto
Web

Literalmente no vemos nada porque es una imagen y no tiene tampoco ningún comentario interesante así que vamos a pasar a descubrir si tiene rutas ocultas
Estas son las rutas que hemos podido encontrar, por lo que vamos a ver cuál de ellas nos permite ver un poco cómo ganar acceso a la máquina

Si nos metemos en el archivo “robots.txt” podemos ver lo siguiente

Por lo que vamos a probar a hacerle fuzzing a esa ruta
Después de hacerle fuzzing no encontré nada pero pensé que igual no era el único directorio que estaba oculto, así que hice fuzzing y encontré el siguiente directorio

Y cuando entré en este directorio me encontré con lo siguiente

Básicamente nos dice que está compartiendo una clave de ssh, que para descifrarla es con fasttrack (que es un diccionario) y poco más, por lo que ahora toca buscar esta clave con más fuzzing

Bueno encontramos un archivo, “mysecret.txt” así que vamos a ver qué es lo que contiene
SSH

Y ahí tenemos la clave para entrar por ssh pero parece que está codificada, por lo que vamos a pasar todo ese churro por una web que nos va a decir si está codificada o si no

Ahí podemos ver que nos indica que está codificado en base 58, por lo que lo primero va a ser decodificarlo. Dentro de la misma página hay una parte de decodificación por lo que se lo vamos a pasar para que nos lo devuelva sin ningún tipo de codificado

Ahora que tenemos la clave por ssh decodificada, vamos a intentar conectarnos por ssh a la máquina

Una vez que intentamos conectarnos con la clave privada nos pide contraseña, lo cual es raro ya que no debería de pedirla; esto significa que alguien le ha puesto contraseña a la clave privada para que a la hora de usarla te la pida
Como no sabes cuál es la contraseña, vamos a romperla peeeero si os acordáis antes nos han dicho que la contraseña estaba escondida para que nadie la encuentre y la cracke con el diccionario fasttrack así que va a ser exactamente lo que vamos a hacer

Básicamente lo que he hecho ha sido extraer la clave privada ssh y producir un hash con ssh2john en un formato que luego la herramienta john entienda para poder probar palabras hasta encontrar la que coincida
Una vez que tenemos la contraseña vamos a conectarnos por ssh a la máquina

Escalada de privilegios
Pues ya estamos dentro de la máquina, ahora lo que nos toca es escalar privilegios para llegar a ser root
Lo primero que suelo hacer para ver si podemos escalar privilegios es un “sudo -l” porque me dicen qué binarios puedo ejecutar según qué usuario, por lo que vemos nos deja ejecutar el binario python3.9 sobre el script heist.py

Vamos a ver qué es lo que tiene este script en python, peero antes de nada si hacemos un ls en el directorio de icex64 podemos ver que tenemos la primera flag

Una vez que tenemos esto, vamos con el script

Realmente el script no tiene “nada” por así decirlo, son 3 líneas de código y aquí realmente no podemos hacer nada pero podemos ver si tenemos posibilidad de tocar la librería que se está importando

Bueno aquí tenemos un poco de lore de la máquina, pero tampoco nos dice nada importante, que comprobemos si su código es seguro y poco más
Para ver dónde se encuentra la librería que se está importando podemos hacer el siguiente comando

Como podemos observar el archivo que se está importando tiene permisos 777 es decir que quien quiera puede venir y tocarlo, que es justo lo que vamos a hacer nosotros

En esta parte sí que es recomendable saber algo de python porque si no no vas a saber cómo escalar privilegios, pero bueno no te preocupes que ahora te explico cómo lo he hecho yo

Podemos ver que tiene varias librerías importadas, las cuales nos van a permitir ejecutar comandos
A mí lo que se me ocurre por ejemplo (pero hay muchísimas maneras) es hacer lo siguiente, poner esto debajo de las librerías

Esto lo que va a hacer es reportarnos una bash como el usuario que está ejecutando el script, que va a ser el “arsene”
Realmente hay muchas maneras, también podríamos poner lo siguiente

Y simplemente con este oneliner típico, si nos ponemos en escucha por el puerto 1212 tendríamos la reverse shell con el usuario “arsene”, pero esto ya sería una reverse shell con escalada de privilegios no una escalada de privilegios sin más, la diferencia es que en esta establecemos una conexión ya como el usuario “arsene” y en la otra (la que vamos a utilizar) no, simplemente en nuestra sesión de ssh nos cambiamos al otro usuario
Pero bueno en este caso voy a usar el “os.system("/bin/bash”)" y ya está, pero que sepáis que se podría hacer de otras muchas maneras
Bueno dejamos el script con esta línea

Nos vamos a ir al directorio donde se encuentra el script que tenemos que ejecutar como el usuario “arsene” y lo vamos a ejecutar de la siguiente manera

Ahí tenemos ya cómo hemos cambiado de usuario, por lo que lo único que nos queda es escalar a root
Siempre empiezo con el mismo comando a la hora de escalar privilegios y en esta ocasión no iba a ser menos, “sudo -l” y ahí está la manera con la que vamos a escalar privilegios

Se nos permite ejecutar el binario pip como sudo sin tener que poner la contraseña por lo que vamos a hacer lo siguiente

Vale igual te has quedado flipando diciendo, “cómo se ha convertido este tío en root ya” vale yo te lo explico, lo que he hecho ha sido aprovecharme de que podía ejecutar el binario pip (como root) sin necesidad de proporcionar la contraseña de root
Por lo que ahí ha sido donde he hecho “la trampa”
He puesto lo siguiente

Que básicamente lo que hace es crear un archivo setup.py el cual lanza una shell y lo que hacemos es ejecutarlo como root con el comando “sudo pip install” lo que nos devuelve una shell como el usuario root
Una vez que tenemos esto es game over porque ya simplemente nos falta irnos al directorio de trabajo del usuario y ver la flag de root

Este es el final de la máquina, realmente no pensaba que iba a ser tan “fácil” es decir al ser una media me esperaba más pero bueno ha estado divertida