Explotación Completa - Refaccionarias del Valle
Objetivo: https://refaccionariasdelvalle.com (WordPress/WooCommerce) + https://refaccionariasdelvalle.herokuapp.com (Ruby on 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. Se identificaron 35 hallazgos en total: 1 alta especial (supply chain), 4 altos, 16 medios, 9 bajos y 5 informativos. La infraestructura principal (WordPress) tiene buenas protecciones base (XMLRPC bloqueado, uploads protegidos, WooCommerce API v3 requiere auth), pero presenta debilidades significativas en enumeración de usuarios, falta de rate limiting, y dependencia de terceros. La aplicación Heroku (legacy) tiene problemas de clickjacking y CORS.
SITIO WORDPRESS (refaccionariasdelvalle.com)
Infraestructura Confirmada
- IP: 44.229.95.150 (AWS Oregon)
- Hosting: GreenGeeks → AWS
- CMS: WordPress 6.7.5 (2 versiones menores atrás de 6.9.x)
- Theme: Woodmart 7.6.0 (premium, con WPBakery 7.9 integrado)
- E-commerce: WooCommerce 9.8.7 (MXN, 66 marcas de refacciones)
- Cache: W3 Total Cache 2.8.0
- Servidor: Apache
Plugins Confirmados (11)
| Plugin |
Versión |
Readme público |
| WooCommerce |
9.8.7 |
Sí |
| WPBakery (js_composer) |
7.9 |
Sí (changelog.txt) |
| Contact Form 7 |
6.0.6 |
Sí |
| Forminator |
1.42.2 |
Sí |
| Google Site Kit |
1.151.0 |
Sí |
| Click to Chat WhatsApp |
4.15 |
Sí |
| Real3D FlipBook Lite |
4.8.5 |
Sí |
| Yoast SEO |
24.9 |
Sí |
| WPForms Lite |
1.9.5 |
Sí |
| Jetpack |
13.9.1 |
Sí |
| All-in-One WP Migration |
7.93 |
Sí |
| W3 Total Cache |
2.8.0 |
Sí |
23 Namespaces REST API Expuestos
Datos Accesibles SIN Autenticación
| Recurso |
Endpoint |
Accesible |
| Usuarios |
/wp-json/wp/v2/users |
✅ (1 usuario: adminRDelValle) |
| Páginas |
/wp-json/wp/v2/pages |
✅ (17 páginas) |
| Posts |
/wp-json/wp/v2/posts |
✅ |
| Media |
/wp-json/wp/v2/media |
✅ (imágenes con URLs) |
| Comentarios |
/wp-json/wp/v2/comments |
✅ |
| Búsqueda |
/wp-json/wp/v2/search |
✅ |
| Productos (Store) |
/wp-json/wc/store/v1/products |
✅ (0 productos públicos actualmente) |
| Atributos |
/wp-json/wc/store/v1/products/attributes |
✅ (66 marcas) |
| Carrito |
/wp-json/wc/store/v1/cart |
✅ |
| Jetpack estado |
/wp-json/jetpack/v4/connection |
✅ (desconectado) |
| Woodmart AJAX search |
admin-ajax.php?action=woodmart_ajax_search |
✅ |
Datos Protegidos (requieren autenticación) ✅
- WooCommerce API v3 (products, orders, customers) → 401
- WC-Analytics (reports, revenue, orders) → 401
- WC-Admin (features, options, plugins) → 401
- Google Site Kit (connection, auth) → 401
- Yoast (statistics) → 401
- WP Site Health (tests, directory-sizes) → 401
- Hub Connector (sync) → 404 (GET, requiere POST)
- Jetpack data → 401
Hallazgos WordPress
A1 — Riesgo de Cadena de Suministro via Diseñador (ALTA — CVSS 7.5)
- Evidencia: El logo oficial del sitio se sirve desde
diseno-studioarsa.com
- El dominio del diseñador tiene directory listing habilitado en
/sitios-de-prueba/
- Carpetas de 5 OTROS clientes expuestas:
- close-now/
- eduardo-dominguez/
- hold-it-media/
- soluciones-emp-integrales/
- the-moreno-co/
- Schema.org del sitio confirma la dependencia:
"url":"https://diseno-studioarsa.com/sitios-de-prueba/refaccionaria-del-valle/wp-content/uploads/..."
- Impacto: Si diseno-studioarsa.com se compromete → XSS/JavaScript injection en Refaccionarias del Valle y todos los otros clientes del diseñador
A2 — Enumeración de Usuarios CONFIRMADA (ALTA — CVSS 6.5)
- Evidencia: WordPress revela si un usuario existe o no con mensajes de error diferentes:
- Usuario válido: "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"
- Usuario confirmado:
adminRDelValle (ID:1, super_admin)
- Expuesto por 4 vías: REST API, author pages, oembed, mensajes de error de login
- Gravatar hash: 41c8ce28f93662502ca9b9aec99fe2c8
A3 — wp-login.php sin Rate Limiting (ALTA — CVSS 7.0)
- Evidencia: 5+ intentos consecutivos en <2 segundos sin bloqueo ni CAPTCHA
- Con usuario conocido (
adminRDelValle), fuerza bruta es completamente viable
- XMLRPC está bloqueado (403), pero wp-login.php no tiene protección
A4 — WooCommerce sin HSTS (ALTA — CVSS 6.0)
- Tienda con pagos en MXN sin Strict-Transport-Security
- Datos de tarjeta vulnerables a downgrade HTTPS→HTTP (MitM)
M1 — DMARC p=none + SPF ~all (MEDIA — CVSS 5.5)
v=DMARC1; p=none; — sin enforcement
- SPF con ~all (softfail) en lugar de -all
- Impacto: Cualquiera puede enviar emails como @refaccionariasdelvalle.com (phishing)
- Sin: HSTS, CSP, X-Frame-Options, X-Content-Type-Options, X-XSS-Protection, Referrer-Policy, Permissions-Policy
M3 — Jetpack Instalado pero NO Conectado (MEDIA — CVSS 4.5)
- isActive: false, isRegistered: false, isUserConnected: false
- Endpoints de registro expuestos:
/remote_authorize, /remote_provision, /remote_register, /remote_connect
- Riesgo: Un atacante podría intentar conectar una cuenta Jetpack rogue si obtiene acceso al admin
M4 — WordPress 6.7.5 Desactualizado (MEDIA — CVSS 4.5)
- 2 versiones menores atrás de 6.9.x
- readme.html confirma versión
M5 — WPBakery 7.9 con changelog.txt público (MEDIA — CVSS 4.0)
- Historial completo de versiones y fixes de seguridad visible
- CVE-2024-6457 (XSS) fue corregido en 7.8, versión 7.9 está parcheada para ese CVE específico
M6 — Directorio de Backups Accesible (MEDIA — CVSS 4.5)
/wp-content/ai1wm-backups/ retorna 200 OK
- Contenido: "Kangaroos cannot jump here" (honey pot o index personalizado)
- All-in-One WP Migration v7.93 instalado
- Riesgo residual: Si se genera un backup sin protección, sería accesible
M7 — Herramienta de Reparación de BD Accesible (MEDIA — CVSS 3.5)
/wp-admin/maint/repair.php retorna 200
- Requiere
WP_ALLOW_REPAIR en wp-config.php para activarse
M8 — Búsqueda Refleja Input sin XSS (MEDIA — CVSS 3.5)
- El término de búsqueda se refleja en 11 ubicaciones (título, og:title, twitter:title, breadcrumbs, JSON-LD)
- HTML está correctamente escapado (< → <, > → >, " → ")
- No es explotable como XSS, pero revela información de estructura del sitio
M9 — 12 Plugins con readme.txt Público (MEDIA — CVSS 3.0)
- Versiones exactas de todos los plugins visibles
- Facilita identificación de CVEs conocidos
M10 — WooCommerce Store API Expone Estructura (MEDIA — CVSS 3.5)
- 66 marcas de refacciones enumerables via atributos
- Carrito accesible sin auth (moneda MXN confirmada)
- Actualmente 0 productos públicos en la tienda
M11 — Application Passwords Habilitado (MEDIA — CVSS 3.0)
/wp-admin/authorize-application.php accesible
- Si se obtienen credenciales, se pueden crear API tokens persistentes
M12 — Forminator API REST Expuesta (MEDIA — CVSS 3.0)
/wp-json/forminator/v1/preview/forms acepta requests (requiere module_id)
- Con IDs válidos podría revelar estructura de formularios
M13 — WC-Admin Revela Estructura de Error (MEDIA — CVSS 2.5)
/wp-json/wc-admin/options retorna error 500 con mensaje detallado: "Debes proporcionar un array de opciones"
- Revela estructura interna del API
B1 — WP-Cron Accesible (BAJA — CVSS 2.5)
/wp-cron.php?doing_wp_cron=1 responde sin error
- Podría usarse para DoS (WordPress cron abuse)
B2 — Sitemap Revela Estructura Interna (BAJA — CVSS 2.0)
- Sitemaps: page-sitemap.xml, r3d-sitemap.xml, cms_block_cat-sitemap.xml, woodmart_slider-sitemap.xml
- Revelan: flipbooks, bloques CMS (header, footer, home, sucursales), sliders
B3 — setup-config.php y install.php Accesibles (BAJA — CVSS 2.0)
- Retornan 409/200 "Ya Instalado" pero confirman WordPress
B4 — WC-Logs Directory Accesible (BAJA — CVSS 2.5)
/wp-content/uploads/wc-logs/ retorna 200 OK
- Actualmente sin contenido visible, pero si se generan logs serían accesibles
I1 — Redes Sociales Confirmadas (INFO)
- Facebook: facebook.com/refaccionarias.delvalle
- Instagram: instagram.com/refaccionariasdelvalle
- TikTok: tiktok.com/@refaccionariasdelvallebc
- YouTube: youtube.com/@refaccionariasdelvalle
- Email: contacto@refaccionariasdelvalle.com (expuesto en Heroku)
- Dirección: Rio Colorado 9408, Col. Marron, Tijuana, C.P. 22015
- Teléfono: (664) 622-4243
- 69 sucursales confirmadas
I2 — XMLRPC Bloqueado (OK)
I3 — wp-content/uploads Bloqueado (OK)
APLICACIÓN HEROKU (refaccionariasdelvalle.herokuapp.com)
Infraestructura Confirmada
- Plataforma: Ruby on Rails (Heroku)
- CDN: CloudFront (d134yvfg5nzhu8.cloudfront.net) — S3 denegado correctamente
- S3: refaccionariasdelvallepg.s3.us-west-1.amazonaws.com (403 Access Denied, bien)
- jQuery: 1.12.4 (2016, múltiples CVEs)
- Google reCaptcha: Cargado (implementación parcial)
- Analytics: UA-40376975-1 (Universal, deprecado)
- Facebook Pixel: 1787289541577328
Rutas Descubiertas
| Ruta |
Código |
Notas |
| /productos |
200 |
Público — catálogo de productos |
| /sucursales |
200 |
Público — 69 sucursales con direcciones y teléfonos |
| /acerca |
200 |
Público — información corporativa |
| /contactanos |
200 |
Público — formulario de contacto |
| /cuentas/ingresar |
200 |
Login de Devise |
| /cuentas/contrasenia/nueva |
— |
Reset de password (no accesible) |
| /cuentas/registro |
— |
Registro (no accesible) |
| /users/sign_in |
500 |
ERROR INTERNO — Devise roto |
| /admin |
302 → login |
Panel admin |
| /sidekiq |
302 → login |
Cola de trabajos (Sidekiq!) |
| /graphql |
302 → login |
GraphQL endpoint existe |
| /active_storage/blobs/1-3 |
302 |
Active Storage — blobs existen |
| /pedidos, /carrito, /categorias |
302 |
Requieren auth |
| /marcas, /buscar, /clientes |
302 |
Requieren auth |
| /reportes, /inventario |
302 |
Requieren auth |
| /cotizacion, /facturas |
302 |
Requieren auth |
| /rails/info/routes |
302 |
Rails routes (detrás de auth) |
| /api |
302 |
API endpoint (detrás de auth) |
Hallazgos Heroku
A5 — X-Frame-Options: ALLOWALL (ALTA — Clickjacking — CVSS 6.5)
- Evidencia: Header
X-Frame-Options: ALLOWALL
- Cualquier sitio puede embedder la app en un iframe
- PoC:
<iframe src="https://refaccionariasdelvalle.herokuapp.com/cuentas/ingresar" width="100%" height="600"></iframe>
- Impacto: Un atacante puede crear un sitio de phishing que embebe el login real y captura las credenciales via overlay invisible
M14 — CORS con Credenciales (MEDIA — CVSS 4.5)
Access-Control-Allow-Credentials: true
- Methods: POST, PUT, DELETE, GET, OPTIONS
- Origin fijo a CloudFront (NO reflectivo — verificado con 3 origins)
- Menos grave que un CORS reflectivo pero la configuración es excesiva
M15 — Login sin Protección Efectiva (MEDIA — CVSS 5.0)
/cuentas/ingresar acepta POST sin bloqueo
- Todos los intentos retornan 200 (no distingue usuarios válidos de inválidos — esto es BUENO)
- reCaptcha se carga pero puede no estar activamente validando
- Token CSRF visible en meta tags (normal en Rails)
M16 — Sidekiq + GraphQL + API Detrás de Auth (MEDIA — CVSS 3.5)
- Estos servicios existen y son accesibles si se obtienen credenciales
- Sidekiq dashboard expondría Redis, jobs, estadísticas
- GraphQL permitiría consultas arbitrarias a la BD
- Ruta Devise rota — error interno del servidor
- No expone stack trace (página personalizada)
B6 — Active Storage Blobs Existen (BAJA — CVSS 2.5)
- Blobs 1, 2, 3 retornan 302 (redirect al login)
- Bien protegidos detrás de autenticación
B7 — jQuery 1.12.4 (BAJA — CVSS 2.5)
- 6+ CVEs de XSS conocidos (versión de 2016)
B8 — Facebook Pixel + App ID Expuestos (BAJA — CVSS 2.0)
- Facebook Pixel: 1787289541577328
- Facebook App ID: 1652116431482935
- Usables para ingeniería social/phishing
B9 — Links a Servicios Externos en Login (BAJA — CVSS 2.0)
- cPanel webmail: chi-pnode6.websitehostserver.net:2096
- B2B-POS: b2b-pos.com/login (sistema B2B/POS externo activo)
I4 — Google Analytics Deprecado (INFO)
I5 — S3 y CloudFront Correctamente Protegidos (OK)
Resumen de Severidades
| Severidad |
WordPress |
Heroku |
Total |
| CRÍTICA |
0 |
0 |
0 |
| ALTA |
4 |
1 |
5 |
| MEDIA |
13 |
3 |
16 |
| BAJA |
4 |
5 |
9 |
| INFO/OK |
3 |
2 |
5 |
| TOTAL |
24 |
11 |
35 |
Recomendaciones Prioritarias
Urgentes (Esta Semana)
- Implementar rate limiting y CAPTCHA en wp-login.php — Plugin como Wordfence o Limit Login Attempts
- Deshabilitar enumeración de usuarios — Bloquear REST API users, author pages, y mensajes de error diferenciados
- Mover logo a servidor propio — No depender de diseno-studioarsa.com
- Agregar HSTS en ambas plataformas (especialmente WooCommerce con pagos)
- Cambiar DMARC a p=reject y SPF a -all
Importantes (Este Mes)
- Actualizar WordPress a 6.9.x
- Revisar y actualizar todos los plugins
- Agregar todos los headers de seguridad (CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy)
- Heroku: Cambiar X-Frame-Options a DENY
- Heroku: Actualizar jQuery a versión moderna
- Heroku: Corregir error 500 en /users/sign_in
- Proteger directorio /wp-content/ai1wm-backups/ con .htaccess deny
- Proteger /wp-content/uploads/wc-logs/
Deseables (Próximo Trimestre)
- Implementar WAF (Web Application Firewall)
- Heroku: Migrar de UA a GA4
- Heroku: Restringir CORS methods y deshabilitar credentials
- Notificar a diseno-studioarsa.com sobre su directory listing (afecta a 5+ clientes)
- Revisar Active Storage blobs para acceso no autorizado
- Considerar consolidar plataformas (WordPress + Heroku → una sola)
Nota Legal
Este análisis fue realizado con autorización explícita del propietario. No se realizaron ataques activos de fuerza bruta ni explotación de vulnerabilidades. Todos los hallazgos se basan en reconocimiento y análisis de respuestas del servidor.