StrongJenkins , DockerLabs
En este reto de DockerLabs aprendemos.
- Scan de puertos
- Fuerza bruta
- Scripting con Groovy
- Tratamiento de terminal
Herramientas y recursos
- nmap
- whatweb
- feroxbuster
- ffuf
Enumeracion
Lanzamos nmap con los parametros de costumbre en un ctf.
1
sudo nmap -p- -sS -sC -sV --min-rate=5000 -n -Pn -oX StrongJenkins 172.17.0.2
Como nos indica nmap en este caso solo encontramos el puerto 8080 abierto y por el nombre de la maquina hay un jenkins corriendo , tambien vemos que encontro un archivo robots.txt.
Veamos el robots.
No aporta mucho de momento pues lo iunico que dice es que no quiere que los robots sigan los enlaces de contruccion pero es un comentario no una directiva.
Ahora pasemos a observar el jenkins. Fuzzeamos por si hubiese algo mas. He tirado de feroxbuster pero no encuentra nada excepto el jenkins y nada a lo que podamos tener acceso excepto las propias imagenes de la pagina de login , no queda otra que hacer fuerza bruta.
Primero me lanzo whatweb para saber que version es e intentar con las credenciales por defecto.
Buscamos en internet cuales son las credenciales por defecto, averiguamos que a partir de la v2.93 se dejan de usar las credenciales por defecto que eran admin/Jenkins y tambien que el password se guarda en .jenkins/secrets/initialAdminPassword. Por lo tanto si estamos en la version 2.440.2 ya sabemos que el user es admin , asi que con unos pocos datos mas podremos lanzar el ataque.
Para poder realizar el ataque como pretendo necesito saber varios parametros.
- Nombre del fichero contra el que autentifica
- A donde nos redireciona cuando hay error
- Nombre de los valores donde introducimos user y pass
- El metodo que esta claro es post.
Yo lo hago desde las herramientas de desarollador.
Fuerza bruta
Voy a usar ffuf pues no conocia el poder que puede llegar a tener esta herramienta , probe hydra y no puede dar con el parametro que me mostrase cual el payload correto peso a que lo encontraba porque se veia claramente que la redireccion no era hacia loginError
Comandos de hydra sin exito
1
hydra -l admin -P /home/quino/Maquinas_hack/Dockerlabs.es/Strongjenkins/dict.txt 172.17.0.2 -s 8080 http-post-form "/j_spring_security_check:j_username=^USER^&j_password=^PASS^&from=%2F&Submit=Login:Invalid username or password" -v
Paso para ffuf
1
ffuf -u http://172.17.0.2:8080/j_spring_security_check -r -c -w /home/quino/rockyou.txt -X POST -d 'j_username=admin&j_password=FUZZ&from=%2F&Submit=LoginError' -H 'Content-Type: application/x-www-form-urlencoded' -fl 9
La perseverancia nos ayuda a lograr nuestros objetivos.
Infiltracion
Ahora ya podemos logearnos y ver como nos mandamos un shell reversa.
Una vez logueado nos trasladamos a administrar jenkins y abajo del todo tenemos la consala de scripts.
Si leemos nos dice que son groovy script , debe ser algo de java y como no tengo idea me voy a revshells en busca de ayuda.
Primero nc a la escucha como de costumbre.
Pasteamos el codigo que nos dio revshells
Ni idea pq lo metio en one-liner , pero me conecto sin problemas.
Tratamiento tty
1
2
3
4
5
6
script /dev/null -c bash
crtl
stty raw -echo; fg
reset xterm
export TERM=xterm
export SHELL=bash
Dependiendo de como siga la escalada nos convendria setear tambien nuestros rows y columns.
Como podemos ver en la imagen de abajo realizo varias comprobaciones y tengo exito con el comando find
Nos han dejado de regalo python3.10 con privilegios suid. Recomiendo instalar searchbins es increible mas rapido que navegar hasta gtofbins.
Escalada final
Ejecutamos como nos indica y nos convertimos en root.
En la siguiente imagen podeis ver lo que sucede cuando no se ajustan la rows y la columms en nuestra terminal.
No obstante nos convertimos en root.
Gracias por llegar hasta aqui.
Si saben como hacer brute force contra jenkins con hydra comenten.
Comments powered by Disqus.