跳转到帖子
  • 游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

    赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

    TheHackerWorld官方

ProxyShell利用率分析


Tenfk

推荐的帖子

0x00 前言

Orange在今年的BlackHat演讲中介绍了Pwn2Own 2021上使用的微软Exchange攻击链,他分享的东西给了我很大的启发。

本文仅从技术研究的角度记录我对ProxyShell的研究细节,并分析利用的思路。

0x01 简介

本文将介绍以下内容:

调试环境建设

漏洞分析

利用理念

0x02 调试环境搭建

1.禁用Visual Studio中的调试优化

设置环境变量COMPLUS_ZapDisable=1

重启系统

2.查看Exchange中对应的进程

执行命令:

c:\ Windows \ System32 \ inetsrv \ app cmd list WP

您可以获得Exchange的所有进程和对应的pid,如下图所示。

2-1.png

3.使用dnSpy进行调试

打开相关的dll文件,在要调试的位置中断断点,并选择附加进程开始调试。

如果您不确定要调试的交换过程,您可以选择所有w3wp.exe。

0x03 漏洞调试

使用dnSpy打开文件c:\ program files \ Microsoft \ exchange server \ v15 \ frontend \ http proxy \ bin \ Microsoft.exchange.frontendhttpproxy.dll

导航到Microsoft . exchange . clients . OWA . core-Microsoft . exchange . http proxy。

关于SSRF漏洞(CVE-2021-34473)的漏洞原理,请参考以下文章:

https://Peter JSON . medium . com/reprinting-the-proxy shell-pwn2 own-exploit-49743 a4 ea9a 1

0x04 漏洞分析

1.判断漏洞是否存在

这里,使用橙色原文中给出的方法:

访问:3359/auto discover/auto discover . JSON?@foo.com/mapi/nspi/?email=auto discover/auto discover . JSON?@foo.com

如果漏洞存在,将返回以下结果:

如下图

2-2.png

许可是系统

url中的“/mapi/nspi”是Exchange服务器访问的最终地址。

“在网址里?email=auto discover/auto discover . JSON?@foo.com "作为参数,这是为了满足漏洞触发的条件。还可以将Cookie的内容设置为“email=auto discover/auto discover . JSON?”@foo.com”达到同样的效果。源代码如下

2-3.png

2.通过SSRF漏洞调用Exchange Web Service(EWS)

Exchange Web服务(EWS)对应于邮箱用户的电子邮件内容。关于EWS的使用,请参考之前的文章《Exchange Web Service(EWS)开发指南2——SOAP XML message》。通过发送XML请求,可以获得相应用户的邮件内容。

因为SSRF的默认权限是System,所以我们需要想办法模拟任意邮箱用户,才能读取对应用户的邮件内容。

经过一段时间的调试,我找不到通过参数指定EWS认证用户的方法,但是这里可以使用交换权限漏洞(CVE-2018-8581)中的窍门。通过在头中使用SerializedSecurityContext,指定SID可以实现身份伪装,从而以指定用户的身份调用EWS。

代码地址:

https://github . com/the zdi/PoC/blob/master/CVE-2018-8581/server http _ relay NTLM . py # L48-L64

标题格式如下:

'''受害者标识'''''受害者标识'''

为了获取用户的sid,我们可以使用Exchange SSRF漏洞(CVE-2021-26855)中的技术,通过访问/autodiscover/autodiscover.xml来获取legacyDn,并继续访问/mapi/emsmdb作为参数来获取用户对应的SID。

至此,整个利用链完成,流程如下:

1.请访问/autodiscover/autodiscover.xml以获取legacyDn。

2.访问/mapi/emsmdb以获取用户的相应sid

3.在标头中使用SerializedSecurityContext指定调用EWS的用户标识。

3.枚举邮箱用户列表

我在之前的文章《渗透技巧——获得Exchange GlobalAddressList的方法》中提到:“Exchange GlobalAddressList包含Exchange组织中所有邮箱用户的电子邮件地址。只要获得Exchange组织中任何邮箱用户的凭据,就可以通过GlobalAddressList导出其他邮箱用户的电子邮件地址。

也可以用在这里。我们只需要使用FindPeople操作,遍历并复制结果。

实现细节请参考之前的开源脚本:https://github . com/3g student/homework-of-python/blob/master/EWS manage . py。

4.默认邮箱用户

为了读取Exchange的全局地址列表,我们需要获取Exchange组织中任何邮箱用户的凭据。对应这个漏洞,我们只需要邮箱用户名。

默认情况下,Exchange中有以下四个用户:

系统邮箱{ bb 558 c 35-97 f1-4c B9-8ff 7-d 53741 DC 928 c }

系统邮箱{ e0dc 1c 29-89 C3-4034-b678-e6c 29d 823 ed 9 }

系统邮箱{ d0e 409 a 0-AF9B-4720-92FE-AAC 869 b 0d 201 }(汇2016 CU8及更高版本)

系统邮箱{ 2ce 34405-31BE-455d-89d 7-a7 C7 da 7a 0 DAA }(汇2016 CU8及更高版本)

参考资料:

https://份文件。微软。com/en-us/exchange/architecture/mailbox-servers/recreate-arbitration-mailbox?view=exchserver-2019

0x05 小结

CVE-2021-34473作为ProxyShell攻击链的基础,验证简单,危害巨大。站在防御的角度,建议用户尽快更新补丁。

留下回复

链接帖子
意见的链接
分享到其他网站

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    • 最近浏览   0位会员

      • 没有会员查看此页面。
    ×
    ×
    • 创建新的...