Nibbles
Nibbles es una máquina bastante simple, sin embargo, con la inclusión de una lista negra de inicio de sesión, es un poco más difícil encontrar credenciales válidas. Afortunadamente, se puede enumerar un nombre de usuario y adivinar la contraseña correcta no lleva mucho tiempo para la mayoría.

Reconnaissance
Realizaremos un reconocimiento con nmap para ver los puertos que están expuestos en la máquina Nibbles. Este resultado lo almacenaremos en un archivo llamado allPorts.
A través de la herramienta de extractPorts, la utilizaremos para extraer los puertos del archivo que nos generó el primer escaneo a través de Nmap. Esta herramienta nos copiará en la clipboard los puertos encontrados.
Lanzaremos scripts de reconocimiento sobre los puertos encontrados y lo exportaremos en formato oN y oX para posteriormente trabajar con ellos. En el resultado, comprobamos que se encuentran abierta una página web de Apache.
Transformaremos el archivo generado targetedXML para transformar el XML en un archivo HTML para posteriormente montar un servidor web y visualizarlo.
Accederemos a http://localhost y verificaremos el resultado en un formato más cómodo para su análisis.

Web Enumeration
Realizaremos una comprobación de las tecnologías que utiliza el sitio web.
Al acceder a http://10.10.10.75 verificamos que el contenido de la página web solamente nos muestra Hello world!.

Al verificar el código fuente de la página web, comprobamos que se nos menciona de un directorio llamado nibbleblog.

Realizaremos una comprobación de las tecnologías que utiliza el siguiente sitio web.
Al acceder a http://10.10.10.75/nibbleblog/, comprobamos que se trata de Nibbleblog.

A través de la herramienta feroxbuster, realizaremos una enumeración de directorios y páginas web. Verificamos que se nos muestran diferentes archivos que podremos inspeccionar.
Al analizar los distintos archivos, nos encontramos con el archivo users.xml el cual nos proporciona el nombre de un usuario del CMS.
Por otro lado, volveremos a realizar una enumeración de páginas y directorios, esta vez con dirsearch. En el resultado obtenido, verificamos una página web llamada admin.php.
Al ingresar a http://10.10.10.75/nibbleblog/admin.php nos encontramos con la siguiente página web del panel de Administración del CMS de Nibbleblog.

Después de un tiempo intentando encontrar vectores de ataque para tener acceso al CMS, probamos de acceder con el usuario encontrado y credenciales del nombre de máquina, finalmente logramos el acceso. admin/nibbles

Initial Access
Abusing Nibbleblog 4.0.3 - Arbitrary File Upload (Remote Code Execution) [CVE-2015-6967]
Una vez teniendo acceso al CMS de Nibbleblog, nos encontramos con el archivo README el cual nos proporciona la versión exacta del CMS.
Al realizar una búsqueda de vulnerabilidades de esta versión del CMS, nos encontramos con la siguiente de Arbitrary File Upload.
Al analizar en profundidad la posible vulnerabilidad, nos encontramos con el siguiente 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.
Nos encontramos con el siguiente repositorio de GitHub que nos permite realizar la subida del archivo malicioso.
En nuestro directorio actual de trabajo, nos copiaremos el archivo php-reverse-shell.php el cual modificaremos para indicarle nuestra dirección IP y puerto donde recibiremos la Reverse Shell.

Renombraremos el archivo mencionado, y ejecutaremos el exploit para subir el archivo malicioso al CMS.
Nos pondremos en escucha para recibir la Reverse Shell.
Seguidamente, realizaremos la petición por GET del archivo malicioso subido al CMS para que sea ejecutado en el servidor.
Comprobamos que hemos ganado finalmente el acceso al equipo y podemos visualizar la flag de user.txt.
Privilege Escalation
Abusing sudoers privilege
Revisaremos los grupos a los que formamos parte y si disponemos de algún privilegio de sudoers. Nos encontramos que podemos ejecutar como sudo sin proporcionar credenciales un script en Bash ubicado en /home/nibbler/personal/stuff/monitor.sh.
Revisando el directorio personal del usuario nibbler, nos encontramos con un archivo comprimido (personal.zip) el cual al descomprimirlo se nos generan los directorios correspondientes y el script mencionado anteriormente.
Revisamos los permisos del archivo monitor.sh el cual somos el propietario, y el contenido de este mismo.
Dado que somos el propietario de este script, lo que podemos realizar es modificarlo para que realice otra acción diferente a la que estaba pensada originalmente.
En nuestro caso, modificaremos el script para que convierta el binario /bin/bashen SUID. Le daremos los permisos correspondientes para que pueda ser ejecutado.
Ejecutaremos el script como usuario sudo debido que disponemos de dicho privilegio. Al revisar los permisos del binario /bin/bash, verificamos que se le han asignado correctamente los permisos de SUID. Una vez teniendo el binario modificado, nos convertiremos en usuario root y visualizaremos la flag de root.txt
Última actualización
¿Te fue útil?