Gabriel Tello

Máquina Bolt

Fecha de publicación: | 1200 palabras | 6 mins

Esta es una guía paso a paso presentada en formato de reporte profesional sobre una prueba de penetración realizada en una máquina Debian.

Resumen ejecutivo

Este informe describe una evaluación de seguridad en la que se identificaron y explotaron varias vulnerabilidades críticas en la máquina Bolt. Durante el reconocimiento, se encontraron servicios expuestos, como un error en Bolt CMS y una página de información de PHP. Estos descubrimientos llevaron a la extracción de credenciales sensibles y a la explotación de una vulnerabilidad que permitió acceder a archivos importantes del sistema.

Además, se detectó un recurso compartido NFS que contenía un archivo protegido por contraseña. Mediante el uso de técnicas de fuerza bruta, se logró descifrar el archivo y obtener una clave SSH, lo que permitió acceder al sistema como un usuario identificado. Finalmente, se aprovechó una configuración de permisos incorrecta para elevar los privilegios y obtener acceso root al sistema, logrando control completo de la máquina.

Reconocimiento

Se realizó un escaneo de red utilizando la herramienta nmap para identificar puertos y servicios abiertos en la máquina.

Resultado nmap

Figura 1: Resultado nmap

Resultado del reconocimiento

Sistema Operativo Dirección IP Puertos Abiertos
Debian 192.168.138.132 22 (SSH), 80 (HTTP), 111 (RPCbind), 2049 (NFS), 8080 (HTTP Alternate)

Explotación

El escaneo de nmap mostró que el puerto 80 y 8080 estaba abierto, se procedió a investigar en el navegador. Se encontró una página de error, aparentemente de Bolt CMS.

error instalación bolt

Figura 2: Error de instalación de Bolt

En el puerto 8080 está expuesta una página de información de PHP. Se procedió a hacer fuerza bruta a los directorios de ambos puertos.

php info page

Figura 3: Página de información de PHP

En el puerto 8080 está expuesta una página de información de PHP. Se procedió a hacer fuerza bruta a los directorios de ambos puertos.

fuerza bruta a directorios

Figura 4: Fuerza bruta a directorios del puerto 80

Dentro del directorio /app, se encontró un archivo config.yml que contenía credenciales de SQLite.

credenciales expuestas

Figura 5: Credenciales expuestas en archivo config.yml

En cambio, los resultados de fuerza bruta en los directorios para el puerto 8080 retornaron un solo resultado, el cual fue el directorio /dev.

boltwire

Figura 6: Página de inicio de BoltWire

Se procedió a interactuar con la página de BoltWire, pero no se encontró nada de interés. Se buscaron vulnerabilidades en Internet y se probó una vulnerabilidad de local file inclusion.

LFI

Figura 7: Local file inclusion

El archivo /etc/passwd pudo ser examinado debido al LFI y se encontró un potencial usuario, jeanpaul.

Simultáneamente, se enumeró el puerto 2049 (NFS). Utilizando el comando showmount -e se reveló que el directorio /srv/nfs estaba compartido con rangos de IP específicos.

Luego, se creó un directorio local /mnt/dev para usarlo como punto de montaje. Posteriormente, se montó el recurso compartido NFS /srv/nfs de la máquina en el directorio local utilizando el comando mount. Al navegar a /mnt/dev, se descubrió un archivo llamado save.zip.

enumeración NFS

Figura 8: Enumeración de NFS

El archivo zip tiene una contraseña, se utilizó la herramienta fcrackzip con un diccionario de contraseñas (rockyou.txt) para intentar descifrar la contraseña del archivo save.zip. El comando tuvo éxito y reveló que la contraseña era java101.

A continuación, se descomprimió el archivo save.zip usando sudo unzip y se ingresó la contraseña descubierta. Esto extrajo tres archivos: bandera1.txt, id_rsa, y todo.txt.

