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 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.

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.

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.

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

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

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.

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
.

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.

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.

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.

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.