
Code d'exploit PoC pour CVE-2021-26855
Code d'exploitation PoC pour CVE-2021-26855.
Le code original a été développé par https://github.com/GreyOrder.
Exercices simples d'utilisation de golang pour le SSRF CVE-2021-26855 Version affectée
Exchange Server 2013 inférieur à CU23
Exchange Server 2016 inférieur à CU18
Exchange Server 2019 inférieur à CU7
Conditions d'utilisation
Cette vulnérabilité est différente des précédentes vulnérabilités d'Exchange. Elle ne nécessite pas d'identité utilisateur pouvant se connecter. Elle permet d'obtenir des ressources utilisateur internes sans autorisation. Elle peut être utilisée avec CVE-2021-27065 pour exécuter des commandes à distance.
Conditions de déclenchement de la vulnérabilité
Serveur cible vulnérable
Le serveur Exchange cible doit être un serveur d'équilibrage de charge, c'est-à-dire que deux serveurs ou plus sont utilisés simultanément
L'adresse e-mail cible. Notez que l'adresse doit être une adresse e-mail dans le domaine et non une adresse e-mail. Il existe une différence entre les deux. Après tests, ce n'est pas le cas, tant que c'est une adresse e-mail correcte, sauf circonstances particulières
L'attaquant doit également identifier le nom de domaine complet (FQDN) du serveur Exchange interne. En fait, seul le nom d'hôte du serveur est requis, car le nom d'hôte peut être résolu dans le domaine.
Parmi les quatre éléments ci-dessus, le FQDN peut être capturé via un message ntlm de type 2 ; les adresses e-mail peuvent être énumérées directement. Une explication supplémentaire pour le FQDN : comme je n'utilise que le type 2 ntlm pour capturer les informations système, le FQDN obtenu par défaut par l'outil est celui de la machine actuellement accédée, donc la vulnérabilité ne peut pas être déclenchée directement. Vous devez juger manuellement en fonction du nom FQDN et utiliser -n pour remplacer un autre nom d'hôte de serveur Exchange. Instructions d'utilisation
Pour exploiter cette vulnérabilité, il est plus pratique d'utiliser un langage de script comme ruby ou python. Il est écrit en golang pour apprendre golang, donc ce petit outil ne peut être considéré que comme un semi-produit et sera mis à jour quand j'aurai du temps.
Cet outil supporte actuellement les fonctions suivantes :
Détection de vulnérabilité (vérification simple de la possibilité de l'exploiter, ne peut pas être utilisé pour la détection)
Énumération des utilisateurs
Lecture simple de l'identifiant et du sujet des e-mails
Téléchargement d'e-mails (amélioré, désormais un fichier eml standard)
Lecture des contacts enregistrés par l'utilisateur (attention, pas les contacts globaux, seulement ceux enregistrés par la cible)
Dossier spécifié, pas arbitraire, veuillez vous référer à https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/distinguishedfolderid pour plus de détails
Pour d'autres utilisations, veuillez modifier vous-même le contenu xml.
Utilisation :
go run CVE-2021-26855-PoC.go -h <ip_cible>
-h string obligatoire, adresse cible ou nom de domaine
-U string optionnel, liste d'utilisateurs à énumérer
-d optionnel, télécharger les e-mails
-l optionnel, lister la liste de diffusion
-n string optionnel, nécessite de spécifier FQDN
-t string optionnel, délai de requête (par défaut "1")
-u string optionnel, spécifier la cible (par défaut "administrator")
-c optionnel, lire les contacts enregistrés par l'utilisateur actuel, pas tous
-f string optionnel, spécifier le dossier à afficher (par défaut "inbox")