
Uno script che può verificare se un indirizzo email è valido in Office365 (enumerazione utenti/email). Non effettua tentativi di login, non ha limiti di velocità ed è incredibilmente utile per valutazioni di social engineering per trovare quali email esistono e quali no.
Uno script che può verificare se un indirizzo email è valido in Office365. Non esegue alcun tentativo di accesso, non è limitato e risulta estremamente utile per valutazioni di social engineering per scoprire quali email esistono e quali no.
Microsoft non considera la "enumerazione delle email" una vulnerabilità, quindi questo sfrutta una "funzionalità". Esistono un paio di altri script pubblici per la validazione delle email in Office365, ma tutti (per quanto ho visto) richiedono almeno un tentativo di accesso per account utente. Questo è rilevabile e può essere individuato come un leggero tentativo di brute force (1 password "comune" su più account).
Questo script consente la validazione delle email senza alcun tentativo di accesso e utilizza solo l'API Autodiscover integrata di Microsoft, quindi è invisibile alla persona/azienda che possiede l'indirizzo email. Inoltre, questa chiamata API sembra essere completamente non limitata e nei miei test sono riuscito a validare oltre 2.000 indirizzi email in un minuto.
Lo script è in realtà molto semplice e facile da usare. Crea un file con le email che vuoi verificare e passalo come argomento allo script. Oppure puoi fornire un file solo con i nomi utente e usare l'argomento -s per aggiungere automaticamente un suffisso a ogni voce:
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')
In realtà è molto semplice. L'endpoint API /autodiscover/autodiscover.json/v1.0/{EMAIL}?Protocol=Autodiscoverv1 restituisce diversi codici di stato a seconda che l'email esista in o365 o meno. Uno stato 200 significa che esiste, un 302 significa che non esiste.
Se l'email esiste:

Se l'email non esiste:

Nota che questa richiesta non richiede autenticazione né parametri identificativi e non provoca un tentativo di accesso sull'account di destinazione.
Chris King
@raikiasec