
Un script qui peut vérifier si une adresse email est valide dans Office365 (énumération d'utilisateurs/emails). Il n'effectue aucune tentative de connexion, n'est pas limité, et est extrêmement utile pour les évaluations d'ingénierie sociale afin de trouver quels emails existent et lesquels n'existent pas.
Un script qui permet de vérifier si une adresse e-mail est valide dans Office365. Il n'effectue aucune tentative de connexion, n'est pas limité et est incroyablement utile pour les évaluations d'ingénierie sociale afin de trouver quels e-mails existent et lesquels n'existent pas.
Microsoft ne considère pas « l'énumération d'e-mails » comme une vulnérabilité, donc ce script exploite une « fonctionnalité ». Il existe quelques autres scripts publics de validation d'e-mails Office365, mais ils nécessitent tous (à ma connaissance) au moins une tentative de connexion par compte utilisateur. Cela est détectable et peut être considéré comme une tentative de brute-force légère (1 mot de passe « commun » sur plusieurs comptes).
Ce script permet la validation d'e-mails avec zéro tentative de connexion et n'utilise que l'API Autodiscover intégrée de Microsoft, de sorte qu'il est invisible pour la personne/entreprise propriétaire de l'adresse e-mail. De plus, cet appel API semble être totalement sans limitation de débit et j'ai pu valider plus de 2 000 adresses e-mail en une minute lors de mes tests.
Le script est en réalité très basique et facile à utiliser. Vous créez un fichier des e-mails que vous souhaitez vérifier et le passez en argument au script. Ou vous pouvez fournir un fichier contenant uniquement des noms d'utilisateur et utiliser l'argument -s pour ajouter automatiquement un suffixe à chaque entrée :
Usage: UhOh365.py [-h] [-v] [-t THREADS] [-o OUTPUT] file
arguments positionnels :
file Fichier d'entrée contenant une adresse e-mail par ligne
arguments optionnels :
-h, --help affiche ce message d'aide et quitte
-v, --verbose Affiche chaque résultat comme valide/invalide. Par défaut, n'affiche que les valides
-s, --suffix Ajoute un suffixe de domaine à chaque ligne d'entrée du fichier (ex : contoso.com)
-t THREADS, --threads THREADS
Nombre de threads à utiliser. Par défaut 20
-o OUTPUT, --output OUTPUT
Fichier de sortie pour les e-mails valides uniquement
-n, --nossl Désactive la vérification SSL. Cela peut augmenter la vitesse si
nécessaire
-p PROXY, --proxy PROXY
Spécifiez un proxy pour exécuter ce script (ex : 'http://127.0.0.1:8080')
C'est en fait très simple à faire. Il s'avère que le point de terminaison API /autodiscover/autodiscover.json/v1.0/{EMAIL}?Protocol=Autodiscoverv1 renvoie différents codes de statut selon que l'e-mail existe dans o365 ou non. Un code de statut 200 signifie qu'il existe, un 302 signifie qu'il n'existe pas.
Si l'e-mail existe :

Si l'e-mail n'existe pas :

Remarque : cette requête ne nécessite aucun paramètre d'authentification ou d'identification et ne provoque pas de tentative de connexion sur le compte cible.
Chris King
@raikiasec