Análisis profundo: Cilsatires (26 RDP) + Refaccionarias del Valle (WP+Heroku)

This commit is contained in:
Lucy
2026-03-25 10:45:35 +00:00
parent 117018dc9c
commit 0bd650eaf1
2 changed files with 155 additions and 65 deletions

View File

@@ -1,23 +1,78 @@
# Reconocimiento - Cilsatires
# Reconocimiento Completo - Cilsatires
**Objetivo:** cilsatires.ddns.net:5610
**Fecha:** 2026-03-25
**Tipo:** Infraestructura Windows / Escritorio Remoto
## DNS
- **IP:** 189.153.77.38
- **Tipo:** DDNS (No-IP/DynDNS) - IP residencial Telmex/Megacable
- **Puerto:** 5610 (no estándar)
- **rDNS:** dsl-38-77-153-189-dynamic.prod-infinitum.com.mx
- **Tipo:** DDNS (No-IP/DynDNS) sobre IP residencial Infinitum (Telmex)
- **ISP:** Telmex/Megacable, Tijuana, MX
## Conectividad
- **Estado:** NO RESPONDE en puerto 5610 vía HTTP
- Posible servicio no-HTTP o filtrado por firewall
## Infraestructura Descubierta
## Hallazgos Iniciales
| # | Hallazgo | Severidad |
|---|----------|-----------|
| 1 | DDNS con IP residencial expuesta a internet | Media |
| 2 | Puerto no estándar (5610) — puede ser cámara, NVR, o servicio interno | Info |
| 3 | Servicio no responde HTTP — requiere escaneo de puertos | Info |
### Múltiples Servidores Windows Expuestos
Se descubrieron **26 puertos abiertos** en una sola IP pública, la mayoría son servicios RDP (Escritorio Remoto) redirigidos a diferentes máquinas Windows Server 2016 internas.
## Siguiente Paso
- Escaneo de puertos (nmap) para identificar servicio en :5610
- Verificar si hay otros puertos abiertos en la IP
### Máquinas Identificadas por Nombre
| Puerto | Hostname | Dominio | OS |
|--------|----------|---------|-------|
| 3410 | WIN-I5RRPBV1662 | Workgroup | Windows Server 2016 (10.0.14393) |
| 5610 | WIN-AL11FSH8G8D | Workgroup | Windows Server 2016 (10.0.14393) |
| 5623 | (IIS Web Server) | — | Windows Server 2016 / IIS 10.0 |
| 5900 | WIN-K6ELEDKINSP | **OPTIMA.local** | Windows Server 2016 (10.0.14393) |
**Nota:** El puerto 5900 pertenece a un **dominio Active Directory** llamado `OPTIMA.local` (DNS: WIN-K6ELEDKINSP.OPTIMA.local). Esto sugiere una red corporativa con controlador de dominio.
### Todos los Puertos RDP Abiertos (26)
3410, 5072, 5500, 5580, 5589, 5602, 5604, 5605, 5608, 5610, 5612, 5613, 5615, 5618, 5621, 5624, 5626, 5627, 5628, 5629, 5630, 5631, 5657, 5900, 5991
### Servidor Web IIS
- **Puerto:** 5623
- **Versión:** Microsoft IIS 10.0
- **Tecnología:** ASP.NET
- **Contenido:** Página por defecto de IIS ("IIS Windows Server")
- **TRACE habilitado:** Sí (método HTTP potencialmente peligroso)
- **Directorio ASP.NET:** `/aspnet_client/system_web/` accesible (200)
## Hallazgos
| # | Hallazgo | Severidad | CVSS |
|---|----------|-----------|------|
| C1 | **26 puertos RDP expuestos a internet** — toda la red interna accesible vía escritorio remoto desde cualquier lugar. Sin VPN, sin restricción de IP. Cada puerto es una puerta de entrada para fuerza bruta de credenciales | CRÍTICA | 9.0 |
| C2 | **Dominio Active Directory expuesto**`OPTIMA.local` visible en puerto 5900. Si un atacante compromete cualquier máquina RDP, puede moverse lateralmente a todo el dominio | CRÍTICA | 8.5 |
| A1 | **Windows Server 2016 (build 14393)** — todas las máquinas corren la misma versión. Server 2016 está en soporte extendido pero build 14393 es la RTM original sin actualizaciones visibles | ALTA | 7.5 |
| A2 | **IIS 10.0 con ASP.NET expuesto** — servidor web en puerto 5623 mostrando página por defecto. Método TRACE habilitado (riesgo de XST). Header X-Powered-By: ASP.NET expuesto | ALTA | 6.5 |
| A3 | **Sin autenticación de red (NLA)** — los servicios RDP aceptan conexiones sin NLA, exponiendo la pantalla de login directamente | ALTA | 7.0 |
| M1 | **IP residencial dinámica con DDNS** — si la IP cambia y el DDNS se actualiza, todas las reglas de firewall basadas en IP se invalidan. Si NO cambia, es una IP fija expuesta sin protección de ISP empresarial | MEDIA | 5.0 |
| M2 | **IIS shortname vulnerability** — todas las letras retornan 400 (no 404), indicando que el servidor es potencialmente vulnerable a enumeración de nombres cortos 8.3 | MEDIA | 5.3 |
| M3 | **Sin HTTPS en IIS** — el servidor web solo responde HTTP, sin cifrado | MEDIA | 5.0 |
| I1 | **Nombres de máquina expuestos** — revelan convención de nombres, dominio AD, y versión de OS vía RDP NTLM info | INFO | 3.0 |
| I2 | **Certificados SSL auto-firmados** — todos los certificados RDP son self-signed con validez de 6 meses | INFO | 2.0 |
## Riesgos Específicos
### Fuerza Bruta RDP
- 26 puertos = 26 oportunidades de brute force simultáneo
- Sin rate limiting visible
- Sin NLA = la pantalla de login está directamente accesible
- Herramientas como Hydra, Crowbar, o NLBrute podrían probar credenciales
### Movimiento Lateral
- Si se compromete una máquina, el dominio `OPTIMA.local` sugiere que hay un controlador de dominio
- Pass-the-hash, Kerberoasting, y otros ataques AD serían posibles
- Todas las máquinas son Windows Server 2016 RTM = mismas vulnerabilidades
### BlueKeep (CVE-2019-0708)
- Windows Server 2016 NO es vulnerable a BlueKeep (solo afecta 2003/2008/7)
- Sin embargo, Server 2016 RTM sin parches tiene otras vulnerabilidades conocidas
## Recomendaciones
1. **URGENTE:** Deshabilitar acceso RDP público inmediatamente
2. Implementar VPN (WireGuard, OpenVPN, o similar) como única vía de acceso remoto
3. Si se necesita RDP remoto, usar Azure AD Gateway o Apache Guacamole
4. Habilitar NLA en todos los servidores
5. Actualizar Windows Server 2016 a las últimas actualizaciones acumulativas
6. Revisar el servidor IIS — si no se usa, deshabilitarlo
7. Implementar firewall con whitelist de IPs para los puertos críticos
8. Auditar el dominio OPTIMA.local completo

