
سكربت يمكنه التحقق من صلاحية عنوان بريد إلكتروني في Office365 (تعداد المستخدمين/البريد الإلكتروني). لا يقوم هذا السكربت بأي محاولات تسجيل دخول، وهو غير محدود السرعة، ومفيد للغاية في تقييمات الهندسة الاجتماعية لمعرفة أي عناوين البريد الإلكتروني موجودة وأيها غير موجود.
سكريبت يمكنه التحقق من صلاحية عنوان بريد إلكتروني في Office365. لا يقوم هذا السكريبت بأي محاولات تسجيل دخول، ولا يوجد به حد للسرعة، وهو مفيد جدًا لتقييمات الهندسة الاجتماعية لمعرفة عناوين البريد الإلكتروني الموجودة وغير الموجودة.
مايكروسوفت لا تعتبر "التعداد الإلكتروني" ثغرة أمنية، لذا فإن هذا يستغل "ميزة". هناك بعض السكريبتات العامة الأخرى للتحقق من صحة البريد الإلكتروني في Office365، لكنها جميعًا (حسب ما رأيت) تتطلب محاولة تسجيل دخول واحدة على الأقل لكل حساب مستخدم. وهذا يمكن اكتشافه ويمكن اعتباره محاولة تخمين خفيفة (كلمة مرور واحدة "شائعة" عبر حسابات متعددة).
يتيح هذا السكريبت التحقق من صحة البريد الإلكتروني مع صفر محاولات تسجيل دخول ويستخدم فقط واجهة Autodiscover المدمجة من مايكروسوفت، لذلك فهو غير مرئي للشخص/الشركة التي تملك عنوان البريد الإلكتروني. علاوة على ذلك، يبدو أن استدعاء واجهة البرمجة هذا غير مقيد بالسرعة تمامًا وتمكنت من التحقق من أكثر من 2,000 عنوان بريد إلكتروني خلال دقيقة واحدة في اختباراتي.
السكريبت بسيط جدًا وسهل الاستخدام. تقوم بإنشاء ملف يحتوي على عناوين البريد الإلكتروني التي تريد التحقق من صحتها وتمريره كوسيط للسكريبت. أو يمكنك توفير ملف بأسماء المستخدمين فقط مع استخدام الوسيط -s لإضافة لاحقة تلقائيًا لكل إدخال:
Usage: UhOh365.py [-h] [-v] [-t THREADS] [-o OUTPUT] file
positional arguments:
file Input file containing one email per line
optional arguments:
-h, --help show this help message and exit
-v, --verbose Display each result as valid/invalid. By default only displays valid
-s, --suffix Add a domain suffix to every input line from file (e.g: contoso.com)
-t THREADS, --threads THREADS
Number of threads to run with. Default is 20
-o OUTPUT, --output OUTPUT
Output file for valid emails only
-n, --nossl Turn off SSL verification. This can increase speed if
needed
-p PROXY, --proxy PROXY
Specify a proxy to run this through (eg: 'http://127.0.0.1:8080')
هذا في الواقع شيء سهل جدًا. تبين أن نقطة نهاية واجهة البرمجة /autodiscover/autodiscover.json/v1.0/{EMAIL}?Protocol=Autodiscoverv1 ترجع رموز حالة مختلفة بناءً على وجود البريد الإلكتروني في o365 أم لا. رمز الحالة 200 يعني وجوده، و302 يعني عدم وجوده.
إذا كان البريد الإلكتروني موجودًا:

إذا كان البريد الإلكتروني غير موجود:

لاحظ أن هذا الطلب لا يتطلب أي مصادقة أو معلمات تعريفية ولا يسبب محاولة تسجيل دخول على الحساب المستهدف.
Chris King
@raikiasec