本文由网友 无名翻译自”https://pentestlab.blog/2019/09/16/microsoft-exchange-privilege-escalation/“
------------------------
在红队操作期间收集域用户的凭据可能导致执行任意代码,持久把控和域控制权限升级。但是,电子邮件存储的信息对组织来说可能是高度敏感的,因此攻击者可能会关注电子邮件中的数据。这可以通过向目标用户的邮箱添加规则来实现,该规则将电子邮件转发到攻击者控制的收件箱,或者将邮箱的访问权委托给他们的Exchange帐户。
Zero Day Initiative的Dustin Childs在Microsoft Exchange中发现了一个漏洞,可能允许攻击者冒充目标帐户。存在此漏洞是因为Microsoft Exchange的设计允许任何用户指定推送订阅的URL,Exchange将向此URL发送通知。NTLM哈希值也可能会被泄露,泄漏的NTLM哈希值可用于通过NTLM中继与Exchange Web服务进行身份验证。
1. 邮件转发
从Outlook Web Access(OWA)门户访问被盗帐户
创建一个新的文件夹,选择新文件夹菜单中的的“权限(Permissions)”选项
2. 收件箱权限
这时我们添加目标帐户以拥有邮箱的权限。这是检索帐户的SID(安全标识符,是标识用户、组和计算机帐户的唯一的号码)的必要条件
3. 添加目标帐户的权限
打开浏览器的开发者工具(F12),选中Netwoek(网络)。然后在页面上浏览新建文件夹菜单,选择“权限(Permissions)选项”
POST请求到Microsoft Exchange
检查http请求的响应,来显示管理员用户的SID。(检查第一个
servjice.svc?action=Getfolder
请求响应。查看的方法
Body->ResponseMessages->Items->0->Foldere->0->Permissionser->permissions->N->UserId->SID
最好进行全部的检查以找到正确的哪一个,PrimarySmtpAddress是最理想的哪一个被受害者,如果请求中不包含PrimarySmtpAddress,则需要我们去检查另一个
servjice.svc?action=Getfolder
请求)
3. 管理员SID
如果我们要进行攻击,就需要从GitHub储存库中下载两个Python脚本https://github.com/thezdi/PoC/tree/master/CVE-2018-8581
4. Python脚本
serverHTTP_relayNTLM.py脚本使用我们获取的SID来冒充受害者,同时我们还需要选择允许Exchange Server 通信的端口,例如8080。
配置serverHTTP_relayNTLM脚本
接下来我们可以启动中继服务了。
python serverHTTP_relayNTLM.py
5. 中继服务器
设置脚本Exch_EWS_pushSubscribe.py中的变量
6. 推送订阅脚本配置
执行脚本将尝试通过EWS(Exchange Web服务)将pushSubscribe请求发送到Exchange。
python Exch_EWS_pushSubscribe.py
pushSubscribe python脚本
响应信息
XML Reponse
管理员的NTLM哈希将会被中转回Microsoft Exchange服务器
中转管理员NTLM
7. 中继管理员NTLM到Exchange
Email将会被发送目标账户(管理员)的邮箱之中,将自动的转发到目标账号
电邮至目标帐户
电子邮件将会在红队的账户中转发
电子邮件自动转发
通过NTLM中继对Exchange进行身份验证,为目标用户创建一条规则,该规则会将所有的电子邮件转发到另一个收件邮箱之中。因此可以通过检查目标用户的收件箱规则来进行验证
规则 - 转发管理员电子邮件
委托访问
如果Microsoft Exchange用户具有分配的必要权限,则可以将账户连接到其他的邮箱,如果尝试直接去打开没有权限的另一个账户的邮箱就会产生以下的错误。
打开另一个邮箱 - 没有权限
有一个利用相同漏洞的Python脚本,但是不添加转发的规则,而是为该账户分配权限,以访问域中的任何邮箱(包括管理员)该脚本需要有效的凭据,Exchange服务器的ip地址和目标电子邮件。
image.jpeg
脚本配置
执行Python脚本尝试执行提升
image.jpeg
特权升级脚本
在脚本执行完成之后,会显示一条消息来通知用户Outlook或者Outlook Web Access门户显示目标账户的邮箱
权限提升脚本 - 委派完成
只有通过Outlook Web Access的身份验证之后,才可以查看委派邮箱
Outlook Web Access身份验证
Outlook Web Access具有允许Exchange用户在拥有权限的情况下打开另一个账户的邮箱
打开另一个邮箱,在屏幕上将会出现以下窗口
打开另一个邮箱窗口,理员的邮箱将在另一个页面中打开,等待确认权限的提升
------------------------------------