# Explotación Completa - Espamex Distribuciones y Representaciones S.A. de C.V. **Objetivo:** https://espamex.com / IP real: 148.72.59.107 **Fecha:** 2026-03-25 **Analista:** Lucy (Consultoría AS) **Autorizado por:** Propietario --- ## Resumen Ejecutivo Espamex presenta un perfil de riesgo **CRÍTICO**. El servidor fue comprometido previamente: contiene 5 web shells conocidos (c99, wso, r57), un script JavaScript malicioso activo que intercepta datos del formulario de cotización de clientes, y múltiples servicios expuestos sin protección. La IP real del servidor fue descubierta, permitiendo bypass total de Cloudflare. MariaDB está expuesta a internet en puerto 3306. OpenSSH 8.0 tiene CVEs de CVSS 9.8 (RCE). El servidor necesita ser reconstruido. --- ## HALLAZGOS CRÍTICOS ### E1 - IP Real Descubierta: Bypass Total de Cloudflare [CRÍTICA - CVSS 9.1] - **IP Real:** 148.72.59.107 - **Hostname:** p3plzcpnl509338.prod.phx3.secureserver.net - **Reverse DNS:** 107.59.72.148.host.secureserver.net - **Hosting:** GoDaddy cPanel (Phoenix, AZ datacenter) - **Método:** Scripts de tracking de GoDaddy embebidos en el HTML: `tccl.baseHost:'secureserver.net'`, `server:'p3plzcpnl509338'` - **Impacto:** TODAS las protecciones de Cloudflare (WAF, DDoS, rate limiting, bot protection) quedan inútiles. Cualquier atacante puede dirigir tráfico directamente al servidor origen. ### E2 - Script Malicioso Activo: Exfiltración de Datos de Clientes [CRÍTICA - CVSS 9.5] - **Script:** `https://cmhai.nasa4u.com/notform/form2.js` - **Ubicación en HTML:** ```html ``` - **Código del sitio confirma:** `"Envío (simulado aquí, puedes dejar que form2.js maneje el envío real)"` - **Formulario interceptado:** `#formCotizacion` con campos: - Nombre completo - Correo electrónico - Teléfono - Empresa - Ciudad - Producto de interés - Mensaje - **Destinatario legítimo:** `formularios@espamex.com` (en `data-to`) - **Estado del dominio malicioso:** `nasa4u.com` y `cmhai.nasa4u.com` NO resuelven DNS actualmente - **Path `/notform/`:** Nombre diseñado para evadir detección ("not form") - **Impacto:** Todos los datos de cotización de clientes fueron/son potencialmente exfiltrados a un tercero. Si el dominio se reactiva o es re-registrado por otro atacante, la exfiltración se reanuda automáticamente. - **RECOMENDACIÓN URGENTE:** Eliminar este script inmediatamente ### E3 - 5 Web Shells en el Servidor (Compromiso Previo Confirmado) [CRÍTICA - CVSS 9.0] - **Web shells detectados:** | Archivo | Tipo | Estado | |---------|------|--------| | `c99.php` | C99 Shell | 403 (bloqueado por .htaccess) | | `C99.php` | C99 Shell (mayúsculas) | 403 | | `wso.php` | WSO Shell | 403 | | `WSO.php` | WSO Shell (mayúsculas) | 403 | | `r57.php` | R57 Shell | 403 | - **Variantes probadas:** .php5, .php7, .phtml, .pht, .phps (también bloqueadas) - **Impacto:** El servidor fue hackeado. Aunque los shells están bloqueados por .htaccess, si esta protección se elimina o bypasea, el atacante recupera acceso completo. No se puede confiar en la integridad de ningún archivo del servidor. ### E4 - MariaDB 10.6.24 Expuesta a Internet [CRÍTICA - CVSS 9.0] - **Puerto:** 3306 (abierto al mundo) - **Versión:** MariaDB 5.5.5-10.6.24-cll-lve - **Auth Plugin:** mysql_native_password - **Enumeration result (nmap):** El servidor acepta conexiones y responde con información de versión, capabilities, y thread IDs - **Usuarios probados con password vacío:** root, admin, test, espamex, web, guest — todos rechazados (Access denied) - **CVEs confirmados por nmap (CVSS 10.0):** - SSV:92513, SSV:92510, SSV:92405 - PACKETSTORM:139491, PACKETSTORM:139476, PACKETSTORM:138678 - **Impacto:** Aunque las contraseñas vacías no funcionan, la base de datos está expuesta a brute force sin rate limiting, y las versiones tienen exploits públicos disponibles --- ## HALLAZGOS ALTOS ### E5 - OpenSSH 8.0 con CVE-2023-38408 (RCE, CVSS 9.8) [ALTA] - **Puerto:** 22 - **Versión:** OpenSSH 8.0 - **Auth methods:** publickey, password - **CVEs principales:** - **CVE-2023-38408** (CVSS 9.8) — Remote Code Execution via ssh-agent forwarding. Exploits públicos disponibles. - CVE-2020-15778 (CVSS 7.8) — Command injection via scp - CVE-2019-16905 (CVSS 7.8) — Integer overflow - CVE-2025-26465 (CVSS 6.8) — MitM attack - CVE-2021-41617 (CVSS 7.0) — Privilege escalation - CVE-2023-48795 (CVSS 5.9) — Terrapin attack - **Impacto:** RCE potencial si ssh-agent forwarding está habilitado. Password auth habilitado permite brute force. ### E6 - Pure-FTPd Vulnerable a CVE-2010-1938 (CVSS 9.3) [ALTA] - **Puerto:** 21 - **Banner:** `Welcome to Pure-FTPd [privsep] [TLS]` - **Max users:** 50 (user number 1 de 50) - **Anonymous login:** Deshabilitado - **CVE-2010-1938:** OPIE off-by-one stack overflow — ejecución de código arbitrario via username largo - **Impacto:** Potencial RCE via overflow en el manejo de usernames ### E7 - Archivos Sensibles en Disco (21 archivos confirmados) [ALTA] Todos retornan 403 (bloqueados por .htaccess pero EXISTEN en el servidor): **Archivos de configuración:** | Archivo | Tamaño resp. | Notas | |---------|-------------|-------| | `.env` | 358B | Credenciales de BD, API keys | | `wp-config.php` | 358B | Credenciales WordPress/BD | | `wp-config.php.bak` | 358B | Backup de credenciales | | `wp-config.php.old` | 358B | Versión anterior | | `wp-config.bak` | 358B | Otro backup | | `wp-config.txt` | 358B | Versión texto plano | | `wp-config.php~` | 358B | Editor backup (vim) | | `wp-config.php.swp` | 358B | Swap file (vim) | | `wp-config.php.swo` | 358B | Segundo swap file | | `wp-config.php.save` | 358B | Save file | | `wp-config.php.orig` | 358B | Original | | `wp-config.php.dist` | 358B | Distribution | | `wp-config.inc` | 358B | Include variant | | `wp-config.old` | 358B | Old variant | | `.htaccess` | 358B | Reglas Apache | | `.htpasswd` | 358B | Passwords de htaccess | | `.user.ini` | 358B | Config PHP usuario | | `php.ini` | 358B | Config PHP | | `error_log` | 358B | Logs de errores PHP | | `wp-content/debug.log` | 358B | Debug log de WordPress | **Bypass intentados (todos fallaron):** URL encoding, double encoding, null byte, trailing space/dot/newline, HTTP method switching (POST, PUT), path traversal - **Impacto:** Si .htaccess se corrompe, elimina, o se encuentra un bypass, todas las credenciales quedan expuestas. La cantidad de archivos de backup de wp-config es alarmante (12 variantes). ### E8 - cPanel y Webmail Accesibles en IP Real (Sin Cloudflare) [ALTA] - **cPanel:** `https://148.72.59.107:2083/` — Login completo, 37KB - **Webmail:** `https://148.72.59.107:2096/` — Login completo - **cPanel version:** revision 1740434845 (~Feb 2025) - **Impacto:** Acceso directo a paneles de administración sin protección de Cloudflare. Permite brute force sin rate limiting. ### E9 - Exim 4.99.1 SMTP Expuesto [ALTA] - **Puertos:** 465 (SMTPS), 587 (submission) - **Banner:** `220-p3plzcpnl509338.prod.phx3.secureserver.net ESMTP Exim 4.99.1` - **Hostname revelado:** p3plzcpnl509338.prod.phx3.secureserver.net - **Impacto:** Información del servidor expuesta. Exim tiene historial extenso de CVEs críticos (RCE). --- ## HALLAZGOS MEDIOS ### E10 - 11 Puertos Abiertos en IP Real (Sin Cloudflare) [MEDIA] | Puerto | Servicio | Versión | |--------|----------|---------| | 21 | FTP | Pure-FTPd [privsep] [TLS] | | 22 | SSH | OpenSSH 8.0 | | 80 | HTTP | Apache | | 110 | POP3 | Dovecot pop3d | | 143 | IMAP | Dovecot imapd | | 443 | HTTPS | Apache | | 465 | SMTPS | Exim 4.99.1 | | 587 | SMTP | Exim 4.99.1 | | 993 | IMAPS | Dovecot | | 995 | POP3S | Dovecot | | 3306 | MySQL | MariaDB 10.6.24 | - **Total:** 11 servicios expuestos directamente a internet sin filtrado ### E11 - Sin DMARC ni DKIM [MEDIA - CVSS 5.3] - **SPF:** `v=spf1 include:secureserver.net -all` (correcto) - **DMARC:** NO configurado - **DKIM:** NO configurado - **Impacto:** Email spoofing posible. Sin DMARC, servidores receptores pueden no rechazar correos falsificados ### E12 - Headers de Seguridad Ausentes (7/7) [MEDIA] | Header | Estado | |--------|--------| | Strict-Transport-Security (HSTS) | FALTA | | Content-Security-Policy | FALTA | | X-Frame-Options | FALTA | | X-Content-Type-Options | FALTA | | X-XSS-Protection | FALTA | | Referrer-Policy | FALTA | | Permissions-Policy | FALTA | ### E13 - Servidor Acepta Cualquier Virtual Host [MEDIA] - **Probado:** 12 subdominios falsos (admin, dev, staging, test, beta, portal, api, shop, intranet, etc.) - **Resultado:** TODOS retornan 200 con página "Coming Soon" de GoDaddy (1963B) - **Impacto:** El servidor no valida el Host header. Cualquier subdominio (real o inventado) es aceptado. --- ## HALLAZGOS BAJOS / INFORMATIVOS ### E14 - Emails Corporativos Expuestos [BAJA] - ventas@espamex.com - espamex@espamex.com - sistemas@espamex.com (administrador de datos personales) - formularios@espamex.com - **Protección:** Cloudflare email obfuscation activa (pero bypass posible via IP real) ### E15 - WordPress Residual [INFO] - WordPress fue reemplazado por sitio HTML estático - Todos los archivos WP redirigen a `/404.html` - Pero los archivos de configuración permanecen en disco (ver E7) - **Impacto:** Superficie de ataque residual significativa ### E16 - Información Corporativa Expuesta [INFO] - **Google Analytics:** G-WLFWRLQBHX - **Dirección:** Calle Manuel María Contreras 80, Col. San Rafael, Cuauhtémoc, CP 06470, CDMX - **WhatsApp:** +52 55 8132 6795 - **Google Site Verification:** aH2k-p3yHTHC_sa2ThYHH97YlqaBrsmF9ffnaiBVo2g - **DNS TXT tokens:** `9fvf05nla5safqs9s02f5o7nsk`, `D4540565`, `aanpeuj0kl54ta013ah88jlg1m` --- ## Cadena de Ataque Completa ``` 1. Descubrir IP real via tracking scripts (E1) ↓ 2. Acceder directamente a 148.72.59.107 (bypass Cloudflare total) ↓ 3. Enumerar 11 servicios abiertos (E10) ↓ 4. Intentar explotar OpenSSH 8.0 CVE-2023-38408 (E5) → RCE potencial ↓ ó 5. Brute force FTP/SSH sin rate limiting (E3/E6) ↓ ó 6. Explotar Pure-FTPd CVE-2010-1938 (E6) → RCE potencial ↓ ó 7. Atacar MariaDB 10.6.24 directamente (E4) → CVEs CVSS 10.0 ↓ 8. Si alguno tiene éxito → acceso al servidor ↓ 9. Leer .env y wp-config.php → credenciales de BD ↓ 10. Acceso total a datos de clientes y formularios ``` **Ruta alternativa confirmada:** ``` 1. Script malicioso nasa4u.com ya intercepta datos de clientes (E2) 2. Web shells ya existen en el servidor (E3) → El servidor YA fue comprometido. Solo falta reactivar los shells. ``` --- ## Limitaciones de la Explotación - `.htaccess` bloqueó todos los intentos de acceso a archivos sensibles - MySQL rechazó contraseñas vacías y comunes - FTP no permite acceso anónimo - Web shells bloqueados por .htaccess (no ejecutables actualmente) - No se probó brute force agresivo (limitación ética del pentest) - No se intentó explotar CVEs de OpenSSH/Pure-FTPd (requiere tooling especializado) --- ## Recomendaciones (Prioridad) ### INMEDIATAS (hacer HOY) 1. **ELIMINAR** el script `nasa4u.com/notform/form2.js` del HTML — datos de clientes en riesgo 2. **ELIMINAR** los 5 web shells (c99.php, wso.php, r57.php y variantes) 3. **ELIMINAR** todos los archivos de wp-config y .env del webroot (12+ variantes) 4. **CONFIGURAR** Cloudflare para bloquear acceso directo a la IP real (reglas de firewall en el servidor: aceptar solo tráfico de IPs de Cloudflare) ### URGENTES (esta semana) 5. **CERRAR** puerto 3306 (MySQL) al público — solo acceso local 6. **CERRAR** puertos 21 (FTP) y 22 (SSH) al público o restringir por IP 7. **ACTUALIZAR** OpenSSH de 8.0 a versión actual (9.x) 8. **RESTRINGIR** cPanel/Webmail por IP 9. **CONFIGURAR** DMARC (`p=reject`) y DKIM ### IMPORTANTES (este mes) 10. **INVESTIGAR** el alcance del compromiso — revisar logs, verificar integridad de archivos 11. **AUDITAR** todas las cuentas de email (posible acceso no autorizado) 12. **NOTIFICAR** a clientes que enviaron cotizaciones (posible fuga de datos personales - implicaciones LFPDPPP) 13. Agregar todos los headers de seguridad HTTP 14. Considerar **reconstrucción del servidor** dada la evidencia de compromiso previo --- ## Evidencia Técnica ### IP de origen del pentester - IPv4: 201.142.168.178 - IPv6: 2806:290:8829:1ca4:57:2cff:fe98:3e34 ### Herramientas utilizadas - curl, nmap (con scripts vuln, banner, mysql-*, ftp-*, ssh-*, smtp-*) - MariaDB client - dig, whois, openssl ### E17 - Cloudflare WAF Bloquea wp-config.php* pero Confirma su Existencia [INFO] - Respuestas de Cloudflare WAF (4569 bytes = "Sorry, you have been blocked") para: - `wp-config.php.bak`, `wp-config.php~`, `wp-config.php.1`, `wp-config.php.save`, `wp-config.php.orig`, `wp-config.php.swp`, `wp-config.php_bak`, `wp-config.phps`, `wp-config.php.txt`, `wp-config.php.html` - Respuestas de Apache 403 (358 bytes) para variantes sin `.php`: `wp-config.bak`, `wp-config.old`, etc. - **Implicación:** Cloudflare WAF detecta y bloquea patrones con `wp-config.php` específicamente. Apache bloquea el resto. Doble confirmación de que estos archivos existen en disco. ### E18 - Formulario de Cotización No Funciona Sin Script Malicioso [MEDIA] - **Código fuente del formulario:** ```javascript // Envío (simulado aquí, puedes dejar que form2.js maneje el envío real) formulario.style.display = 'none'; mensajeExito.style.display = 'block'; ``` - El formulario solo muestra un mensaje de éxito visual pero **NO envía datos a ningún servidor** - Todo el envío real dependía de `form2.js` (el script malicioso de `nasa4u.com`) - **Impacto:** Actualmente los clientes creen enviar cotizaciones pero los datos se pierden. Si el script estaba activo, los datos se enviaban al atacante, no a Espamex. ### E19 - Subdominios Adicionales Descubiertos [BAJA] | Subdominio | Respuesta | Notas | |------------|-----------|-------| | files.espamex.com | Error 1016 (Cloudflare) | DNS apunta a Cloudflare pero sin origen configurado | | pop.espamex.com | Error 522 (Cloudflare) | Servicio POP no responde vía Cloudflare | | autodiscover.espamex.com | 172.67.152.126 | Exchange autodiscover | ### E20 - 14 CVEs Confirmados por Shodan [ALTA] **Fuente:** Shodan InternetDB (148.72.59.107) | CVE | Servicio | CVSS | Descripción | |-----|----------|------|-------------| | CVE-2023-38408 | OpenSSH 8.0 | 9.8 | RCE via ssh-agent forwarding | | CVE-2025-26465 | OpenSSH 8.0 | 6.8 | MitM attack (CVE reciente 2025) | | CVE-2025-32728 | OpenSSH 8.0 | - | CVE reciente 2025 | | CVE-2023-51385 | OpenSSH 8.0 | 6.5 | OS command injection via ProxyCommand | | CVE-2023-51767 | OpenSSH 8.0 | 7.0 | Authentication bypass via row hammer | | CVE-2023-48795 | OpenSSH 8.0 | 5.9 | Terrapin prefix truncation | | CVE-2021-41617 | OpenSSH 8.0 | 7.0 | Privilege escalation | | CVE-2021-36368 | OpenSSH 8.0 | 3.7 | Authentication bypass | | CVE-2020-15778 | OpenSSH 8.0 | 7.8 | Command injection via scp | | CVE-2020-14145 | OpenSSH 8.0 | 5.9 | MitM during initial key exchange | | CVE-2019-16905 | OpenSSH 8.0 | 7.8 | Integer overflow | | CVE-2016-20012 | OpenSSH 8.0 | 5.3 | User enumeration | | CVE-2008-3844 | OpenSSH 8.0 | 9.3 | Backdoored versions | | CVE-2007-2768 | OpenSSH 8.0 | 4.3 | Information disclosure | ### E21 - Historial del Sitio (Wayback Machine) [INFO] - **Primera captura:** 2002-05-24 (sitio online hace 24 años) - **Tecnología histórica:** SSI (.shtml), Flash (.swf), JavaScript ActiveContent - **Handler de formulario antiguo:** `envia_form_php.php` (ya no existe) - **Directory listing histórico:** Wayback muestra parámetros ?D=A, ?N=A (sort por fecha/nombre) - indicativo de directory listing habilitado en el pasado - **Páginas antiguas eliminadas:** contacto.html, acerca.html, banco.html, gruas-torre.html, etc. - **Páginas CSS antiguas:** 6+ archivos CSS de versiones previas del sitio (eliminadas) --- ## Resumen de Severidades (ACTUALIZADO) | Severidad | Cantidad | IDs | |-----------|----------|-----| | **CRÍTICA** | 4 | E1, E2, E3, E4 | | **ALTA** | 6 | E5, E6, E7, E8, E9, E20 | | **MEDIA** | 5 | E10, E11, E12, E13, E18 | | **BAJA/INFO** | 6 | E14, E15, E16, E17, E19, E21 | | **TOTAL** | **21** | | --- ### Fechas de ejecución - Reconocimiento inicial: 2026-03-25 07:51 UTC - Análisis profundo: 2026-03-25 09:55 UTC - Explotación completa: 2026-03-25 10:12-10:35 UTC