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