diff --git a/cilsatires/recon.md b/cilsatires/recon.md index f6eda9c..5a87b9e 100644 --- a/cilsatires/recon.md +++ b/cilsatires/recon.md @@ -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 diff --git a/refaccionariasdelvalle/recon.md b/refaccionariasdelvalle/recon.md index 43d176c..41eaa07 100644 --- a/refaccionariasdelvalle/recon.md +++ b/refaccionariasdelvalle/recon.md @@ -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