Explotación completa: Refaccionarias del Valle y Cilsatires

- 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
This commit is contained in:
Lucy
2026-03-25 11:13:08 +00:00
parent 0bd650eaf1
commit 9c07f3d99c
3 changed files with 513 additions and 14 deletions

View File

@@ -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

216
cilsatires/explotacion.md Normal file
View File

@@ -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

View File

@@ -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:** `<iframe src="https://refaccionariasdelvalle.herokuapp.com/cuentas/ingresar" width="100%" height="600"></iframe>`
#### 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