Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-42897 — CVE-2026-42897 - слепая зона Exchange Health Checker: правила исходящей перезаписи URL в IIS молча игнорируются, что делает меры смягчения EOMT невидимыми в диагностических отчетах. | Kitploit
Инструменты/GitHubGitHub/atiilla/cve-2026-42897
Безопасность облачной инфраструктурыАнализ уязвимостейАудит конфигурацииВеб-безопасностьНеправильная КонфигурацияОбучение и Образование
GitHubatiilla/cve-2026-42897

CVE-2026-42897

CVE-2026-42897 - слепая зона Exchange Health Checker: правила исходящей перезаписи URL в IIS молча игнорируются, что делает меры смягчения EOMT невидимыми в диагностических отчетах.

Репозиторий
543 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2026-42897 - Слепое пятно правила перезаписи исходящих запросов Exchange Health Checker

Серьёзность: Средняя (CVSS 5.3) Компонент: Microsoft CSS-Exchange - HealthChecker диагностический инструмент Затронутые файлы:

  • Diagnostics/HealthChecker/Analyzer/Get-URLRewriteRule.ps1 (L49, L72, L97)
  • Diagnostics/HealthChecker/Analyzer/Invoke-AnalyzerIISInformation.ps1 (L442–459) Сообщено: 2026-05-15 Кредиты: Первоначальное обнаружение исследователем, сообщившим о CSS-Exchange issue #2539 Ссылки:
  • CSS-Exchange GitHub: Get-URLRewriteRule.ps1, Invoke-AnalyzerIISInformation.ps1
  • EOMT Mitigation Script: Security/src/EOMT/Mitigations/CVE-2026-42897.ps1 (L147–254)

Краткое описание

Exchange Health Checker (HealthChecker.ps1) сообщает о правилах перезаписи URL IIS в рамках аудита конфигурации сервера. Однако функция перечисления правил Get-URLRewriteRule.ps1 считывает только входящие правила (system.webServer/rewrite/rules) и молча игнорирует исходящие правила (system.webServer/rewrite/outboundRules).

Смягчение CVE-2026-42897 с помощью EOMT (Exchange On-premises Mitigation Tool) развёртывает правило инжекции заголовка Content-Security-Policy под названием EOMT OWA CSP - outbound как исходящее правило перезаписи URL IIS. Поскольку Health Checker никогда не считывает outboundRules, это правило смягчения полностью невидимо в отчётах Health Checker.

Администратор Exchange, полагающийся на Health Checker для подтверждения применения смягчений EOMT, получит отчёт, не показывающий исходящее правило CSP, что даёт ложноотрицательный результат статуса смягчения и создаёт ложное ощущение уязвимости или, наоборот, ложную уверенность в отсутствии смягчения, когда оно уже применено.


Сведения об уязвимости

Коренная причина

Три различных пути кода в Get-URLRewriteRule.ps1 считывают только из .rewrite.rules:

Путь 1 - разбор web.config (L49):

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

Путь 2 - applicationHost.config для каждой локации (L72):

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

Путь 3 - applicationHost.config глобальный (L97):

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

Ни один из этих путей не обращается к .rewrite.outboundRules. Возвращаемый объект $rules затем итерируется в Invoke-AnalyzerIISInformation.ps1 (L442–459):

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

Член .rule существует только в коллекции входящих <rules>. Даже если бы outboundRules были считаны, логика отображения потребовала бы обновления для итерации .rule из обеих коллекций.

Затронутая структура XML IIS

IIS хранит конфигурацию перезаписи URL с двумя отдельными дочерними элементами внутри <rewrite>:

root@kitploit:~
<system.webServer>
  <rewrite>
    <!-- inbound - что читает Health Checker -->
    <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 - НЕВИДИМЫЙ для 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>

Воздействие

СценарийЭффект
Администратор запускает Health Checker после применения EOMTОтчёт не показывает исходящее правило CSP → администратор считает, что смягчение отсутствует
Администратор использует Health Checker как единственный инструмент аудита

Доказательство концепции

Смотрите poc_cve_2026_42897.ps1 в этом каталоге.

Скрипт:

  1. Создаёт в памяти фиктивный XML web.config с входящим правилом и исходящим правилом EOMT EOMT OWA CSP - outbound.
  2. Запускает уязвимую логику разбора Health Checker (только входящие) и показывает вывод.
  3. Запускает исправленную логику разбора (входящие + исходящие) и показывает разницу.
  4. Воспроизводит все три пути конфигурации (web.config, applicationHost для каждой локации, applicationHost глобальный).
root@kitploit:~
.\poc_cve_2026_42897.ps1

Ожидаемый вывод на уязвимой (неисправленной) версии Health Checker:

root@kitploit:~
[*] Уязвимый путь (только входящие):
    Найдены правила: Redirect to HTTPS
    ОТСУТСТВУЕТ: EOMT OWA CSP - outbound

[*] Исправленный путь (входящие + исходящие):
    Найдены правила: Redirect to HTTPS, EOMT OWA CSP - outbound
    Исходящее правило видимо: ДА

Устранение

Исправление в Get-URLRewriteRule.ps1 - считывать обе коллекции на каждом пути:

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 }

Исправление в Invoke-AnalyzerIISInformation.ps1 - итерировать обе коллекции:

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 }

Хронология

ДатаСобытие
2026-05-15Проблема выявлена в ходе исследования проверки развёртывания EOMT
2026-05-15PoC написан и протестирован на фиктивной конфигурации IIS

ТОЛЬКО ДЛЯ АВТОРИЗОВАННЫХ ИССЛЕДОВАНИЙ БЕЗОПАСНОСТИ. Тестируйте исключительно в контролируемых лабораторных средах.

Скачать инструмент
Невозможно проверить исходящие правила EOMT без ручного просмотра конфигурации IIS
Реагирование на инциденты / проверки соответствияДоказательства смягчения отсутствуют в выводе Health Checker
Автоматизированный мониторинг, разбирающий JSON Health CheckerНаличие/отсутствие исходящих правил никогда не отображается