Files
pentesting/groke/explotacion.md

115 lines
5.4 KiB
Markdown

# Análisis Profundo y Explotación - Groke S.A. de C.V.
**Objetivo:** https://groke.mx / 64.91.245.110
**Fecha:** 2026-03-25
**Analista:** Lucy (Consultoría AS)
**Autorizado por:** Propietario
## Resumen Ejecutivo
Groke opera DOS sistemas: un sitio Next.js moderno en Vercel (groke.mx público) y una aplicación Laravel legacy en servidor compartido cPanel (64.91.245.110). El servidor legacy tiene múltiples vulnerabilidades: directory listing masivo, assets servidos en HTTP plano, 17 puertos abiertos, software desactualizado, y la estructura completa de la aplicación Laravel expuesta.
## Hallazgos de Explotación
### E1 - Directory Listing Habilitado en Múltiples Directorios [ALTA]
- **Severidad:** ALTA (CVSS 6.5)
- **Directorios con listing:**
- `/public/img/` — imágenes del sitio con fechas (2016-2020)
- `/public/img/cranes/` — subdirectorios por modelo de grúa (lc500, lc1100, lc1600, lc2100, lc3000, lcl)
- `/css/` — hojas de estilo
- `/js/` — JavaScript files
- `/build/` — archivos compilados
- `/build/css/` — CSS compilados
- `/build/js/` — JS compilados
- **Impacto:** Exposición completa de la estructura del proyecto, archivos y fechas de modificación. Facilita reconocimiento avanzado.
### E2 - Aplicación Laravel Legacy Expuesta Sin Protección [ALTA]
- **Severidad:** ALTA (CVSS 7.5)
- **URL:** `http://64.91.245.110/public/`
- **Evidencia:** HTML completo con créditos del desarrollador (JoshZ / dinkbit)
- **Framework:** Laravel con Bootstrap 3.3.6 (obsoleto)
- **Rutas activas:** `/productos`, `/contacto`, `/nosotros`, `/blog` (redirect a Vercel)
- **Impacto:** Toda la app legacy es accesible directamente sin que el dominio apunte ahí
### E3 - Mixed Content Masivo (HTTP en vez de HTTPS) [ALTA]
- **Severidad:** ALTA (CVSS 7.4)
- **Evidencia:** 66 referencias HTTP vs 11 HTTPS en la página de productos
- **Assets afectados:** jQuery, Modernizr, imágenes, CSS compilados
- **Impacto:** Todos los assets se cargan sin cifrar. Un atacante en la misma red (MitM) puede inyectar JavaScript malicioso vía los assets HTTP
### E4 - OpenSSH 7.4 con CVEs Conocidos [ALTA]
- **Severidad:** ALTA (CVSS 8.1)
- **Versión:** OpenSSH 7.4 (diciembre 2016, ~10 años sin actualizar)
- **CVEs relevantes:**
- CVE-2023-38408 (PKCS#11 RCE potencial)
- CVE-2021-41617 (escalación de privilegios)
- CVE-2020-15778 (inyección via scp)
### E5 - MySQL 3306 Expuesto a Internet [ALTA]
- **Severidad:** ALTA (CVSS 7.0)
- **Puerto:** 3306 abierto
- **Mitigación parcial:** Filtrado por IP ("Host not allowed")
- **Impacto:** Si una IP permitida es comprometida o la config cambia, acceso directo a la BD
### E6 - 17 Puertos Abiertos en Servidor Compartido [MEDIA]
- **Severidad:** MEDIA (CVSS 5.3)
- **Puertos:** 21 (FTP), 22 (SSH), 25 (SMTP), 80, 110 (POP3), 143 (IMAP), 443, 465, 587, 993, 995, 2082, 2083, 2086, 2087, 2095, 2096, 3306
- **Impacto:** Superficie de ataque excesiva para un sitio web
### E7 - cPanel/WHM/Webmail Accesibles Públicamente [MEDIA]
- **Severidad:** MEDIA (CVSS 5.3)
- **URLs:** Puertos 2082-2096
- **cPanel Login:** Accesible con página de login completa
- **Webmail (Roundcube):** Login accesible en puerto 2096
### E8 - CORS Wildcard [MEDIA]
- **Severidad:** MEDIA (CVSS 5.3)
- **Header:** `access-control-allow-origin: *` en sitio Vercel
- **Impacto:** Cualquier dominio puede hacer requests cross-origin
### E9 - DMARC Sin Enforcement [MEDIA]
- **Severidad:** MEDIA (CVSS 5.3)
- **Config:** `p=none` (solo reporta, no bloquea)
- **SPF:** softfail (`~all`)
- **Impacto:** Email spoofing desde @groke.mx posible
### E10 - POP3/IMAP Sin Cifrar [MEDIA]
- **Severidad:** MEDIA (CVSS 4.3)
- **Puertos 110 y 143 abiertos** sin TLS obligatorio
- **Impacto:** Credenciales de correo pueden interceptarse en texto plano
### E11 - Bootstrap 3.3.6 y jQuery Obsoletos [BAJA]
- **Severidad:** BAJA (CVSS 3.1)
- **Bootstrap:** 3.3.6 (2016, tiene XSS conocidos en tooltip/popover)
- **jQuery:** versión no determinada pero cargada via HTTP
### E12 - Google Ads/GTM Tracking IDs Expuestos [INFO]
- **GTM:** GTM-5K78F7M
- **Google Ads Conversion:** 960073428
- **Impacto:** Permite análisis competitivo y tracking del rendimiento publicitario
### E13 - Catch-All Virtual Host [INFO]
- **Evidencia:** Cualquier Host header (admin.groke.mx, erp.groke.mx, etc.) retorna 200 del vhost default de cPanel
- **Impacto:** No discrimina por dominio, todo va al mismo servidor
### E14 - Emails Corporativos Expuestos [INFO]
- **Emails encontrados:** ventas@groke.mx
- **Teléfono:** (55) 3618 1111
- **Impacto:** Vectores para spearphishing
## Limitaciones
- SMTP puerto 25 no respondió (posiblemente filtrado o down)
- Laravel debug mode muestra páginas Symfony genéricas sin stack traces detallados
- No se encontraron rutas de autenticación (login/register) en la app legacy
- CSRF tokens rotan correctamente por sesión
- reCAPTCHA cargado en formularios de contacto
- No se encontró debugbar, telescope, horizon ni nova
## Recomendaciones
1. **URGENTE:** Deshabilitar directory listing en Apache (`Options -Indexes`)
2. **URGENTE:** Actualizar OpenSSH a versión actual (9.x)
3. **ALTA:** Cerrar puertos innecesarios (FTP, POP3, IMAP sin cifrar, MySQL, WHM)
4. **ALTA:** Forzar HTTPS en todos los assets (eliminar mixed content)
5. **ALTA:** Actualizar Laravel, Bootstrap y jQuery
6. **MEDIA:** Configurar DMARC con `p=quarantine` o `p=reject`
7. **MEDIA:** Restringir acceso a cPanel/WHM por IP
8. **BAJA:** Migrar o eliminar la app legacy si ya no se usa activamente