Nibbles

Publicado: 12 de Mayo de 2025 Autor: Josรฉ Miguel Romero aKa x3m1Sec Dificultad: โญ Easy
๐ Descripciรณn
Nibbles es una mรกquina Linux de dificultad fรกcil en HackTheBox que involucra la explotaciรณn de una instalaciรณn vulnerable de Nibbleblog 4.0.3. La mรกquina requiere enumerar un CMS de blog, descubrir credenciales, explotar una vulnerabilidad de carga de archivos arbitrarios (CVE-2015-6967) para conseguir acceso inicial, y finalmente escalar privilegios aprovechando permisos sudo mal configurados en un script bash.
๐ Metodologรญa
๐ญ Reconocimiento
Ping para verificaciรณn en base a TTL
๐ก Nota: El TTL cercano a 64 sugiere que probablemente sea una mรกquina Linux.
Escaneo de puertos
Enumeraciรณn de servicios
๐ Enumeraciรณn Web
80 HTTP
Enumerando el servicio web del puerto 80 de forma manual, no vemos gran cosa aparte de un mensaje de bienvenida, aunque revisando el cรณdigo fuente de la pรกgina encontramos un comentario en el que se menciona un directorio llamado /nibbleblog


Al acceder a este recurso no vemos gran cosa, aunque buscando algo de informaciรณn sobre Nibbleblog encontramos que es proyecto de cรณdigo abierto basado en un CMS para crear blogs de forma sencilla.

Revisando el cรณdigo fuente en github hay varios ficheros que nos pueden aportar informaciรณn sobre la versiรณn:

https://github.com/dignajar/nibbleblog
Gracias al fichero README enumeramos la versiรณn(4.0.3)

http://10.10.10.75/nibbleblog/README
๐ท๏ธFuzzing de directorios
Al realizar fuzzing de directorios usando la herramienta gobuster hallamos algunos ficheros interesantes ademรกs de algunos que ya habรญamos logrado enumerar de forma manual:

En el directorio content encontramos un xml con un nombre de usuario admin
http://10.10.10.75/nibbleblog/content/private/users.xml
A continuaciรณn accedemos a otro de los recursos encontrado gracias al fuzzing de directorios, el panel de administraciรณn:
http://10.10.10.75/nibbleblog/admin.php?controller=user&action=login

Antes de iniciar un ataque de fuerza bruta, probamos el usuario adminobtenido en el paso anterior con contraseรฑas como nibblesblog, nibbleblog, nibbles y obtenemos รฉxito con esta รบltima:

๐ป Explotaciรณn
Anteriormente enumeramos la versiรณn de este CMS. Una simple bรบsqueda nos permite saber que vulnerable a Arbitrary FIle Upload
๐ CVE-2015-6967
La vulnerabilidad de carga de archivos sin restricciones en el complemento My Image en Nibbleblog anterior a 4.0.5 permite a los administradores remotos ejecutar cรณdigo arbitrario cargando un archivo con una extensiรณn ejecutable y luego accediendo a รฉl mediante una solicitud directa al archivo en content/private/plugins/my_image/image.php.
Existen varios exploits pรบblicos que permiten explotar esta vulnerabilidad:
https://github.com/dix0nym/CVE-2015-6967
En mi caso, solo voy a usar el exploit como referencia para entender lo que estรก haciendo. Hay una funciรณn para login y posteriormente hay otro par de funciones, una que se encarga de crear o subir un plugin llamado "my_image" adjuntando una shell "nibbles.php" como payload y posteriormente se realiza una llamada a content/private/plugins/my_image/image.php para desencadenar la reverse shell:
En en este caso el plugin my_image ya existe, asรญ que aprovechando que el mรณdulo de carga de archivos es vulnerable a Arbitrary File Upload y no sanitiza ni valida el tipo de fichero que se carga, voy a subir una php reverse shell de pentestmonkey:
Despuรฉs de cambiar la IP y el puerto por el de mi host local, subo la shell

A continuaciรณn inicio un listener en el puerto 1234:
Por รบltimo realizo la peticiรณn a la shell y obtengo la conexiรณn reversa:
http://10.10.10.75/nibbleblog/content/private/plugins/my_image/image.php

Mejora de la shell
En nuestro host de ataque
En el host comprometido
Foothold
Accedemos al directorio personal del usuario nibbler y capturamos la primera flag:
๐ Escalada de privilegios
Verificamos que el usuario nibbler puede ejecutar el siguiente script como root:
En el directorio del usuario nibbler vemos que hay un archivo comprimido sobre el que el รบnicamente usuario nibbler tiene permisos de lectura:
Tras descomprimirlo vemos que hay un script en bash llamado monitor.sh cuyo contenido es el siguiente:
Dado que tenemos CONTROL TOTAL SOBRE el fichero:
Podemos editar el contenido y dejar simplemente una llamada a la bash:
De tal forma que cuando ejecutemos el script escalaremos privilegios a root y podremos capturar la flag:
Last updated