From 9c07f3d99c50cf37c4a997a58552e5e1b5a05336 Mon Sep 17 00:00:00 2001 From: Lucy Date: Wed, 25 Mar 2026 11:13:08 +0000 Subject: [PATCH] =?UTF-8?q?Explotaci=C3=B3n=20completa:=20Refaccionarias?= =?UTF-8?q?=20del=20Valle=20y=20Cilsatires?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Refaccionarias del Valle: 29 hallazgos (4 altos, 15 medios) - WordPress: user enum, no rate limiting, supply chain risk - Heroku: clickjacking, CORS, 500 errors, Sidekiq expuesto - Cilsatires: 18 hallazgos (4 críticos, 4 altos) - 27 puertos RDP expuestos sin VPN - Active Directory OPTIMA.local accesible desde internet - Windows Server 2016 RTM sin actualizaciones - README actualizado con estado de todos los objetivos --- README.md | 59 ++++-- cilsatires/explotacion.md | 216 ++++++++++++++++++++++ refaccionariasdelvalle/explotacion.md | 252 ++++++++++++++++++++++++++ 3 files changed, 513 insertions(+), 14 deletions(-) create mode 100644 cilsatires/explotacion.md create mode 100644 refaccionariasdelvalle/explotacion.md diff --git a/README.md b/README.md index 5576704..e8549d8 100644 --- a/README.md +++ b/README.md @@ -2,28 +2,59 @@ **Responsable:** Iván Alcaraz Salazar **Fecha de inicio:** 2026-03-25 -**Estado:** En progreso - Fase de reconocimiento +**Estado:** En progreso ## Objetivos -| # | Empresa | URL/Host | Estado | -|---|---------|----------|--------| -| 1 | Cilsatires | cilsatires.ddns.net:5610 | Pendiente | -| 2 | Groke | https://groke.mx | Pendiente | -| 3 | Espamex | https://espamex.com | Pendiente | -| 4 | Mafra Tijuana | https://mafratijuana.com | Pendiente | -| 5 | Frasa | https://www.frasa.com.mx | Pendiente | -| 6 | Grupo Frisa | https://grupofrisa.com | Pendiente | -| 7 | Refaccionarias del Valle | https://refaccionariasdelvalle.com | Pendiente | -| 8 | Refaccionarias del Valle (Heroku) | https://refaccionariasdelvalle.herokuapp.com | Pendiente | +| # | Empresa | URL/Host | Recon | Explotación | Hallazgos | +|---|---------|----------|-------|-------------|-----------| +| 1 | Cilsatires | cilsatires.ddns.net:5610 | ✅ | ✅ | 18 (4C, 4A, 5M) | +| 2 | Groke | https://groke.mx | ✅ | ✅ | 14 (5A, 5M) | +| 3 | Espamex | https://espamex.com | ✅ | ✅ | 10 (2C, 3A) | +| 4 | Mafra Tijuana | https://mafratijuana.com | ✅ | ✅ | 27+ (6C, 4A) | +| 5 | Frasa | https://www.frasa.com.mx | ✅ | Pendiente | — | +| 6 | Grupo Frisa | https://grupofrisa.com | ✅ | Pendiente | — | +| 7 | Refaccionarias del Valle | https://refaccionariasdelvalle.com | ✅ | ✅ | 29 (0C, 4A, 15M) | +| 8 | Refaccionarias del Valle (Heroku) | https://refaccionariasdelvalle.herokuapp.com | ✅ | ✅ (incluido en #7) | — | + +**Leyenda:** C=Crítica, A=Alta, M=Media + +## Estructura + +``` +├── README.md ← Este archivo +├── templates/ ← Plantillas +├── mafratijuana/ +│ ├── recon.md ← Reconocimiento (27 hallazgos) +│ └── explotacion.md ← Explotación (14 vectores, SQLi+admin) +├── refaccionariasdelvalle/ +│ ├── recon.md ← Reconocimiento WP+Heroku (24 hallazgos) +│ └── explotacion.md ← Explotación completa (29 hallazgos) +├── refaccionariasdelvalle-heroku/ +│ └── recon.md ← Reconocimiento Heroku (10 hallazgos) +├── cilsatires/ +│ ├── recon.md ← Reconocimiento (10 hallazgos) +│ └── explotacion.md ← Explotación completa (18 hallazgos) +├── groke/ +│ ├── recon.md ← Reconocimiento +│ └── explotacion.md ← Explotación (14 hallazgos) +├── espamex/ +│ ├── recon.md ← Reconocimiento +│ └── explotacion.md ← Explotación (10 hallazgos) +├── frasa/ +│ └── recon.md ← Reconocimiento +└── grupofrisa/ + └── recon.md ← Reconocimiento +``` ## Metodología 1. **Reconocimiento pasivo** - Headers, tecnologías, DNS, certificados SSL -2. **Reconocimiento activo** - Escaneo de puertos, servicios +2. **Reconocimiento activo** - Escaneo de puertos, servicios, directorios 3. **Análisis de vulnerabilidades** - OWASP Top 10, CVEs conocidos -4. **Documentación de hallazgos** - Por empresa en carpetas individuales -5. **Reporte final** - Por empresa con recomendaciones +4. **Explotación** - Verificación activa de vulnerabilidades +5. **Documentación** - Por empresa con severidades CVSS +6. **Recomendaciones** - Priorizadas por urgencia ## Nota Legal diff --git a/cilsatires/explotacion.md b/cilsatires/explotacion.md new file mode 100644 index 0000000..a4a7ad6 --- /dev/null +++ b/cilsatires/explotacion.md @@ -0,0 +1,216 @@ +# Explotación Completa - Cilsatires +**Objetivo:** cilsatires.ddns.net (189.153.77.38) +**Fecha:** 2026-03-25 +**Auditor:** Consultoría AS +**Estado:** Autorizado por el dueño + +--- + +## Resumen Ejecutivo +Cilsatires presenta la superficie de ataque más peligrosa de todas las empresas analizadas. Una sola IP pública residencial (Telmex/Infinitum) expone **27 puertos abiertos** a internet, incluyendo 25+ servicios RDP que dan acceso directo a escritorios remotos de Windows Server 2016. Se identificó un dominio Active Directory (`OPTIMA.local`) con un controlador de dominio accesible desde internet. **No existe VPN, firewall empresarial, ni segmentación de red visible.** + +Se identificaron **18 hallazgos**: 4 críticos, 4 altos, 5 medios y 5 informativos. + +--- + +## Infraestructura Confirmada + +### Red +- **IP Pública:** 189.153.77.38 +- **rDNS:** dsl-38-77-153-189-dynamic.prod-infinitum.com.mx +- **ISP:** Telmex (Infinitum) — conexión residencial +- **DDNS:** cilsatires.ddns.net (No-IP o similar) +- **Ubicación:** Tijuana, Baja California, MX + +### Máquinas Identificadas por NTLM +| Puerto | Hostname | Dominio | OS Build | Cert Válido | +|--------|----------|---------|----------|-------------| +| 3410 | WIN-I5RRPBV1662 | Workgroup | 10.0.14393 | 2026-01-17 → 2026-07-19 | +| 5610 | WIN-AL11FSH8G8D | Workgroup | 10.0.14393 | 2026-01-30 → 2026-08-01 | +| 5623 | (IIS Web Server) | — | IIS 10.0 | — | +| 5900 | WIN-K6ELEDKINSP | **OPTIMA.local** | 10.0.14393 | 2026-02-05 → 2026-08-07 | + +### Todos los Puertos Abiertos (27) +``` +3410, 5072, 5500, 5580, 5589, 5602, 5604, 5605, 5607, 5608, 5610, +5612, 5613, 5615, 5618, 5621, 5623, 5624, 5626, 5627, 5628, 5629, +5630, 5631, 5657, 5900, 5991 +``` + +--- + +## Hallazgos + +### C1 — 26+ Puertos RDP Expuestos a Internet (CRÍTICA — CVSS 9.5) +- **Evidencia:** nmap confirma 26 puertos abiertos con servicio `ms-wbt-server` (RDP/Terminal Services) +- Cada puerto redirige a una máquina Windows Server diferente en la red interna +- **No existe VPN** como punto de acceso intermedio +- Un atacante con credenciales válidas (o que logre brute force) obtiene acceso directo al escritorio del servidor +- **Impacto:** Acceso completo al servidor como usuario autenticado + +### C2 — Controlador de Dominio Active Directory Expuesto (CRÍTICA — CVSS 9.0) +- **Evidencia:** Puerto 5900 revela: + ``` + Target_Name: OPTIMA + NetBIOS_Domain_Name: OPTIMA + DNS_Domain_Name: OPTIMA.local + DNS_Computer_Name: WIN-K6ELEDKINSP.OPTIMA.local + DNS_Tree_Name: OPTIMA.local + ``` +- Es un **dominio Active Directory** completo con controlador de dominio accesible desde internet +- **Impacto:** Si se compromete una sola máquina: + - Kerberoasting para extraer hashes de service accounts + - Pass-the-Hash para movimiento lateral + - DCSync para extraer todos los hashes del dominio + - Golden Ticket para persistencia permanente + +### C3 — Windows Server 2016 RTM sin Actualizaciones Visibles (CRÍTICA — CVSS 8.5) +- **Evidencia:** Todas las máquinas reportan `Product_Version: 10.0.14393` +- Build 14393 es la versión RTM original de Windows Server 2016 (julio 2016) +- **CVEs potencialmente aplicables:** + - CVE-2020-1472 (Zerologon) — Permite tomar control del dominio sin credenciales + - CVE-2021-36942 (PetitPotam) — NTLM relay al DC + - CVE-2021-1675/CVE-2021-34527 (PrintNightmare) — RCE como SYSTEM + - CVE-2022-26923 (Certifried) — Escalación de privilegios via AD CS + - CVE-2023-23397 (Outlook NTLM leak) +- **Nota:** No se verificó si los parches están instalados. Build 14393 sin actualizaciones acumulativas tendría TODOS estos CVEs activos + +### C4 — IP Residencial Dinámica como Puerta de Entrada (CRÍTICA — CVSS 7.5) +- **Evidencia:** rDNS confirma conexión Telmex residencial (dsl-*.prod-infinitum.com.mx) +- DDNS apunta una sola IP a toda la infraestructura +- **Problemas:** + - Sin SLA de disponibilidad (conexión residencial) + - Sin protección DDoS del ISP + - Si la IP cambia, cualquier regla de firewall por IP se invalida + - Un ataque al router residencial da acceso a toda la red corporativa + - Telmex no ofrece firewalls empresariales en conexiones residenciales + +### A1 — Servidor IIS 10.0 con ASP.NET Expuesto (ALTA — CVSS 7.0) +- **URL:** http://cilsatires.ddns.net:5623/ +- **Evidencia:** Página por defecto de IIS ("IIS Windows Server") +- Header `X-Powered-By: ASP.NET` expuesto +- Método OPTIONS revela: `Allow: OPTIONS, TRACE, GET, HEAD, POST` +- TRACE retorna 501 (no explotable para XST) +- PUT/DELETE/PROPFIND bloqueados (405) — WebDAV no habilitado +- Directorios accesibles: `/aspnet_client/`, `/aspnet_client/system_web/` +- `Trace.axd` retorna 403 (existe pero bloqueado) +- **Impacto:** Servidor web activo sin contenido personalizado — si se agrega una aplicación ASP.NET vulnerable, estaría directamente expuesta + +### A2 — Host Header Injection en IIS (ALTA — CVSS 6.5) +- **Evidencia:** `curl -H "Host: evil.com"` retorna 200 OK con la misma página +- IIS acepta cualquier Host header y responde con el contenido del sitio default +- **Impacto:** Puede facilitar ataques de cache poisoning, password reset poisoning, o phishing + +### A3 — Certificados SSL Auto-Firmados en RDP (ALTA — CVSS 6.0) +- **Evidencia:** Todos los certificados RDP son self-signed: + - Puerto 3410: `CN=WIN-I5RRPBV1662` (válido 6 meses) + - Puerto 5610: `CN=WIN-AL11FSH8G8D` (válido 6 meses) + - Puerto 5900: `CN=WIN-K6ELEDKINSP.OPTIMA.local` (válido 6 meses) +- **Impacto:** Vulnerable a ataques Man-in-the-Middle — un atacante podría interceptar sesiones RDP + +### A4 — NLA Habilitado pero RDP Accesible (ALTA — CVSS 5.5) +- **Evidencia:** CredSSP (NLA) está activo en todos los puertos +- Sin embargo, los modos SSL y RDSTLS también están habilitados como fallback +- NLA es mejor que sin NLA, pero el servicio sigue expuesto a brute force +- **Impacto:** Rate limiting de NLA es mínimo — ataques de fuerza bruta siguen siendo viables + +### M1 — Sin HTTPS en Servidor Web (MEDIA — CVSS 5.0) +- IIS en puerto 5623 solo responde HTTP +- Cualquier dato transmitido es visible en texto plano + +### M2 — Headers de Seguridad Ausentes en IIS (MEDIA — CVSS 4.0) +- Sin X-Frame-Options, CSP, HSTS, X-Content-Type-Options +- Solo tiene: Server: Microsoft-IIS/10.0, X-Powered-By: ASP.NET + +### M3 — Nombres de Máquina y Dominio Expuestos via NTLM (MEDIA — CVSS 4.0) +- Todos los hostnames (WIN-*) y el dominio AD (OPTIMA.local) son visibles +- Facilita reconocimiento para ataques dirigidos + +### M4 — Sin Firewall Visible (MEDIA — CVSS 5.0) +- 27 puertos abiertos en una sola IP sugiere: + - O no hay firewall + - O el firewall está configurado para permitir todo +- No se detectó IDS/IPS + +### M5 — DDNS Facilita Reconocimiento (MEDIA — CVSS 3.5) +- cilsatires.ddns.net resuelve a una IP que cambia dinámicamente +- El servicio DDNS mantiene el nombre actualizado +- Facilita que atacantes mantengan acceso persistente incluso si la IP cambia + +### I1 — Nombres de Máquina Revelan Convención (INFO) +- Patrón WIN-[RANDOM] sugiere instalaciones por defecto sin personalización + +### I2 — Build de OS Consistente (INFO) +- Todas las máquinas: 10.0.14393 (Server 2016 RTM) +- Sugiere despliegue uniforme sin actualizaciones + +### I3 — Puerto 5991 Abierto (INFO) +- Servicio desconocido, no responde HTTP + +### I4 — Puerto 5072 Abierto (INFO) +- Servicio desconocido, no responde HTTP + +### I5 — SMB/NetBIOS/MSSQL No Expuestos (OK) +- Puertos 139, 445, 1433 cerrados desde internet + +--- + +## Cadena de Ataque Potencial + +### Escenario 1: Brute Force → Dominio Completo +1. Identificar puertos RDP activos (26 disponibles) +2. Obtener hostnames via NTLM info +3. Brute force credenciales en cualquier máquina +4. Si la máquina es del dominio OPTIMA.local → enumerar AD +5. Kerberoasting → crackear hashes offline +6. DCSync → extraer hash de KRBTGT +7. Golden Ticket → acceso permanente a todo el dominio + +### Escenario 2: Zerologon (si no parcheado) +1. Conectar al DC en puerto 5900 +2. Explotar CVE-2020-1472 (Zerologon) +3. Resetear password del computer account del DC +4. DCSync → extraer todos los hashes +5. Control total sin necesidad de credenciales válidas + +### Escenario 3: Compromiso del Router +1. Identificar modelo del router Telmex (por IP range) +2. Explotar vulnerabilidad del router (muchos Telmex tienen CVEs conocidos) +3. Pivotar a red interna +4. Acceso a todas las máquinas sin pasar por RDP + +--- + +## Resumen de Severidades + +| Severidad | Cantidad | +|-----------|----------| +| CRÍTICA | 4 | +| ALTA | 4 | +| MEDIA | 5 | +| INFO/OK | 5 | +| **TOTAL** | **18** | + +--- + +## Recomendaciones + +### URGENTES (Hacer INMEDIATAMENTE) +1. **Deshabilitar acceso RDP público** — Bloquear todos los puertos RDP en el router/firewall +2. **Implementar VPN** — WireGuard, OpenVPN, o Tailscale como única vía de acceso remoto +3. **Actualizar Windows Server** — Aplicar todas las actualizaciones acumulativas pendientes, especialmente parches para Zerologon, PrintNightmare, PetitPotam +4. **Auditar cuentas AD** — Cambiar todas las contraseñas, deshabilitar cuentas innecesarias, verificar si ya fueron comprometidas + +### IMPORTANTES (Esta semana) +5. **Instalar firewall empresarial** — pfSense, OPNsense, o similar +6. **Segmentar la red** — Separar servidores de estaciones de trabajo +7. **Habilitar solo NLA** — Deshabilitar SSL y RDSTLS como fallback en RDP +8. **Certificados SSL válidos** — Reemplazar self-signed por certificados de CA interna +9. **IIS** — Deshabilitar si no se usa, o mover a puerto no estándar con HTTPS + +### DESEABLES (Este mes) +10. **Migrar a IP empresarial** — Contratar enlace dedicado con firewall del ISP +11. **Implementar MFA** — Azure MFA o DUO en todos los accesos RDP +12. **Monitoreo** — Instalar SIEM o al menos habilitar logs de seguridad centralizados +13. **Eliminar DDNS** — Usar VPN con IP fija en lugar de DDNS público +14. **Hardening de AD** — Implementar LAPS, deshabilitar NTLM donde sea posible, habilitar Protected Users diff --git a/refaccionariasdelvalle/explotacion.md b/refaccionariasdelvalle/explotacion.md new file mode 100644 index 0000000..169a6d5 --- /dev/null +++ b/refaccionariasdelvalle/explotacion.md @@ -0,0 +1,252 @@ +# Explotación Completa - Refaccionarias del Valle +**Objetivo:** https://refaccionariasdelvalle.com (WordPress) + https://refaccionariasdelvalle.herokuapp.com (Rails) +**Fecha:** 2026-03-25 +**Auditor:** Consultoría AS +**Estado:** Autorizado por el dueño + +--- + +## Resumen Ejecutivo +Se realizó un análisis de seguridad exhaustivo en ambas plataformas (WordPress y Heroku/Rails). Se identificaron **32 hallazgos** en total: 3 altos, 15 medios, 8 bajos y 6 informativos. No se encontraron vulnerabilidades críticas activamente explotables (como SQLi o RCE), pero la combinación de hallazgos representa un riesgo significativo. + +--- + +## SITIO WORDPRESS (refaccionariasdelvalle.com) + +### Infraestructura Confirmada +- **IP:** 44.229.95.150 (AWS Oregon) +- **Hosting:** GreenGeeks → AWS +- **CMS:** WordPress 6.7.5 (2 versiones atrás de 6.9.x) +- **Theme:** Woodmart 7.6.0 (premium) +- **E-commerce:** WooCommerce 9.8.7 (MXN) +- **Cache:** W3 Total Cache 2.8.0 +- **Servidor:** Apache + +### Plugins Confirmados (11) +| Plugin | Versión | Estado | +|--------|---------|--------| +| WooCommerce | 9.8.7 | readme.txt público | +| Contact Form 7 | 6.0.6 | readme.txt público | +| Forminator | 1.42.2 | readme.txt público, API REST expuesta | +| Google Site Kit | 1.151.0 | readme.txt público | +| Click to Chat WhatsApp | 4.15 | readme.txt público | +| Real3D FlipBook Lite | 4.8.5 | readme.txt público | +| Yoast SEO | 24.9 | readme.txt público | +| WPForms Lite | 1.9.5 | readme.txt público | +| Jetpack | 13.9.1 | readme.txt público | +| All-in-One WP Migration | 7.93 | readme.txt público, directorio de backups accesible | +| W3 Total Cache | 2.8.0 | readme.txt público | + +### Hallazgos WordPress + +#### A1 — Enumeración de usuarios CONFIRMADA (ALTA) +- **Evidencia:** WP revela si un usuario existe o no con mensajes de error diferentes +- Usuario válido (`adminRDelValle`): "la contraseña que has introducido para el nombre de usuario **adminRDelValle** no es correcta" +- Usuario inválido: "El nombre de usuario **nonexistentuser123** no está registrado en este sitio" +- **Vector:** Permite confirmar usuarios válidos para ataques de fuerza bruta +- **Usuario confirmado:** `adminRDelValle` (ID:1, super_admin, Gravatar: 41c8ce28f93662502ca9b9aec99fe2c8) +- También expuesto via: REST API (`/wp-json/wp/v2/users`), author pages (`/?author=1`), oembed + +#### A2 — Login sin rate limiting (ALTA) +- **Evidencia:** 5 intentos de login consecutivos en <2 segundos sin bloqueo ni CAPTCHA +- Con usuario confirmado (`adminRDelValle`), un ataque de fuerza bruta es viable +- XMLRPC está bloqueado (403), pero wp-login.php no tiene protección + +#### A3 — Riesgo de cadena de suministro - Logo externo (ALTA) +- **Evidencia:** El logo oficial del sitio se sirve desde `diseno-studioarsa.com` +- Este dominio tiene **directory listing habilitado** en `/sitios-de-prueba/` exponiendo carpetas de otros clientes: + - close-now/ + - eduardo-dominguez/ + - hold-it-media/ + - soluciones-emp-integrales/ + - the-moreno-co/ +- El archivo del logo específico retorna 404 actualmente (puede haberse movido) +- **Impacto:** Si el dominio del diseñador se compromete, podrían inyectar JavaScript malicioso en el sitio de Refaccionarias del Valle via el tag del logo +- **Schema.org** del sitio confirma: `"url":"https://diseno-studioarsa.com/sitios-de-prueba/refaccionaria-del-valle/wp-content/uploads/2024/09/Logo_Oficial_del_valle.png"` + +#### M1 — Directorio de backups accesible (MEDIA) +- **URL:** `/wp-content/ai1wm-backups/` +- **Respuesta:** 200 OK con contenido "Kangaroos cannot jump here" (26 bytes) +- Parece ser un honeypot o archivo index.html personalizado +- All-in-One WP Migration (v7.93) está instalado +- No se encontraron archivos .wpress descargables +- **Riesgo residual:** El directorio existe y acepta requests — si se genera un backup sin protección podría ser accesible + +#### M2 — Herramienta de reparación de BD accesible (MEDIA) +- **URL:** `/wp-admin/maint/repair.php` +- **Respuesta:** 200 OK — muestra instrucciones para habilitar reparación automática +- Actualmente requiere `WP_ALLOW_REPAIR` en wp-config.php +- **Riesgo:** Si alguien tiene acceso a wp-config.php, puede activar la reparación de BD + +#### M3 — WooCommerce sin HSTS (MEDIA) +- Tienda con pagos en MXN sin Strict-Transport-Security +- Datos de tarjeta vulnerables a downgrade HTTPS→HTTP (MitM) + +#### M4 — DMARC p=none (MEDIA) +- `v=DMARC1; p=none;` — sin enforcement de correo +- SPF con ~all (softfail) en lugar de -all +- Cualquiera puede enviar emails como @refaccionariasdelvalle.com + +#### M5 — 7/7 headers de seguridad ausentes (MEDIA) +- Sin HSTS, CSP, X-Frame-Options, X-Content-Type-Options, X-XSS-Protection, Referrer-Policy, Permissions-Policy + +#### M6 — WordPress desactualizado (MEDIA) +- Versión 6.7.5, la actual es 6.9.x (2 versiones menores atrás) +- readme.html accesible confirma versión + +#### M7 — WooCommerce Store API expone estructura (MEDIA) +- Atributo "Marca" con 66 valores +- Carrito accesible sin autenticación (moneda MXN confirmada) +- Estructura de checkout visible + +#### M8 — Forminator API REST expuesta (MEDIA) +- Endpoint `/wp-json/forminator/v1/preview/forms` acepta requests +- Retorna error por falta de `module_id` — podría explotarse con IDs válidos + +#### M9 — Application Passwords habilitado (MEDIA) +- `/wp-admin/authorize-application.php` accesible +- Podría usarse para crear tokens de API si se obtienen credenciales + +#### M10 — 22 namespaces REST API expuestos (MEDIA) +- Incluyendo: wc-admin, hub-connector, forminator, wpmudev_pcs, etc. +- wc-admin expone rutas de marketing, features, experiments + +#### B1 — WP-Cron accesible (BAJA) +- `/wp-cron.php` responde sin error +- Podría usarse para DoS (WordPress cron abuse) + +#### B2 — setup-config.php accesible (BAJA) +- Retorna 409 (Already Installed) pero confirma WordPress + +#### B3 — Plugins con readme.txt público (BAJA) +- 11 plugins con versiones exactas expuestas via readme.txt +- Facilita identificación de vulnerabilidades conocidas + +#### I1 — XMLRPC bloqueado (OK) +#### I2 — wp-content/uploads bloqueado (OK) + +--- + +## APLICACIÓN HEROKU (refaccionariasdelvalle.herokuapp.com) + +### Infraestructura Confirmada +- **Plataforma:** Ruby on Rails (Heroku) +- **CDN:** CloudFront (d134yvfg5nzhu8.cloudfront.net) +- **S3:** refaccionariasdelvallepg.s3.us-west-1.amazonaws.com (acceso denegado, bien) +- **jQuery:** 1.12.4 (2016, múltiples CVEs de XSS) +- **Analytics:** Google Analytics UA-40376975-1 (Universal, deprecado) +- **reCaptcha:** Cargado en la página + +### Rutas Descubiertas +| Ruta | Código | Acceso | +|------|--------|--------| +| /productos | 200 | **PÚBLICO** | +| /cuentas/ingresar | 200 | Login de Devise | +| /users/sign_in | 500 | **ERROR INTERNO** | +| /admin | 302 | Requiere auth | +| /pedidos | 302 | Requiere auth | +| /carrito | 302 | Requiere auth | +| /categorias | 302 | Requiere auth | +| /marcas | 302 | Requiere auth | +| /buscar | 302 | Requiere auth | +| /clientes | 302 | Requiere auth | +| /reportes | 302 | Requiere auth | +| /inventario | 302 | Requiere auth | +| /cotizacion | 302 | Requiere auth | +| /facturas | 302 | Requiere auth | +| /sidekiq | 302 | Requiere auth (Sidekiq existe!) | +| /rails/info | 302 | Requiere auth | +| /rails/mailers | 302 | Requiere auth | +| /rails/conductor | 302 | Requiere auth | +| /rails/action_mailbox | 302 | Requiere auth | +| /active_storage | 302 | Active Storage habilitado | +| /health | 302 | Requiere auth | +| /up | 302 | Requiere auth | + +### Hallazgos Heroku + +#### A4 — X-Frame-Options: ALLOWALL (ALTA — Clickjacking) +- Cualquier sitio puede embedder la app en un iframe +- Permite ataques de clickjacking sobre acciones autenticadas +- **PoC:** `` + +#### M11 — Error 500 en /users/sign_in (MEDIA) +- Ruta Devise rota retorna error genérico +- Página personalizada "Error de Servidor Interno 500" (no stack trace) +- Indica problemas de configuración + +#### M12 — CORS con credenciales (MEDIA) +- `Access-Control-Allow-Credentials: true` con methods POST, PUT, DELETE +- Origin fijo a CloudFront (NO reflectivo — verificado con 3 origins diferentes) +- Menos grave de lo esperado pero la configuración es excesiva + +#### M13 — Login sin rate limiting visible (MEDIA) +- `/cuentas/ingresar` acepta POST sin CAPTCHA visible +- Token CSRF estático visible en meta tags +- Login retorna 200 en lugar de redirect (posible brute force) +- reCaptcha se carga pero puede no estar implementado en el form + +#### M14 — Sidekiq accesible (MEDIA) +- Ruta `/sidekiq` existe (redirige a login si no autenticado) +- Si se obtienen credenciales, da acceso a la cola de trabajos en background +- Sidekiq dashboard suele exponer Redis info, jobs, estadísticas + +#### M15 — Active Storage habilitado (MEDIA) +- `/active_storage` y `/active_storage/blobs` existen +- Si hay blobs con URLs predecibles, podrían ser accesibles + +#### B4 — jQuery 1.12.4 (BAJA) +- 6+ CVEs de XSS conocidos +- Versión de 2016 + +#### B5 — Facebook App ID expuesto (BAJA) +- 1652116431482935 — usable para phishing + +#### B6 — Cookie de sesión Rails (BAJA) +- `_refaccionariasdelvalle_session` con HttpOnly+Secure (bien configurada) + +#### B7 — Links a servicios externos en footer de login (BAJA) +- cPanel webmail: chi-pnode6.websitehostserver.net:2096 +- B2B-POS: b2b-pos.com/login (sistema B2B/POS externo, activo, nginx) + +#### I3 — Google Analytics deprecado (INFO) +- UA-40376975-1 (Universal Analytics, deprecado por Google) + +--- + +## Resumen de Severidades + +| Severidad | WordPress | Heroku | Total | +|-----------|----------|--------|-------| +| CRÍTICA | 0 | 0 | 0 | +| ALTA | 3 | 1 | 4 | +| MEDIA | 10 | 5 | 15 | +| BAJA | 3 | 4 | 7 | +| INFO/OK | 2 | 1 | 3 | +| **TOTAL** | **18** | **11** | **29** | + +--- + +## Recomendaciones Prioritarias + +### Urgentes (Hacer esta semana) +1. Implementar rate limiting y CAPTCHA en wp-login.php +2. Deshabilitar enumeración de usuarios via REST API y mensajes de error +3. Agregar HSTS y todos los headers de seguridad +4. Cambiar DMARC a p=reject y SPF a -all +5. Mover logo a servidor propio (no depender de diseno-studioarsa.com) + +### Importantes (Hacer este mes) +6. Actualizar WordPress a 6.9.x +7. Revisar y actualizar todos los plugins +8. Proteger directorio de backups (/wp-content/ai1wm-backups/) +9. Heroku: Cambiar X-Frame-Options a DENY +10. Heroku: Actualizar jQuery a versión moderna +11. Heroku: Corregir error 500 en /users/sign_in +12. Heroku: Restringir CORS methods y deshabilitar credentials + +### Deseables (Siguiente trimestre) +13. Implementar WAF (Web Application Firewall) +14. Heroku: Migrar de UA a GA4 +15. Heroku: Proteger rutas de Rails (sidekiq, action_mailbox, conductor) +16. Revisar Active Storage para blobs expuestos