支持本站 — 捐款将帮助我们持续运营

目标:1000 元,已筹:752

75.2%

POC详情: 63a2df66e98fb5f3fcdfdf339777d2e2907b7a7b

来源
关联漏洞
标题:Microsoft Exchange Server 权限许可和访问控制问题漏洞 (CVE-2018-8581)
描述:Microsoft Exchange Server是美国微软(Microsoft)公司的一套电子邮件服务程序,它提供邮件存取、储存、转发,语音邮件,邮件过滤筛选等功能。 Microsoft Exchange Server中存在提权漏洞。攻击者可通过实施中间人攻击并发送身份验证请求利用该漏洞模拟Exchange server的其他任意账户。以下版本受到影响:Microsoft Exchange Server 2010,Exchange Server 2013,Exchange Server 2016,Exc
描述
CVE-2018-8581
介绍
## CVE-2018-8581

这是一个邮箱层面的横向渗透和提权漏洞

它可以在拥有了一个普通权限邮箱账号密码后,完成对其他用户(包括域管理员)邮箱收件箱的委托接管

本EXP脚本是在[原PoC](https://github.com/thezdi/PoC/tree/master/CVE-2018-8581)基础上修改的增强版一键脚本,它将在配置好相关参数后,自动完成目标邮箱inbox收件箱的添加委托和删除委托操作,以方便甲方安全部门和红队对授权企业完成一次模拟攻击过程

原PoC是两个脚本配合使用完成添加收信规则的操作,在甲方红队实际工作中不怎么实用,而原PoC除了需要邮箱外,还需要设置目标邮箱用户的SID,但在参考[文章](https://www.zerodayinitiative.com/blog/2018/12/19/an-insincere-form-of-flattery-impersonating-users-on-microsoft-exchange)中提到的获取用户SID的方法,我在实际环境中测试Exchange Server 2010和2013版本中均未成功复现(2010无相关操作选项,2013会提示无权限操作),最后我的思路是通过先完成一次反向委托来获取目标邮箱用户的SID再移除委托

### 如何使用

- 安装python-ntlm

  `pip install python-ntlm`

- 在脚本以下代码中进行相关参数配置

  ``` Python
  ...
  # 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/"
  ...
  ```

- 运行脚本,然后喝口枸杞茶,等待一分钟

  ![img1](http://imglf4.nosdn.127.net/img/TnVEN1Q3NkoyR0pyTisrVjdxbVBtQnJwRERHR3Z2NUNkSWFWcktaWWRWb3UweEJhRU5maDdBPT0.jpg?=imageView&thumbnail=500x0&quality=96&stripmeta=0&type=jpg%7Cwatermark&type=2)

- 此时已成功将TARGET_EMAIL的inbox收件箱委托给CONTROLLED_EMAIL

- 在owa或者outlook中查看目标邮箱收件箱

  ![img2](http://imglf3.nosdn.127.net/img/TnVEN1Q3NkoyR0pyTisrVjdxbVBtSXRMV1c0Ni9aN0p1cUh5dEEzSzgvcVg1WXJHeEE4TjN3PT0.jpg?=imageView&thumbnail=500x0&quality=96&stripmeta=0&type=jpg%7Cwatermark&type=2)

- 将FLAG改为0,再次运行脚本,然后再次喝口枸杞茶,再次等待一分钟,即可移除之前添加的委托

  ![img3](http://imglf3.nosdn.127.net/img/TnVEN1Q3NkoyR0pyTisrVjdxbVBtQWc1cnZKRTZkT3ZqRDZxakFKNTA5bDd1c3JtVStPMllnPT0.jpg?=imageView&thumbnail=500x0&quality=96&stripmeta=0&type=jpg%7Cwatermark&type=2)

- 已无权限再次访问

### 测试环境

- Python 2.7.14

- Exchange Server 2010 SP2

- Exchange Server 2013

### 更多

  更多EWS SOAP API请求可以在make_relay_body()函数内修改

### 说明

  脚本仅供学习交流使用,请使用者遵守当地相关法律,如作他用所承受的法律责任一概与作者无关,下载使用即代表使用者同意上述观点
文件快照

[4.0K] /data/pocs/63a2df66e98fb5f3fcdfdf339777d2e2907b7a7b ├── [ 15K] CVE-2018-8581_debug.py ├── [ 14K] CVE-2018-8581.py └── [3.4K] README.md 0 directories, 3 files
神龙机器人已为您缓存
备注
    1. 建议优先通过来源进行访问。
    2. 如果因为来源失效或无法访问,请发送邮箱到 f.jinxu#gmail.com 索取本地快照(把 # 换成 @)。
    3. 神龙已为您对POC代码进行快照,为了长期维护,请考虑为本地POC付费,感谢您的支持。