
CVE-2018-8581
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'un compte de boîte aux lettres avec des privilèges normaux, 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 "one-click" basée sur le PoC original. Une fois les paramètres configurés, il ajoute ou supprime automatiquement la délégation sur la boîte de réception (inbox) de la boîte cible, afin de faciliter la réalisation d'une simulation d'attaque pour les équipes de sécurité et les red teams sur une entreprise autorisée.
Le PoC original nécessitait l'utilisation de deux scripts pour ajouter une règle de réception, ce qui n'est pas très pratique dans le travail réel d'une red team. De plus, en plus de la boîte aux lettres, le PoC original nécessitait de renseigner le SID de l'utilisateur cible. Cependant, la méthode décrite dans l'article pour obtenir le SID d'un utilisateur n'a pas fonctionné dans mes tests sur Exchange Server 2010 et 2013 (2010 n'a pas l'option correspondante, 2013 refuse l'opération). Finalement, j'ai eu l'idée d'effectuer d'abord une délégation inversée pour obtenir le SID de l'utilisateur cible, puis de supprimer la délégation.
Installer python-ntlm
pip install python-ntlm
Configurer les paramètres dans le code du script ci-dessous
...
# 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écutez le script, puis buvez une tasse de thé au goji et attendez une minute.
![]()
La boîte de réception de TARGET_EMAIL a maintenant été déléguée avec succès à CONTROLLED_EMAIL.
Consultez la boîte de réception de l'utilisateur cible dans OWA ou Outlook.
Définissez FLAG sur 0, exécutez à nouveau le script, puis buvez une autre tasse de thé au goji et attendez une minute pour supprimer la délégation précédemment ajoutée.
Vous n'avez plus les droits pour accéder.
Python 2.7.14
Exchange Server 2010 SP2
Exchange Server 2013
Vous pouvez modifier d'autres requêtes SOAP API EWS dans la fonction make_relay_body().
Ce script est fourni à des fins d'étude et d'échange uniquement. L'utilisateur doit se conformer aux lois locales en vigueur. Toute responsabilité légale découlant d'une utilisation autre incombe à l'utilisateur et non à l'auteur. Le téléchargement et l'utilisation du script signifient l'acceptation de ce qui précède.