Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-42897 — CVE-2026-42897 - Punto ciego del Exchange Health Checker: las reglas de reescritura de URL de IIS de salida se ignoran silenciosamente, lo que hace que las mitigaciones de EOMT sean invisibles en los informes de diagnóstico. | Kitploit
Herramientas/GitHubGitHub/atiilla/cve-2026-42897
Seguridad de Infraestructura en la NubeAnálisis de VulnerabilidadesAuditoría de ConfiguraciónSeguridad WebMala ConfiguraciónAprendizaje y Educación
GitHubatiilla/cve-2026-42897

CVE-2026-42897

CVE-2026-42897 - Punto ciego del Exchange Health Checker: las reglas de reescritura de URL de IIS de salida se ignoran silenciosamente, lo que hace que las mitigaciones de EOMT sean invisibles en los informes de diagnóstico.

Ver Repositorio
54hace 3 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-42897 - Punto ciego de la regla de reescritura saliente del Exchange Health Checker

Severidad: Media (CVSS 5.3) Componente: Microsoft CSS-Exchange - herramienta de diagnóstico HealthChecker Archivos afectados:

  • Diagnostics/HealthChecker/Analyzer/Get-URLRewriteRule.ps1 (L49, L72, L97)
  • Diagnostics/HealthChecker/Analyzer/Invoke-AnalyzerIISInformation.ps1 (L442–459) Reportado: 2026-05-15 Crédito: Descubrimiento original por el investigador que reportó el problema #2539 de CSS-Exchange Referencias:
  • CSS-Exchange GitHub: Get-URLRewriteRule.ps1, Invoke-AnalyzerIISInformation.ps1
  • Script de mitigación EOMT: Security/src/EOMT/Mitigations/CVE-2026-42897.ps1 (L147–254)

Resumen

Exchange Health Checker (HealthChecker.ps1) informa las reglas de reescritura de URL de IIS como parte de su auditoría de configuración del servidor. Sin embargo, la función de enumeración de reglas Get-URLRewriteRule.ps1 solo lee las reglas entrantes (system.webServer/rewrite/rules) e ignora silenciosamente las reglas salientes (system.webServer/rewrite/outboundRules).

La mitigación de EOMT (Exchange On-premises Mitigation Tool) para CVE-2026-42897 implementa una regla de inyección de cabecera Content-Security-Policy denominada EOMT OWA CSP - outbound como una regla de reescritura de URL saliente de IIS. Debido a que Health Checker nunca lee outboundRules, esta regla de mitigación es completamente invisible en los informes de Health Checker.

Un administrador de Exchange que confíe en Health Checker para confirmar que las mitigaciones de EOMT están aplicadas recibirá un informe que no muestra ninguna regla CSP saliente, lo que genera un falso negativo en el estado de la mitigación y crea una falsa sensación de exposición o, por el contrario, una falsa confianza de que no se ha aplicado ninguna mitigación cuando sí se ha aplicado.


Detalle de la vulnerabilidad

Causa raíz

Tres rutas de código distintas en Get-URLRewriteRule.ps1 leen únicamente desde .rewrite.rules:

Ruta 1 - Análisis de web.config (L49):

root@kitploit:~
$rules = $content.configuration.'system.webServer'.rewrite.rules

Ruta 2 - applicationHost.config por ubicación (L72):

root@kitploit:~
$rules = $location.'system.webServer'.rewrite.rules

Ruta 3 - applicationHost.config global (L97):

root@kitploit:~
$rules = $ApplicationHostConfig.configuration.'system.webServer'.rewrite.rules

Ninguna de estas rutas accede a .rewrite.outboundRules. El objeto $rules devuelto se itera a continuación en Invoke-AnalyzerIISInformation.ps1 (L442–459):

root@kitploit:~
$displayRewriteRules = ($currentRewriteRules.rule | Where-Object { $_.enabled -ne "false" }).name |
    Where-Object { $_ -notcontains $excludeRules }

El miembro .rule existe solo en la colección <rules> entrante. Incluso si se leyera outboundRules, la lógica de visualización necesitaría actualizarse para iterar .rule de ambas colecciones.

Estructura XML de IIS afectada

IIS almacena la configuración de reescritura de URL con dos elementos secundarios separados bajo <rewrite>:

