PermX

PermX es una máquina Linux de dificultad fácil que cuenta con un sistema de gestión de aprendizaje vulnerable a la carga de archivos sin restricciones a través de CVE-2023-4220. Esta vulnerabilidad se aprovecha para obtener un punto de apoyo en la máquina. Al enumerar la máquina se revelan las credenciales que conducen al acceso SSH. Luego se explota una configuración incorrecta de sudo para obtener un shell root.


Reconnaissance

Realizaremos un reconocimiento con nmap para ver los puertos que están expuestos en la máquina PermX. 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.

Añadiremos la siguiente entrada en nuestro archivo /etc/hosts.

Web Enumeration

Realizaremos una comprobación de las tecnologías que utiliza el sitio web.

Accederemos a http://permx.htb y nos encontramos con la siguiente página web, parece tratarse de una página de un servicio de Learning.

Realizaremos una enumeración de directorios de la página web a través de gobuster. Obtuvimos el siguiente resultado, sin ninguna información relevante.

Subdomain Enumeration

Enumeramos posibles subdominios de la página web a través de wfuzz y logramos enumerar un subdominio llamado lms.permx.htb.

Añadiremos esta nueva entrada en nuestro archivo /etc/hosts.

Realizaremos una comprobación de las tecnologías que utiliza el sitio web.

Al acceder a http://lmx.permx.htb, nos encontramos con un sitio web de Chamilo LMS. No logramos encontrar credenciales de defecto de la plataforma.

Chamilo LMS es una plataforma de e-learning libre, licenciada bajo la GNU/GPLv3, de gestión del aprendizaje presencial, semi-presencial o virtual, cuyo propósito es mejorar la educación y su acceso a ella a nivel mundial.

Al realizar una enumeración de directorios y archivos a través de dirsearch, logramos obtener diferentes archivos, como el README o robots.txt.

Initial Foothold

Chamilo LMS - Unrestricted File Upload [Remote Code Execution] (CVE-2023-4220)

Analizamos el archivo README.md, y logramos obtener la versión de Chamilo LMS.

Al realizar una búsqueda por Internet de posibles vulnerabilidades de esta versión, nos encontramos con el siguiente CVE-2023-4220.

Por otro lado, también logramos encontrar el siguiente repositorio de GitHub que nos permite realizar la explotación de dicha vulnerabilidad de Unrestricted File Upload.

El primer paso, será lograr escanear la página web para verificar si es vulnerable. Esto lo podremos comprobar a través del módulo scan que nos ofrece el exploit.

Una vez localizado que el target es vulnerable, el siguiente paso será lograr subir una webshell al Chamilo LMS. Al ejecutar el exploit, se nos proporciona el acceso a la webshell.

Realizamos la comprobación para verificar si podemos llegar a ejecutar comandos. Probamos de ejecutar el comando whoami y obtuvimos el resultado esperado.

El siguiente paso será lograr tener acceso al equipo. Por lo tanto, nos pondremos en escucha con la herramienta de nc.

Ejecutaremos en la webshell que disponemos el siguiente comando para lograr obtener una Reverse Shell.

Volviendo a nuestra terminal, verificamos que hemos logrado obtener acceso al sistema como usuario www-data.

Initial Access

Information Leakage

Revisamos si disponemos de algún privilegio o grupo que podamos intentar aprovecharnos para escalar privilegios o movernos lateralmente, pero no logramos obtener resultado positivo.

Enumerando el directorio de /var/www/chamilo/app/config, realizamos una búsqueda recursiva en todos los archivos para ver si había algún string con el valor password. Finalmente parece haber obtenido unas credenciales de la base de datos.

De los usuarios que disponen bash que enumeramos en /etc/passwd, probamos de autenticarnos con el usuario mtz y las credenciales obtenidas anteriormente y logramos el acceso.

Visualizamos finalmente la flag de user.txt.

Privilege Escalation

Abusing sudoers privilege

Revisamos los grupos a los que forma parte el usuario mtz, no obtenemos resultado relevante. Comprobando los permisos de sudoers, verificamos que podemos ejecutar como sudo el script que se encuentra en /opt/acl.sh.

El script intenta restringir el acceso solo a archivos dentro de /home/mtz/, pero la validación es defectuosa:

  • Solo verifica que $target empiece con /home/mtz/, pero no bloquea correctamente rutas absolutas o enlaces simbólicos.

  • El check "$target" == *..* no es suficiente para prevenir Path Traversal.

Si podemos ejecutar este script como sudo, podemos modificar permisos de cualquier archivo arbitrario fuera de /home/mtz/.

Verificamos el uso del script, en el cual se debe indicar el usuario que se le otorgarán los permisos, el tipo de permisos y el archivo.

Creamos un enlace simbólico apuntando a /etc/passwd. Usamos el script vulnerable para modificar los permisos ACL de /etc/passwd, otorgándonos control total. Verificamos que tenemos permisos de escritura sobre el archivo indicado, con lo cual podríamos llegar a editar el /etc/passwd y añadir una nueva entrada de un nuevo usuario root.

Desde nuestro equipo, generaremos una nueva contraseña con openssl.

Agregaremos un nuevo usuario (gzzcoo) con UID 0 (root) a /etc/passwd. Verificamos que la entrada se ha añadido correctamente.

Finalmente, nos cambiamos al usuario creado y obtenemos acceso como usuario root, con lo cual podemos visualizar la flag de root.txt.

Última actualización

¿Te fue útil?