HackTheBox

Artificial



Key Findings


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

  • Aplicación web que permite la carga de modelos AI personalizados (formato .h5)
  • Modelo malicioso de Keras con código Python embebido para ejecución remota
  • Base de datos SQLite con credenciales de usuario hasheadas en MD5
  • Servicio Backrest de respaldos ejecutándose en localhost:9898
  • Escalada de privilegios mediante funcionalidad de restauración de backups
  • Archivos de configuración expuestos con hashes bcrypt codificados en base64

Key Learning Objectives


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

  • ✅ Web Application Reconnaissance
  • ✅ Docker Container Usage for AI Model Creation
  • ✅ Keras/TensorFlow Model Poisoning Attack
  • ✅ SQLite Database Analysis & Credential Extraction
  • ✅ Password Hash Cracking (MD5 & bcrypt)
  • ✅ SSH Local Port Forwarding Techniques
  • ✅ Backrest Backup Service Exploitation
  • ✅ File Restoration Privilege Escalation

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
❯ sudo nmap -p 22,80,8000 -sCV -oN services 10.10.11.74

Resultados:

  • Puerto 22/tcp: Servicio SSH
  • Puerto 80/tcp: Servidor Apache HTTP
  • Puerto 8000/tcp: Servicio web adicional


Web Application Assessment


Al acceder al servicio web se reveló una plataforma de alojamiento de modelos AI. El fuzzing inicial de directorios no arrojó resultados significativos, por lo que procedimos con el registro de usuario.

Después del registro y autenticación, descubrimos funcionalidad para cargar modelos AI en formato .h5 (Keras/HDF5).


AI Model Upload Requirements Analysis


La aplicación proporcionó las especificaciones requirements.txt y Dockerfile para la creación de modelos AI. El análisis reveló que los modelos deben estar en formato HDF5 (.h5) como se indica en la interfaz del dashboard.


Malicious Model Creation & Exploitation


Utilizando Docker para compatibilidad, construimos un entorno de contenedor para el desarrollo del exploit. Se creó un script de Python para generar un modelo malicioso de Keras que ejecuta una reverse shell al ser cargado.

❯ docker build -t artificial-exploit .

El contenedor fue ejecutado con un volumen compartido para acceder a nuestro script malicioso de Python:

❯ docker run -it -v $(pwd):/app artificial-exploit

Ejecutamos nuestro script de exploit dentro del contenedor para generar el modelo malicioso .h5:


Model Upload & Code Execution


El modelo malicioso generado fue cargado a la aplicación web:

Al hacer clic en "View Predictions", el modelo malicioso fue cargado, activando nuestro payload de reverse shell y estableciendo acceso inicial:


System Enumeration & Data Discovery


La enumeración post-explotación reveló un archivo de backup Backrest en directorios comunes del sistema. Sin embargo, el acceso estuvo inicialmente restringido debido a permisos insuficientes.

La enumeración adicional reveló un archivo de base de datos SQLite que era accesible:


Database Analysis & Credential Extraction


La enumeración de la base de datos reveló una tabla user que contenía información de nombre de usuario, email y hash de contraseña para el usuario gael:

El hash de contraseña MD5 fue crackeado exitosamente usando crackstation.net, revelando la contraseña: mattp005numbertwo


User Privilege Escalation


Con las credenciales obtenidas, escalamos al usuario gael y obtuvimos acceso al archivo de backup previamente restringido. El backup fue copiado a /tmp para su análisis:


Configuration File Analysis & Additional Credentials


El backup extraído contenía un archivo de configuración JSON con credenciales del servicio Backrest:

La contraseña estaba codificada en base64 y contenía un hash bcrypt:

El hash bcrypt fue crackeado exitosamente usando John the Ripper:


Service Discovery & Port Forwarding


La enumeración adicional reveló que el puerto 9898 se estaba ejecutando localmente. Se estableció reenvío de puerto local SSH para acceder a este servicio interno:

❯ ssh gael@artificial.htb -L 9898:localhost:9898


Backrest Service Access


El servicio local fue identificado como Backrest versión 1.7.2, una herramienta de gestión de backups. La autenticación fue exitosa usando las credenciales descubiertas anteriormente:


Backup Configuration & Exploitation



Repository Configuration


Se configuró un nuevo repositorio de backup haciendo clic en "Add Repo" y completando los campos requeridos:

Los cronogramas de Prune Policy fueron deshabilitados para prevenir limpieza automática:


Backup Plan Creation


Se creó un plan de backup haciendo clic en "Add Plan" y configurando los parámetros necesarios para respaldar el directorio root:


Root Flag Extraction


El plan de backup fue ejecutado haciendo clic en "Backup Now":

Usando el "Snapshot Browser", navegamos a root/root.txt y seleccionamos "Restore Path":

Finalmente, la flag de root fue descargada usando "Download File(s)":


Recommendations



Immediate Actions


1. AI Model Upload Security

  • Implementar validación estricta de modelos y sandboxing
  • Deshabilitar ejecución de código durante la carga de modelos
  • Aplicar sanitización comprehensiva de entrada para archivos cargados
  • Usar entornos contenedorizados para procesamiento de modelos

2. Database Security

  • Asegurar archivos de base de datos SQLite con permisos de archivo apropiados
  • Implementar encriptación de base de datos para datos sensibles
  • Usar algoritmos de hashing de contraseñas más fuertes con salt

3. Service Hardening

  • Restringir acceso al servicio Backrest solo a usuarios autorizados
  • Actualizar Backrest a la última versión con parches de seguridad
  • Implementar segmentación de red para servicios internos
  • Deshabilitar capacidades de restauración de backup innecesarias para usuarios no administrativos

Long-term Security Improvements


1. Access Controls

  • Implementar el principio de mínimo privilegio en todos los servicios
  • Revisión regular de permisos de usuario y derechos de acceso a servicios
  • Autenticación multifactor para servicios sensibles y funciones administrativas

2. Monitoring

  • Desplegar monitoreo comprehensivo de integridad de archivos
  • Implementar logging centralizado para cargas de modelos y operaciones de backup
  • Monitorear patrones de acceso sospechosos a la base de datos y acceso no autorizado a archivos

3. Regular Security Assessments

  • Realizar pruebas de penetración periódicas enfocadas en aplicaciones AI/ML
  • Implementar prácticas de desarrollo seguro para flujos de trabajo de machine learning
  • Procedimientos regulares de pruebas de backup y restauración con validación de seguridad