El archivo bandera1.txt contenía una cadena hash, mientras que el archivo todo.txt incluía instrucciones relacionadas con la gestión del sitio web y una recomendación de seguir programando en Java, este archivo fue firmado por jp el cual podría ser el usuario jeanpaul encontrado anteriormente.

Debido a esto, se intentó usar el archivo id_rsa para conectarse a la máquina con el usuario jeanpaul, usando las credenciales ya conocidas hasta el momento.

crack de archivo zip

Figura 9: Crack del archivo zip

La contraseña encontrada en el archivo de configuración anteriormente fue la contraseña correcta para el usuario jeanpaul, una vez dentro de la máquina se procedió a escalar privilegios.

log in

Figura 10: Log in con usuario jeanpaul

Escalación de privilegios

Con el uso del comando sudo -l, se observó que el usuario actual podía usar el comando zip como usuario root sin necesidad de una contraseña. Se utilizó una técnica de escalada de privilegios tomada de la página GTFObins, la cual proporciona métodos para explotar binarios con permisos especiales mediante sudo. En este caso, se aprovechó del binario zip para ejecutar comandos con privilegios elevados.

El proceso comenzó con la creación de un archivo temporal mediante el comando TF=$(mktemp -u), que generó un nombre de archivo único sin llegar a crear el archivo físicamente, almacenándolo en la variable TF. Luego, se ejecutó zip con privilegios de superusuario usando el comando sudo zip $TF /etc/hosts -T -TT 'sh #'. Aquí, zip fue configurado para ejecutar el intérprete de comandos sh, utilizando /etc/hosts como un archivo dummy solo para cumplir con los requerimientos del binario. Las opciones -T y -TT permitieron que sh se ejecutara con permisos elevados. Finalmente, se eliminó el archivo temporal con sudo rm $TF para limpiar los rastros del ataque. Esta secuencia permitió obtener acceso root a la máquina.

escalada a root

Figura 11: Escalada a root

Herramientas utilizadas

Herramienta Descripción
nmap Utilizada para el escaneo de red y detección de puertos y servicios abiertos en la máquina objetivo.
fcrackzip Herramienta empleada para realizar un ataque de fuerza bruta a archivos zip.
wfuzz Usada para realizar fuerza bruta en los directorios web, descubriendo rutas sensibles.
GTFObins Recurso en línea que proporcionó el método para escalar privilegios utilizando el binario zip con permisos especiales de sudo.

Conclusión

La evaluación de seguridad en la máquina Bolt reveló vulnerabilidades críticas que permitieron obtener acceso completo al sistema, desde la extracción de credenciales hasta la escalada de privilegios a root. Estos problemas se originaron principalmente por configuraciones incorrectas, exposición de información sensible y la falta de actualizaciones de seguridad. Si bien se logró explotar con éxito estas vulnerabilidades, la implementación de las recomendaciones sugeridas puede mitigar riesgos similares en el futuro y fortalecer la seguridad general de la máquina.

Recomendaciones

Se recomienda actualizar y parchear el software del servidor y las aplicaciones, como Bolt CMS, para protegerse de vulnerabilidades conocidas. Restringir el acceso a información sensible deshabilitando o restringiendo las páginas de información del sistema, como phpinfo(), que exponen detalles críticos a posibles atacantes. Asegurar archivos y configuraciones almacenando credenciales de manera segura y cifrada, además de implementar políticas de acceso que limiten la visibilidad de archivos sensibles como config.yml. Reforzar las configuraciones de NFS para limitar el acceso a recursos compartidos mediante configuraciones más restrictivas, asegurando que solo usuarios autorizados puedan acceder. Revisar los permisos sudo para evitar que usuarios ejecuten binarios potencialmente explotables, como en este caso fue zip, con privilegios de root. Mejorar la gestión de claves SSH implementando medidas para proteger las claves privadas y limitando el acceso SSH a usuarios confiables.

#Linux   #LFI   #Pentesting   #Red Team   #Cms   #Writeup  

Responder a este post por correo ↪