【技术原创】ProxyShell利用分析2——CVE-2021-34523

admin 2022年1月10日11:30:36安全文章评论27 views2671字阅读8分54秒阅读模式

【技术原创】ProxyShell利用分析2——CVE-2021-34523

【技术原创】ProxyShell利用分析2——CVE-2021-34523
0x00 前言

本文将要介绍ProxyShell中第二个漏洞的细节,分析利用思路。

【技术原创】ProxyShell利用分析2——CVE-2021-34523
0x01 简介

本文将要介绍以下内容:

◼CommonAccessToken

◼Exchange PowerShell Remoting

◼利用分析

【技术原创】ProxyShell利用分析2——CVE-2021-34523
0x02 CommonAccessToken

在上篇文章《ProxyShell利用分析1——CVE-2021-34473》提到,我没有找到通过参数指定EWS认证用户的方法,但是对于Exchange PowerShell Remoting,可以通过传入CommonAccessToken指定认证用户,访问Exchange PowerShell Remoting。

1.定位参数传入方法

使用dnsSpy打开文件C:Program FilesMicrosoftExchange ServerV15BinMicrosoft.Exchange.Configuration.RemotePowershellBackendCmdletProxyModule.dll。

依次定位到Microsoft.Exchange.Configuration.RemotePowershellBackendCmdletProxy -> RemotePowershellBackendCmdletProxyModule -> CommonAccessToken CommonAccessTokenFromUrl(string user, Uri requestURI, out Exception ex)。

如下图

【技术原创】ProxyShell利用分析2——CVE-2021-34523

可以看到,通过X-Rps-CAT作为参数传入CommonAccessToken。

传递参数的方式可以参考下图。

【技术原创】ProxyShell利用分析2——CVE-2021-34523

2.CommonAccessToken的生成

使用dnsSpy打开文件C:Program FilesMicrosoftExchange ServerV15BinMicrosoft.Exchange.Net.dll。

依次定位到Microsoft.Exchange.Security.Authorization -> CommonAccessToken -> Deserialize(Stream stream)。

如下图

【技术原创】ProxyShell利用分析2——CVE-2021-34523

在起始位置下断点。

执行命令:

【技术原创】ProxyShell利用分析2——CVE-2021-34523

找到applicationPool:MSExchangePowerShellAppPool对应的进程pid。

附加到该进程上,等待一段时间,能够捕获到正确的格式。

此时,选中Locals中的binaryReader,依次按鼠标右键 -> 选择Show in Memory Window -> Memory 1,如下图

【技术原创】ProxyShell利用分析2——CVE-2021-34523

查看该内存区域附近的内容,捕获到了正确的格式,如下图

【技术原创】ProxyShell利用分析2——CVE-2021-34523

经过分析,捕获的内容结构如下:

【技术原创】ProxyShell利用分析2——CVE-2021-34523

对于认证类型长度,长度为1字节,字节序为little endian,内容为认证类型的字符串长度,例如认证类型为basic,那么认证类型长度为x05。

在Python代码实现上,计算认证类型长度可以使用如下代码:

【技术原创】ProxyShell利用分析2——CVE-2021-34523

经过实际测试,构造CommonAccessToken时,有以下技巧:

◾用户名只要是合法用户即可,可以使用默认邮箱

◾sid为关键内容,代表认证用户的权限,如果需要认证为管理员用户Administrator,这里的格式为S-1-5-domain-500

◾如果域环境禁用了管理员用户administrator,仍然能够认证成功

◾group sid只要是可用的即可,例如随便指定一个S-1-1-0

关于sid的格式可以参考:

https://docs.microsoft.com/en-US/windows/security/identity-protection/access-control/security-identifiers

3.CommonAccessToken的验证

在以正确的方式传入参数X-Rps-CAT,如果CommonAccessToken也有效,那么在访问/Powershell时会返回状态码200。

【技术原创】ProxyShell利用分析2——CVE-2021-34523
0x03 Exchange PowerShell Remoting

参考资料:

https://docs.microsoft.com/en-us/powershell/module/exchange/?view=exchange-ps

在之前的文章《渗透基础——从Exchange服务器上搜索和导出邮件》介绍过Exchange PowerShell Remoting的相关用法,这里做一些补充。

1.默认设置下,所有域用户都可以连接remote PowerShell

常用命令:

查看用户是否具有访问remote PowerShell的权限:

【技术原创】ProxyShell利用分析2——CVE-2021-34523

列出所有用户是否具有访问remote PowerShell的权限:

【技术原创】ProxyShell利用分析2——CVE-2021-34523

列出具有访问remote PowerShell权限的用户:

【技术原创】ProxyShell利用分析2——CVE-2021-34523

删除指定用户的remote PowerShell访问权限:

【技术原创】ProxyShell利用分析2——CVE-2021-34523

开启指定用户的remote PowerShell访问权限:

【技术原创】ProxyShell利用分析2——CVE-2021-34523

如果想要执行管理Exchange服务器的命令,用户需要成为Organization Management组的成员。

查看Organization Management组成员的命令如下:

【技术原创】ProxyShell利用分析2——CVE-2021-34523

2.连接remote PowerShell的内置方法

Powershell示例命令如下:

【技术原创】ProxyShell利用分析2——CVE-2021-34523

该方法默认只能从域内主机发起连接,不支持从域外连接。

【技术原创】ProxyShell利用分析2——CVE-2021-34523
0x04 利用分析

1.CommonAccessToken的格式

用户sid需要设置成Administrator,默认为S-1-5-domain-500。

这里可以选择其他用户的sid,但需要满足用户位于"Organization Management"组中。

2.使用PyPSRP连接remote PowerShell的一个问题

使用PyPSRP执行Powershell命令时,无法执行添加用户的操作。

这是因为传递Password的值时需要执行Powershell命令convertto-securestring,而convertto-securestring不是Exchange PowerShell Remoting支持的命令。

如果选择执行Powershell脚本,由于默认Powershell策略的限制,会提示无法执行Powershell脚本。

【技术原创】ProxyShell利用分析2——CVE-2021-34523
0x05 小结

对于ProxyShell中的第二个漏洞CVE-2021-34523,结合利用思路,不难猜出最简单粗暴的防御方法:将"Organization Management"组内的用户清空,就可以防止攻击者执行高权限的Exchange Powershell命令。

【技术原创】ProxyShell利用分析2——CVE-2021-34523

【技术原创】ProxyShell利用分析2——CVE-2021-34523

本文始发于微信公众号(嘶吼专业版):【技术原创】ProxyShell利用分析2——CVE-2021-34523

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月10日11:30:36
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  【技术原创】ProxyShell利用分析2——CVE-2021-34523 http://cn-sec.com/archives/476729.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: