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:
59
README.md
59
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
|
||||
|
||||
|
||||
216
cilsatires/explotacion.md
Normal file
216
cilsatires/explotacion.md
Normal 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
|
||||
252
refaccionariasdelvalle/explotacion.md
Normal file
252
refaccionariasdelvalle/explotacion.md
Normal 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
|
||||
Reference in New Issue
Block a user