Post

StrongJenkins , DockerLabs

portada

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

reporte

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.

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.

what

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.

  1. Nombre del fichero contra el que autentifica
  2. A donde nos redireciona cuando hay error
  3. Nombre de los valores donde introducimos user y pass
  4. El metodo que esta claro es post.

Yo lo hago desde las herramientas de desarollador.

extract

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 

hydra

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 

ffuf

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.

consola

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

groovy

Ni idea pq lo metio en one-liner , pero me conecto sin problemas.

nc

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

find

Nos han dejado de regalo python3.10 con privilegios suid. Recomiendo instalar searchbins es increible mas rapido que navegar hasta gtofbins.

searc

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.

errorterm

No obstante nos convertimos en root.

root

Gracias por llegar hasta aqui.

Si saben como hacer brute force contra jenkins con hydra comenten.

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

Comments powered by Disqus.