Inject

Inject es una máquina Linux de dificultad fácil que presenta un sitio web con una funcionalidad de carga de archivos vulnerable a la inclusión de archivos locales (LFI). Al explotar la vulnerabilidad LFI, se pueden enumerar los archivos del sistema, lo que revela que la aplicación web usa una versión específica del módulo Spring-Cloud-Function-Web susceptible a CVE-2022-22963. La explotación de esta vulnerabilidad otorga un punto de apoyo inicial como usuario frank. El movimiento lateral se logra mediante una enumeración adicional de archivos, que revela una contraseña de texto sin formato para phil. Luego, se puede explotar un cronjob que se ejecuta en la máquina para ejecutar un playbook Ansible malicioso, obteniendo finalmente un shell inverso como usuario root.
Reconocimiento
Iniciamos con el reconocimiento de las puertos abiertos y servicios que se tiene
-p-: Escanea todos los puertos (del 1 al 65535).--open: Muestra solo los puertos que están abiertos.--min-rate 5000: Establece una tasa mínima de envío de paquetes de 5000 paquetes por segundo, acelerando el escaneo.-Pn: Omite la fase de descubrimiento de host, asumiendo que el host está activo (útil si los pings están bloqueados).-n: No realiza resolución de nombres DNS, utilizando solo direcciones IP.-vvv: Proporciona una salida muy detallada y verbosa.10.10.11.204: La dirección IP del objetivo.-oG allportsScan: Guarda los resultados del escaneo en un archivo en formato "grepable" llamadoallportsScan.
Luego de tener los puertos abiertos procedemos a enumerar los servicios de estos
-p22,8080: Escanea específicamente los puertos 22 (SSH) y 8080 (HTTP alternativo).-sC: Utiliza scripts NSE (Nmap Scripting Engine) por defecto para realizar detección de versiones, detección de servicios y algunas comprobaciones comunes de seguridad.-sV: Intenta detectar versiones de los servicios que están ejecutándose en los puertos abiertos.-vvv: Proporciona una salida muy detallada y verbosa.-Pn: Omite la fase de descubrimiento de host, asumiendo que el host está activo (útil si los pings están bloqueados).-oN servicesScan: Guarda los resultados del escaneo en un archivo llamadoservicesScanen formato normal.
Sitio web
En el sitio web encontramos el siguiente contenido

Tenemos un apartado para subir archivos

Al cargar una imagen podemos subir un archivo de tipo img y luego poder visualizar dicha imagen

Explotación
LFI
Enumerando podemos encontrar que se tiene una vulnerabilidad de lfi y podemos leer el /etc/passwd

Además, podemos observar que se tiene directory listing.

En el directorio /home/frank encontramos los siguientes archivos:
En /home/phil tenemos los siguientes:
En /home/frank/.m2/settings.xml tenemos lo siguiente:
/var/www/WebApp/
/var/www/WebApp/.settings/
/var/www/WebApp/pom.xml
Shell - Frank
CVE-2022-22963
Buscando un poco mas en la web encontramos una vulnerabilidad relacionada con springframework
Usamos el exploit y podemos obtener una shell como el usuario frank

Anteriormente encontramos unas credenciales en pom.xml que nos sirve para hacer movimiento lateral al usuario phil
Shell - phil

Enumerando los procesos podemos encontrar que se ejecuta /usr/bin/python3 /usr/local/bin/ansible-parallel /opt/automation/tasks/playbook_1.yml cada cierto tiempo

Además, nosotros pertenecemos al grupo de staff

Shell - root
Revisamos el archivo playbook_1.yml y tenemos lo siguiente:
Para informarnos de como funciona y crear una tarea maliciosa.
Luego podemos agregar nuestra tarea maliciosa que ejecutara un script en bash shell.sh
El contenido de shell.sh contiene lo siguiente
Luego de esperar un tiempo podemos ver que tenemos una copia de la /bin/bash en /tmp/cmd

Además este tiene permisos de suid y podemos escalar privilegios

Last updated