campusvirtual.pucmm.edu.do · Tres niveles de acceso · Dos revisiones
"Lo que el navegador revela, el analista documenta"
| # | Sev. | Hallazgo | 1ª Rev. | 2ª Rev. 30/Abr/2026 | 3ª Rev. 02/May/2026 | 4ª Rev. (curl) 08/May/2026 |
|---|---|---|---|---|---|---|
| 01 | Crítico | Sin Content Security Policy (CSP) | Ausente | Sin cambios | Sin cambios | Confirmado vía curl |
| 02 | Crítico | Sin X-Frame-Options | Ausente | Corregido | Corregido | Confirmado: sameorigin |
| 03 | Crítico | Cookie MoodleSession sin HttpOnly | Detectado | Sin cambios | Sin cambios | Confirmado vía curl |
| 04 | Crítico | TLS 1.0 y 1.1 activos (obsoletos) | Detectado | Sin cambios | Sin cambios | Sin cambios |
| 05 | Alto | sesskey expuesto sin sesión | Presente | Sin cambios | Sin cambios | Sin cambios |
| 06 | Alto | Stack tecnológico expuesto | Presente | Sin cambios | Sin cambios | Confirmado: Apache/2.4.62 + PHP/8.2.30 |
| 07 | Alto | Rutas internas del servidor | Presente | Sin cambios | Sin cambios | Sin cambios |
| 08 | Alto | IDs de cursos enumerables | Nuevo | Presente | Sin cambios | Sin cambios |
| 09 | Alto | PDFs institucionales sin auth | Nuevo | Presente | Sin cambios | Sin cambios |
| 10 | Alto | IDs de usuarios en línea expuestos | Nuevo | Presente | Sin cambios | Sin cambios |
| 11 | Alto | Sin TLS 1.3 | Detectado | Sin cambios | Sin cambios | Sin cambios |
| 12 | Medio | Sin HSTS (Strict-Transport-Security) | Detectado | Sin cambios | Sin cambios | Confirmado vía curl |
| 13 | Medio | Mixed Content HTTP en HTTPS | Presente | Sin cambios | Sin cambios | Sin cambios |
| 14 | Medio | safeexambrowser.org via HTTP | Nuevo | Presente | Sin cambios | Sin cambios |
| 15 | Medio | PHP/Apache expuesto en headers | Detectado | Sin cambios | Sin cambios | Confirmado vía curl |
| 16 | Medio | IDs duplicados en HTML (5 casos) | Detectado | Sin cambios | Sin cambios | Corregido |
| 17 | Medio | Vvveb page builder activo | Presente | Corregido | Corregido | Confirmado: solo atributo deshabilitado |
| 18 | Medio | Texto placeholder sin reemplazar | Presente | Solo auth | Sigue público | Sigue en sección cerrada |
| 19 | Medio | Google Fonts cargado 4 veces | 4× | Corregido | Corregido | Regresión: 10× cerrada / 8× abierta |
| 20 | Bajo | HTML sin minificar | 9,771 | 3,595 | Sin cambio | Sin cambio |
| 21 | Bajo | Estilos CSS inline excesivos | 171 | 321 auth | 315 auth | Corregido (0 inline) |
| 22 | Info | Tag <font> deprecado (1997) | Presente | Solo público | Sigue público | Corregido (0 ocurrencias) |
| 23 | Info | Imágenes sin atributo alt | 8 imgs | 9 imgs | Sin cambios | Corregido (0 imgs sin alt) |
| 24 | Info | 38 errores de contraste (WAVE) | Detectado | Sin cambios | Sin cambios | Sin cambios |
| 25 | Medio | Sin X-Content-Type-Options | — | — | — | Detectado vía curl |
| 26 | Medio | Sin Referrer-Policy | — | — | — | Detectado vía curl |
| 27 | Bajo | Sin Permissions-Policy | — | — | — | Detectado vía curl |
X-Content-Type-Options: nosniff. Sin
ella, los navegadores pueden inferir (sniff) el tipo MIME de una respuesta ignorando el Content-Type
declarado. Esto permite ataques donde un archivo HTML disfrazado de imagen se ejecuta como script,
ampliando la superficie de ataque XSS.curl -I https://campusvirtual.pucmm.edu.do/moodle/ — cabecera ausente en respuesta
Header always set X-Content-Type-Options "nosniff"Referrer-Policy, el navegador envía la URL completa como
referrer en cada petición saliente. En una plataforma académica esto puede filtrar información sensible
como rutas de cursos, IDs de usuarios o parámetros de sesión a servicios externos (Google Fonts, redes
sociales, etc.) a través del header Referer.curl -I https://campusvirtual.pucmm.edu.do/moodle/ — cabecera ausente en respuesta
Header always set Referrer-Policy "strict-origin-when-cross-origin"Permissions-Policy (antes Feature-Policy).
Esta cabecera permite al servidor restringir qué APIs del navegador pueden ser usadas por la página y sus
iframes: cámara, micrófono, geolocalización, etc. Su ausencia deja estas APIs sin control explícito, lo
que podría ser explotado si se logra inyectar contenido en la plataforma.curl -I https://campusvirtual.pucmm.edu.do/moodle/ — cabecera ausente en respuesta
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
Este reporte fue elaborado exclusivamente mediante reconocimiento pasivo, utilizando únicamente información disponible públicamente a través del código fuente HTML accesible por cualquier visitante del sitio (Ctrl+U en el navegador). Se analizaron tres snapshots del HTML en dos momentos distintos.
No se realizaron pruebas activas de penetración, inyección de código, ni acceso no autorizado a ningún sistema, base de datos o cuenta de usuario. Todos los hallazgos se basan en análisis estático del código fuente público.
Es posible que existan vulnerabilidades adicionales no detectables mediante reconocimiento pasivo que requieran una auditoría de seguridad completa y autorizada para ser identificadas.