Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-42897 — CVE-2026-42897 - angle mort du Vérificateur de santé Exchange : les règles de réécriture d'URL IIS sortantes sont ignorées silencieusement, rendant les atténuations EOMT invisibles dans les rapports de diagnostic. | Kitploit
Outils/GitHubGitHub/atiilla/cve-2026-42897
Sécurité de l'Infrastructure CloudAnalyse des VulnérabilitésAudit de ConfigurationSécurité WebMauvaise ConfigurationApprentissage et Éducation
GitHubatiilla/cve-2026-42897

CVE-2026-42897

CVE-2026-42897 - angle mort du Vérificateur de santé Exchange : les règles de réécriture d'URL IIS sortantes sont ignorées silencieusement, rendant les atténuations EOMT invisibles dans les rapports de diagnostic.

Voir le dépôt
54il y a 3 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-42897 – Angle mort de la règle de réécriture sortante dans Exchange Health Checker

Sévérité : Moyenne (CVSS 5.3)
Composant : Microsoft CSS-Exchange – outil de diagnostic HealthChecker
Fichiers concernés :

  • Diagnostics/HealthChecker/Analyzer/Get-URLRewriteRule.ps1 (L49, L72, L97)
  • Diagnostics/HealthChecker/Analyzer/Invoke-AnalyzerIISInformation.ps1 (L442–459)
    Signalé : 2026-05-15
    Crédit : Découverte originale par le chercheur ayant signalé CSS-Exchange issue #2539
    Références :
  • CSS-Exchange GitHub : Get-URLRewriteRule.ps1, Invoke-AnalyzerIISInformation.ps1
  • Script de mitigation EOMT : Security/src/EOMT/Mitigations/CVE-2026-42897.ps1 (L147–254)

Résumé

Exchange Health Checker (HealthChecker.ps1) signale les règles de réécriture d’URL IIS dans le cadre de son audit de configuration du serveur. Cependant, la fonction d’énumération des règles Get-URLRewriteRule.ps1 ne lit que les règles entrantes (system.webServer/rewrite/rules) et ignore silencieusement les règles sortantes (system.webServer/rewrite/outboundRules).

La mitigation EOMT (Exchange On-premises Mitigation Tool) pour CVE-2026-42897 déploie une règle d’injection d’en-tête Content-Security-Policy nommée EOMT OWA CSP - outbound en tant que règle de réécriture d’URL IIS sortante. Comme Health Checker ne lit jamais outboundRules, cette règle de mitigation est totalement invisible dans les rapports de Health Checker.

Un administrateur Exchange qui s’appuie sur Health Checker pour confirmer que les mitigations EOMT sont en place recevra un rapport ne montrant aucune règle CSP sortante – donnant un faux négatif pour l’état de la mitigation et créant une fausse impression d’exposition ou, à l’inverse, une fausse confiance qu’aucune mitigation n’a été appliquée alors que c’est le cas.


Détail de la vulnérabilité

Cause racine

Trois chemins de code distincts dans Get-URLRewriteRule.ps1 lisent tous uniquement .rewrite.rules :

Chemin 1 – analyse de web.config (L49) :

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

Chemin 2 – applicationHost.config par emplacement (L72) :

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

Chemin 3 – applicationHost.config global (L97) :

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

Aucun de ces chemins n’accède à .rewrite.outboundRules. L’objet $rules retourné est ensuite parcouru dans Invoke-AnalyzerIISInformation.ps1 (L442–459) :

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

Le membre .rule n’existe que sur la collection entrante <rules>. Même si outboundRules était lu, la logique d’affichage devrait être mise à jour pour itérer .rule depuis les deux collections.

Structure XML IIS concernée

IIS stocke la configuration de réécriture d’URL avec deux enfants distincts sous <rewrite> :

root@kitploit:~
<system.webServer>
  <rewrite>
    <!-- inbound – ce que Health Checker lit -->
    <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>

    <!-- outbound – INVISIBLE pour 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>

Impact

ScénarioEffet
L’administrateur exécute Health Checker après avoir appliqué EOMTLe rapport n’affiche aucune règle CSP sortante → l’administrateur pense que la mitigation est manquante

Preuve de concept

Voir poc_cve_2026_42897.ps1 dans ce répertoire.

Le script :

  1. Construit un XML web.config fictif en mémoire avec à la fois une règle entrante et la règle sortante EOMT EOMT OWA CSP - outbound.
  2. Exécute la logique d’analyse vulnérable de Health Checker (entrant uniquement) et affiche sa sortie.
  3. Exécute la logique d’analyse corrigée (entrant + sortant) et montre la différence.
  4. Reproduit les trois chemins de configuration (web.config, applicationHost par emplacement, applicationHost global).
root@kitploit:~
.\poc_cve_2026_42897.ps1

Sortie attendue sur un Health Checker vulnérable (non corrigé) :

root@kitploit:~
[*] Chemin vulnérable (entrant uniquement) :
    Règles trouvées : Redirect to HTTPS
    MANQUANTE : EOMT OWA CSP - outbound

[*] Chemin corrigé (entrant + sortant) :
    Règles trouvées : Redirect to HTTPS, EOMT OWA CSP - outbound
    Règle sortante visible : VRAI

Correction

Correctif dans Get-URLRewriteRule.ps1 – lire les deux collections à chaque chemin :

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 par emplacement (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 }

Correctif dans Invoke-AnalyzerIISInformation.ps1 – itérer les deux collections :

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 }

Chronologie

DateÉvénement
2026-05-15Problème identifié lors d’une recherche de vérification de déploiement EOMT
2026-05-15Preuve de concept écrite et testée contre une configuration IIS fictive

RÉSERVÉ À LA RECHERCHE DE SÉCURITÉ AUTORISÉE. Testez exclusivement dans des environnements de laboratoire contrôlés.

Télécharger l’outil
L’administrateur utilise Health Checker comme seul outil d’auditImpossible de vérifier les règles sortantes EOMT sans inspecter manuellement la configuration IIS
Réponse aux incidents / contrôles de conformitéLa preuve de mitigation est absente de la sortie de Health Checker
Surveillance automatisée analysant le JSON de Health CheckerLa présence/absence de règle sortante n’est jamais remontée