root@kitploit:~
<system.webServer>
  <rewrite>
    <!-- entrante - lo que Health Checker lee -->
    <rules>
      <rule name="Redirect to HTTPS" enabled="true">
        <match url=".*" />
        <conditions><add input="{HTTPS}" pattern="^OFF$" /></conditions>
        <action type="Redirect" url="https://{HTTP_HOST}/{R:0}" />
      </rule>
    </rules>

    <!-- saliente - INVISIBLE para Health Checker -->
    <outboundRules>
      <rule name="EOMT OWA CSP - outbound" enabled="true">
        <match serverVariable="RESPONSE_Content-Security-Policy" pattern=".*" />
        <action type="Rewrite"
                value="default-src 'self'; script-src 'self' 'unsafe-inline';
                       style-src 'self' 'unsafe-inline';" />
      </rule>
    </outboundRules>
  </rewrite>
</system.webServer>

Impacto

EscenarioEfecto
El administrador ejecuta Health Checker después de aplicar EOMTEl informe no muestra ninguna regla CSP saliente → el administrador cree que falta la mitigación

Prueba de concepto

Ver poc_cve_2026_42897.ps1 en este directorio.

El script:

  1. Construye un XML web.config simulado en memoria con una regla entrante y la regla saliente EOMT OWA CSP - outbound de EOMT.
  2. Ejecuta la lógica de análisis vulnerable de Health Checker (solo entrante) y muestra su salida.
  3. Ejecuta la lógica de análisis parcheada (entrante + saliente) y muestra la diferencia.
  4. Reproduce las tres rutas de configuración (web.config, applicationHost por ubicación, applicationHost global).
root@kitploit:~
.\poc_cve_2026_42897.ps1

Salida esperada en un Health Checker vulnerable (sin parchear):

root@kitploit:~
[*] Vulnerable path (inbound only):
    Rules found: Redirect to HTTPS
    MISSING: EOMT OWA CSP - outbound

[*] Patched path (inbound + outbound):
    Rules found: Redirect to HTTPS, EOMT OWA CSP - outbound
    Outbound rule visible: TRUE

Mitigación

Corrección en Get-URLRewriteRule.ps1 - leer ambas colecciones en cada ruta:

root@kitploit:~
# web.config (L49)
$inbound  = $content.configuration.'system.webServer'.rewrite.rules
$outbound = $content.configuration.'system.webServer'.rewrite.outboundRules
$rules    = @{ inbound = $inbound; outbound = $outbound }

# applicationHost.config per-location (L72)
$inbound  = $location.'system.webServer'.rewrite.rules
$outbound = $location.'system.webServer'.rewrite.outboundRules
$rules    = @{ inbound = $inbound; outbound = $outbound }

# applicationHost.config global (L97)
$inbound  = $ApplicationHostConfig.configuration.'system.webServer'.rewrite.rules
$outbound = $ApplicationHostConfig.configuration.'system.webServer'.rewrite.outboundRules
$rules    = @{ inbound = $inbound; outbound = $outbound }

Corrección en Invoke-AnalyzerIISInformation.ps1 - iterar ambas colecciones:

root@kitploit:~
$displayRewriteRules = @()
$displayRewriteRules += ($currentRewriteRules.inbound.rule  |
    Where-Object { $_.enabled -ne "false" }).name |
    Where-Object { $_ -notcontains $excludeRules }
$displayRewriteRules += ($currentRewriteRules.outbound.rule |
    Where-Object { $_.enabled -ne "false" }).name |
    Where-Object { $_ -notcontains $excludeRules }

Cronología

FechaEvento
2026-05-15Problema identificado durante la investigación de verificación del despliegue de EOMT
2026-05-15PoC escrita y probada contra la configuración IIS simulada

SOLO PARA INVESTIGACIÓN DE SEGURIDAD AUTORIZADA. Pruebe exclusivamente en entornos de laboratorio controlados.

Descargar herramienta
El administrador usa Health Checker como única herramienta de auditoríaNo puede verificar las reglas salientes de EOMT sin inspeccionar manualmente la configuración de IIS
Respuesta a incidentes / comprobaciones de cumplimientoLa evidencia de mitigación está ausente de la salida de Health Checker
Monitoreo automatizado que analiza el JSON de Health CheckerLa presencia / ausencia de la regla saliente nunca se muestra