miguel@home:~$

JenkHack - DockerLabs

OS Dificultad Creator
Linux F谩cil d1se0

Reconocimiento

Comenzamos el proceso de reconocimiento identificando los puertos abiertos en el sistema objetivo.

sudo nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 172.17.0.2 -oG ports
  • -p-: Escanea todos los puertos (1-65535).
  • --open: Solo muestra los puertos abiertos.
  • -sS: Realiza un escaneo SYN, que es r谩pido y discreto.
  • --min-rate=5000: Env铆a al menos 5000 paquetes por segundo, acelerando el escaneo.
  • -n: No realiza resoluci贸n DNS.
  • -Pn: No realiza ping previo para determinar si el host est谩 activo.
  • -vvv: Muestra resultados detallados y en tiempo real.

image

Puertos Descubiertos

Durante el escaneo, descubrimos los siguientes puertos abiertos:

  • 80 (HTTP)
  • 443 (HTTPS)
  • 8080 (Http-Proxy)

Realizamos un escaneo m谩s detallado para obtener informaci贸n sobre los servicios en estos puertos:

nmap -p443,80,8080 -sCV 172.17.0.2 -oG targeted

image

Exploraci贸n Web

Sitio en el puerto 80

En el puerto 80 encontramos una p谩gina que parece ser un blog informativo:

image

No se observa informaci贸n relevante a simple vista, pero menciona el servicio Jenkins, que previamente identificamos en el puerto 8080.

Enumeraci贸n de directorios

Para investigar m谩s, utilizamos Gobuster para explorar directorios:

gobuster dir -u http://172.17.0.2 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,doc,html,txt,img
  • gobuster dir: Realiza un escaneo de directorios.
  • -u http://172.17.0.2/: URL objetivo.
  • -w: Diccionario a utilizar.
  • -x: Extensiones de archivo para buscar.

image

No encontramos nada relevante en el puerto 80, as铆 que procedemos a investigar el puerto 8080, donde encontramos un panel de inicio de sesi贸n de Jenkins:

image

Credenciales descubiertas

En el c贸digo fuente del sitio en el puerto 80 encontramos dos palabras clave ocultas:

  • jenkins-admin
  • cassandra

Probamos estas credenciales en el panel de Jenkins:

image

Acceso al panel de Jenkins

Con las credenciales obtenidas, accedemos al panel de Jenkins:

image

Ejecuci贸n Remota de C贸digo (RCE)

Utilizamos un RCE a trav茅s de Groovy Script, siguiendo la gu铆a de HackTricks.

Simult谩neamente, escuchamos en el puerto 4444 con netcat. Una vez ejecutado el script, obtenemos acceso:

image

Escalaci贸n de Privilegios

Configuraci贸n de una TTY interactiva

Iniciar una sesi贸n interactiva

Ejecutamos el siguiente comando en nuestra shell para forzar una sesi贸n interactiva:

script /dev/null -c bash

Suspender la shell

Usamos Control+Z para suspender temporalmente nuestra sesi贸n.

Configurar el terminal local

En nuestro terminal local ejecutamos:

stty raw -echo; fg

Resetear el terminal

Dentro de la shell interactiva, reseteamos la configuraci贸n:

reset

Configurar el tipo de terminal

Finalmente, configuramos las variables necesarias:

export TERM=xterm
export SHELL=bash

Informaci贸n Cr铆tica en el Sistema

Utilizamos linpeas.sh para buscar posibles vectores de escalaci贸n. Descubrimos un archivo note.txt en el directorio del usuario jenkhack:

image

El archivo contiene lo siguiente:

jenkhack:C1V9uBl8!'Ci*`uDfP

Este texto parece una contrase帽a cifrada. Usamos CyberChef para descifrarla:

image

Descubrimos que est谩 en Base85 y la contrase帽a descifrada es:

jenkinselmejor

Accedemos al usuario jenkhack:

su jenhack

image

Escalaci贸n a Root

Ejecutamos sudo -l y verificamos que podemos ejecutar bash como root:

sudo /usr/local/bin/bash -p

Modificando el Script de Bash

El script ejecuta comandos desde una ruta en /opt. Editamos este script para cambiar los permisos de bash, otorg谩ndole el bit SUID:

chmod u+s /bin/bash

image

Asignamos permisos al script:

chmod +x bash.sh

Si aparece el mensaje de 茅xito, significa que el script est谩 funcionando correctamente:

image

Finalmente, ejecutamos el siguiente comando para obtener acceso root:

sudo /bin/bash -p

隆Ahora somos root!

image