Files
pentesting/refaccionariasdelvalle/explotacion.md
Lucy 9c07f3d99c 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
2026-03-25 11:13:08 +00:00

11 KiB

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
  • _refaccionariasdelvalle_session con HttpOnly+Secure (bien configurada)
  • 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)

  1. Actualizar WordPress a 6.9.x
  2. Revisar y actualizar todos los plugins
  3. Proteger directorio de backups (/wp-content/ai1wm-backups/)
  4. Heroku: Cambiar X-Frame-Options a DENY
  5. Heroku: Actualizar jQuery a versión moderna
  6. Heroku: Corregir error 500 en /users/sign_in
  7. Heroku: Restringir CORS methods y deshabilitar credentials

Deseables (Siguiente trimestre)

  1. Implementar WAF (Web Application Firewall)
  2. Heroku: Migrar de UA a GA4
  3. Heroku: Proteger rutas de Rails (sidekiq, action_mailbox, conductor)
  4. Revisar Active Storage para blobs expuestos