# Reconocimiento Completo - Refaccionarias del Valle **Objetivo:** https://refaccionariasdelvalle.com + https://refaccionariasdelvalle.herokuapp.com **Fecha:** 2026-03-25 **Tipo:** WordPress + WooCommerce (e-commerce) + Ruby on Rails (Heroku) ## DNS - **IP:** 44.229.95.150 (AWS Oregon) - **MX:** mail.refaccionariasdelvalle.com - **NS:** GreenGeeks (ns1/ns2.greengeeks.net) - **SPF:** `v=spf1 ip4:108.163.225.126 include:spf.greengeeks.net ip4:69.175.98.166 +a +mx ~all` - **DMARC:** `v=DMARC1; p=none;` (sin enforcement) ## Infraestructura ### Sitio WordPress (Principal) - **Hosting:** GreenGeeks → AWS Oregon - **Servidor:** Apache - **CMS:** WordPress 6.7.5 (no es la última 6.9.x) - **Theme:** Woodmart 7.6.0 - **SSL:** Let's Encrypt E7 (válido hasta 2026-06-06) - **E-commerce:** WooCommerce 9.8.7 (moneda: MXN, país: MX/BC) ### Aplicación Heroku (Legacy/B2B) - **Plataforma:** Ruby on Rails en Heroku - **CDN:** CloudFront (d134yvfg5nzhu8.cloudfront.net) - **S3:** refaccionariasdelvallepg.s3.us-west-1.amazonaws.com - **Analytics:** Google Analytics UA-40376975-1 - **Facebook App ID:** 1652116431482935 ## Plugins Detectados (WordPress) | Plugin | Versión | Riesgo | |--------|---------|--------| | WPBakery (js_composer) | 7.9 | CVE-2024-6457 (XSS no autenticado < 7.8) — versión 7.9 puede estar parcheada | | WooCommerce | 9.8.7 | Tienda activa con pagos | | Contact Form 7 | 6.0.6 | Generalmente seguro | | CF7 Conditional Fields | — | Extensión de CF7 | | Forminator | 1.42.2 | Plugin de formularios con preview API | | Google Site Kit | 1.151.0 | Integración Google | | Click to Chat WhatsApp | 4.15 | Bajo riesgo | | Real3D FlipBook Lite | — | Verificar CVEs | | Yoast SEO | 24.9 | Generalmente seguro | | WPForms | — | API REST expuesta | | WPMU DEV | — | Hub Connector y Defender/Smush probable | | Jetpack | — | API v4 expuesta | ## Hallazgos ### Sitio WordPress | # | Hallazgo | Severidad | |---|----------|-----------| | C1 | **Directorio de backups accesible** — `/wp-content/ai1wm-backups/` retorna 200. All-in-One WP Migration crea backups completos del sitio (BD + archivos). Si hay archivos .wpress aquí, contienen TODO: credenciales, BD, wp-config | CRÍTICA | | A1 | **Enumeración de usuarios** — `adminRDelValle` (ID:1, super_admin) expuesto via REST API, author pages, y oembed. Gravatar hash: `41c8ce28f93662502ca9b9aec99fe2c8` | ALTA | | A2 | **wp-login.php sin rate limiting** — 5 intentos consecutivos en <2s sin bloqueo. Con usuario conocido (`adminRDelValle`), fuerza bruta es viable | ALTA | | A3 | **WooCommerce sin HSTS** — tienda con pagos en MXN sin Strict-Transport-Security. Datos de pago vulnerables a downgrade HTTPS→HTTP | ALTA | | A4 | **DMARC p=none** — política de correo no enforce. Cualquiera puede enviar emails como @refaccionariasdelvalle.com | ALTA | | A5 | **WooCommerce Store API expone estructura** — atributo "Marca" con 66 valores, carrito accesible sin auth, estructura de checkout visible | ALTA | | M1 | **7/7 headers de seguridad ausentes** — Sin HSTS, CSP, X-Frame-Options, X-Content-Type-Options, etc. | MEDIA | | M2 | **WordPress 6.7.5** — 2 versiones menores atrás de 6.9.x | MEDIA | | M3 | **WPBakery 7.9** — changelog.txt público en `/wp-content/plugins/js_composer/changelog.txt`. Historial de CVEs aunque versión actual puede estar parcheada | MEDIA | | M4 | **Woodmart 7.6.0** — verificar actualizaciones del theme premium | MEDIA | | M5 | **SPF con ~all (softfail)** — debería ser -all para rechazo estricto | MEDIA | | M6 | **wp-admin/install.php accesible** — muestra "Ya instalado" pero confirma WP + revela versión exacta | MEDIA | | M7 | **Forminator API** — endpoint `/wp-json/forminator/v1/preview/forms` acepta requests, retorna `success:false` pero podría explotarse con module_id válido | MEDIA | | M8 | **Application Passwords habilitado** — endpoint de autorización en `/wp-admin/authorize-application.php` expuesto | MEDIA | | M9 | **Logo servido desde dominio externo** — `diseno-studioarsa.com` (developer tercero) aloja el logo oficial. Si ese dominio se compromete, XSS en Refaccionarias | MEDIA | | I1 | **XMLRPC bloqueado (403)** — bien configurado | OK | | I2 | **WooCommerce logs/uploads directorios** — retornan 200 pero sin listing (vacíos) | BAJA | | I3 | **wp-content/uploads bloqueado (403)** — bien configurado | OK | | I4 | **robots.txt** — revela rutas de WooCommerce logs | BAJA | ### Aplicación Heroku (Legacy) | # | Hallazgo | Severidad | |---|----------|-----------| | H1 | **X-Frame-Options: ALLOWALL** — permite clickjacking completo. Cualquier sitio puede embedder la app en un iframe | ALTA | | H2 | **CORS misconfiguration** — `Access-Control-Allow-Credentials: true` + `Allow-Methods: POST, PUT, DELETE, GET, OPTIONS`. Origin fijo a CloudFront pero permite operaciones destructivas | ALTA | | H3 | **Endpoints /users y /products retornan 500** — error no manejado. Devise (autenticación) está roto. Puede revelar stack traces en modo debug | ALTA | | H4 | **Panel admin accesible** — `/admin` redirige a login en `/cuentas/ingresar`. Sin CAPTCHA visible | MEDIA | | H5 | **CSRF token estático en meta tags** — token visible en HTML source para cada request | MEDIA | | H6 | **Facebook App ID expuesto** — 1652116431482935, podría usarse para phishing | MEDIA | | H7 | **Cookie de sesión Rails expuesta** — `_refaccionariasdelvalle_session` con base64-encoded data | BAJA | | H8 | **jQuery 1.12.4** — versión de 2016 con múltiples CVEs de XSS | MEDIA | | H9 | **Google Analytics legacy** — UA-40376975-1 (Universal Analytics, deprecado) | BAJA | ## Resumen de Severidades - **CRÍTICA:** 1 (directorio backups) - **ALTA:** 7 (usuarios expuestos, sin rate limiting, sin HSTS, DMARC none, store API, X-Frame-Options ALLOWALL, CORS) - **MEDIA:** 12 - **BAJA/INFO:** 4 ## Recomendaciones Prioritarias 1. **URGENTE:** Eliminar o proteger `/wp-content/ai1wm-backups/` — puede contener backup completo del sitio 2. Implementar rate limiting y CAPTCHA en wp-login.php 3. Deshabilitar enumeración de usuarios via REST API 4. Agregar todos los headers de seguridad (HSTS, CSP, X-Frame-Options DENY) 5. Cambiar DMARC a `p=reject` y SPF a `-all` 6. Actualizar WordPress a la última versión 7. Revisar y actualizar todos los plugins 8. Heroku: Cambiar X-Frame-Options a DENY, restringir CORS 9. Heroku: Corregir error 500 en /users y /products (Devise roto) 10. Heroku: Actualizar jQuery a versión moderna