一个可以检查电子邮件地址在Office365中是否有效的脚本。此脚本不进行任何登录尝试,未受速率限制,对于社会工程学评估中查找哪些电子邮件存在、哪些不存在非常有用。
微软并不认为“电子邮件枚举”是一个漏洞,因此这利用了“特性”。还有其他几个公开的Office365电子邮件验证脚本,但据我所见,它们每个用户帐户至少需要1次登录尝试。这是可检测的,并且可能被视为轻量级暴力破解尝试(对多个帐户使用一个“常见”密码)。
此脚本允许零登录尝试的电子邮件验证,仅使用微软内置的Autodiscover API,因此对拥有电子邮件地址的个人/公司来说是不可见的。此外,此API调用似乎完全没有速率限制,我在测试中能够在1分钟内验证超过2,000个电子邮件地址。
该脚本实际上非常基本且易于使用。创建一个包含要验证有效性的电子邮件地址的文件,并将其作为参数传递给脚本。或者,您可以仅提供一个用户名的文件,并使用 -s 参数自动为每个条目添加后缀:
Usage: UhOh365.py [-h] [-v] [-t THREADS] [-o OUTPUT] file
positional arguments:
file 包含每行一个电子邮件地址的输入文件
optional arguments:
-h, --help 显示此帮助信息并退出
-v, --verbose 将每个结果显示为有效/无效。默认仅显示有效
-s, --suffix 为文件中的每行输入添加域后缀(例如:contoso.com)
-t THREADS, --threads THREADS
要运行的线程数。默认值为20
-o OUTPUT, --output OUTPUT
仅存储有效电子邮件的输出文件
-n, --nossl 关闭SSL验证。如果需要,可以提高速度
-p PROXY, --proxy PROXY
指定运行此脚本的代理(例如:'http://127.0.0.1:8080')
这实际上非常容易实现。原来/autodiscover/autodiscover.json/v1.0/{EMAIL}?Protocol=Autodiscoverv1 API 端点会根据电子邮件是否存在于Office365中返回不同的状态码。200状态码表示存在,302表示不存在。
如果电子邮件确实存在:

如果电子邮件不存在:

请注意,此请求无需任何认证或标识参数,并且不会对目标帐户发起登录尝试。
Chris King
@raikiasec