Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-42897 — CVE-2026-42897 - punto cieco di Exchange Health Checker: le regole di riscrittura URL IIS in uscita vengono ignorate silenziosamente, rendendo invisibili le mitigazioni EOMT nei report diagnostici. | Kitploit
Strumenti/GitHubGitHub/atiilla/cve-2026-42897
Sicurezza dell'Infrastruttura CloudAnalisi delle VulnerabilitàAudit di ConfigurazioneSicurezza WebConfigurazione ErrataApprendimento e Formazione
GitHubatiilla/cve-2026-42897

CVE-2026-42897

CVE-2026-42897 - punto cieco di Exchange Health Checker: le regole di riscrittura URL IIS in uscita vengono ignorate silenziosamente, rendendo invisibili le mitigazioni EOMT nei report diagnostici.

Vedi Repository
543 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-42897 - Punto Cieco della Regola di Riscrittura Outbound in Exchange Health Checker

Gravità: Media (CVSS 5.3) Componente: Microsoft CSS-Exchange - strumento diagnostico HealthChecker File coinvolti:

  • Diagnostics/HealthChecker/Analyzer/Get-URLRewriteRule.ps1 (L49, L72, L97)
  • Diagnostics/HealthChecker/Analyzer/Invoke-AnalyzerIISInformation.ps1 (L442–459) Segnalato: 2026-05-15 Crediti: Scoperta originale del ricercatore che ha segnalato l'issue CSS-Exchange #2539 Riferimenti:
  • CSS-Exchange GitHub: Get-URLRewriteRule.ps1, Invoke-AnalyzerIISInformation.ps1
  • Script di mitigazione EOMT: Security/src/EOMT/Mitigations/CVE-2026-42897.ps1 (L147–254)

Riepilogo

Exchange Health Checker (HealthChecker.ps1) segnala le regole di riscrittura URL di IIS come parte del suo audit di configurazione del server. Tuttavia, la funzione di enumerazione delle regole Get-URLRewriteRule.ps1 legge solo le regole inbound (system.webServer/rewrite/rules) e ignora silenziosamente le regole outbound (system.webServer/rewrite/outboundRules).

La mitigazione di EOMT (Exchange On-premises Mitigation Tool) per CVE-2026-42897 implementa una regola di iniezione dell'header Content-Security-Policy denominata EOMT OWA CSP - outbound come regola di riscrittura URL outbound di IIS. Poiché Health Checker non legge mai outboundRules, questa regola di mitigazione è completamente invisibile nei report di Health Checker.

Un amministratore Exchange che si affida a Health Checker per confermare l'applicazione delle mitigazioni EOMT riceverà un report che non mostra alcuna regola CSP outbound, dando un falso negativo per lo stato della mitigazione e creando una falsa sensazione di esposizione o, al contrario, una falsa fiducia che nessuna mitigazione sia stata applicata quando invece lo è stata.


Dettaglio della Vulnerabilità

Causa Principale

Tre distinti percorsi di codice in Get-URLRewriteRule.ps1 leggono tutti solo da .rewrite.rules:

Percorso 1 - analisi di web.config (L49):

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

Percorso 2 - applicationHost.config per-location (L72):

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

Percorso 3 - applicationHost.config globale (L97):

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

Nessuno di questi percorsi accede a .rewrite.outboundRules. L'oggetto $rules restituito viene poi iterato in Invoke-AnalyzerIISInformation.ps1 (L442–459):

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

Il membro .rule esiste solo nella raccolta <rules> inbound. Anche se outboundRules venisse letto, la logica di visualizzazione dovrebbe essere aggiornata per iterare .rule da entrambe le raccolte.

Struttura XML di IIS Interessata

IIS memorizza la configurazione di riscrittura URL con due figli separati sotto <rewrite>:

root@kitploit:~
<system.webServer>
  <rewrite>
    <!-- inbound - what Health Checker reads -->
    <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 to 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>

Impatto

ScenarioEffetto
L'amministratore esegue Health Checker dopo aver applicato EOMTIl report non mostra alcuna regola CSP outbound → l'amministratore ritiene che la mitigazione sia assente

Prova di Concetto

Vedere poc_cve_2026_42897.ps1 in questa directory.

Lo script:

  1. Costruisce un XML web.config mock in memoria con una regola inbound e la regola outbound EOMT OWA CSP - outbound di EOMT.
  2. Esegue la logica di analisi vulnerabile di Health Checker (solo inbound) e mostra il suo output.
  3. Esegue la logica di analisi corretta (inbound + outbound) e mostra la differenza.
  4. Riproduce tutti e tre i percorsi di configurazione (web.config, applicationHost per-location, applicationHost globale).
root@kitploit:~
.\poc_cve_2026_42897.ps1

Output previsto su un Health Checker vulnerabile (non corretto):

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

Rimedio

Correzione in Get-URLRewriteRule.ps1 - leggere entrambe le raccolte in ogni percorso:

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 }

Correzione in Invoke-AnalyzerIISInformation.ps1 - iterare entrambe le raccolte:

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 }

Cronologia

DataEvento
2026-05-15Problema identificato durante la ricerca di verifica del deployment EOMT
2026-05-15PoC scritto e testato contro una configurazione IIS mock

SOLO PER RICERCA DI SICUREZZA AUTORIZZATA. Test esclusivamente in ambienti di laboratorio controllati.

Scarica lo strumento
L'amministratore utilizza Health Checker come unico strumento di auditNon può verificare le regole outbound di EOMT senza ispezionare manualmente la configurazione di IIS
Risposta agli incidenti / controlli di conformitàLa prova della mitigazione è assente dall'output di Health Checker
Monitoraggio automatico che analizza il JSON di Health CheckerLa presenza/assenza della regola outbound non viene mai segnalata