View File

@@ -1,68 +1,103 @@
# Reconocimiento - Refaccionarias del Valle
**Objetivo:** https://refaccionariasdelvalle.com
# 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
- **Hosting:** GreenGeeks (hosting compartido) → AWS
### Sitio WordPress (Principal)
- **Hosting:** GreenGeeks → AWS Oregon
- **Servidor:** Apache
- **CMS:** WordPress 6.7.5
- **Plugins detectados:** WooCommerce 9.8.7, WPBakery Page Builder, Site Kit by Google 1.151.0, Bootstrap
- **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:** Sí (WooCommerce) — maneja datos de clientes/pagos
- **E-commerce:** WooCommerce 9.8.7 (moneda: MXN, país: MX/BC)
## Headers de Seguridad
| Header | Estado |
|--------|--------|
| HSTS | FALTA |
| Content-Security-Policy | FALTA |
| X-Frame-Options | FALTA |
| X-Content-Type-Options | FALTA |
| X-XSS-Protection | FALTA |
| Referrer-Policy | FALTA |
| Permissions-Policy | FALTA |
### 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
## Hallazgos
| # | Hallazgo | Severidad |
|---|----------|-----------|
| 1 | **Enumeración de usuarios via REST API** — usuario `adminRDelValle` (ID:1) expuesto como `is_super_admin: true` en `/wp-json/wp/v2/users`. Incluye metadatos de WooCommerce y Gravatar hash | ALTA |
| 2 | **WooCommerce (e-commerce) sin HSTS** — datos de pago en riesgo de MITM | ALTA |
| 3 | **wp-login.php accesible** — sin rate limiting visible, objetivo para fuerza bruta | ALTA |
| 4 | **readme.html accesible** — expone versión exacta de WordPress | MEDIA |
| 5 | 7 de 7 headers de seguridad ausentes | MEDIA |
| 6 | WordPress 6.7.5 (no es la última versión 6.9.x) | MEDIA |
| 7 | WPBakery Page Builder 7.9 — historial de CVEs (XSS, RCE) | MEDIA |
| 8 | Woodmart theme 7.6.0 — verificar actualizaciones | MEDIA |
| 9 | Yoast SEO 24.9, CF7 Conditional Fields 2.5.11, Click to Chat WhatsApp 4.15 | MEDIA |
| 10 | SPF con `~all` (softfail en vez de -all) | MEDIA |
| 11 | XMLRPC bloqueado (403) | OK |
| 12 | Correo self-hosted en mismo dominio | MEDIA |
| 13 | Logo servido desde dominio externo: `diseno-studioarsa.com` | BAJA |
## Plugins Detectados (WordPress)
## Enumeración de Usuarios
- **Endpoint:** `/wp-json/wp/v2/users`
- **Usuario encontrado:** `adminRDelValle` (ID: 1)
- **Flags:** `is_super_admin: true`
- **Gravatar hash:** `41c8ce28f93662502ca9b9aec99fe2c8`
- **Riesgo:** Con el nombre de usuario conocido, solo falta la contraseña para acceder
## Plugins Detectados
| Plugin | Versión | Riesgo |
|--------|---------|--------|
| WooCommerce | 9.8.7 | Tienda activa, maneja pagos |
| WPBakery (js_composer) | 7.9 | CVEs históricos: XSS almacenado, RCE |
| Woodmart Theme | 7.6.0 | Theme premium, verificar CVEs |
| Yoast SEO | 24.9 | Generalmente seguro |
| CF7 Conditional Fields | 2.5.11 | Verificar CVEs |
| 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 |
## Siguiente Paso
- Análisis de WPBakery CVEs específicos para v7.9
- Verificar checkout de WooCommerce (pasarela de pago, HTTPS)
- Auditoría de plugins con wpscan
- Verificar DMARC
## 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