首页 科技内容详情
2022世界杯预选赛中国赛程(www.9cx.net):【手艺原创】ProxyShell行使剖析2——CVE-2021-34523

2022世界杯预选赛中国赛程(www.9cx.net):【手艺原创】ProxyShell行使剖析2——CVE-2021-34523

分类:科技

网址:

反馈错误: 联络客服

点击直达

新2手机管理端

www.22223388.com)实时更新发布最新最快的新2代理线路、新2会员线路、新2备用登录网址、新2手机管理端、新2手机版登录网址、新2皇冠登录网址。

,

0x00 前言

本文将要先容ProxyShell中第二个破绽的细节,剖析行使思绪。

0x01 简介

本文将要先容以下内容:

◼CommonAccessToken

◼Exchange PowerShell Remoting

◼行使剖析

0x02 CommonAccessToken

在上篇文章《ProxyShell行使剖析1——CVE-2021-34473》提到,我没有找到通过参数指定EWS认证用户的方式,然则对于Exchange PowerShell Remoting,可以通过传入CommonAccessToken指定认证用户,接见Exchange PowerShell Remoting

1.定位参数传入方式

使用dnsSpy打开文件C:\Program Files\Microsoft\Exchange Server\V15\Bin\Microsoft.Exchange.Configuration.RemotePowershellBackendCmdletProxyModule.dll

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

如下图


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

通报参数的方式可以参考下图


2.CommonAccessToken的天生

使用dnsSpy打开文件C:\Program Files\Microsoft\Exchange Server\V15\Bin\Microsoft.Exchange.Net.dll

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

如下图


在起始位置下断点

执行下令:


找到applicationPool:MSExchangePowerShellAppPool对应的历程pid

附加到该历程上,守候一段时间,能够捕捉到准确的名堂

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


查看该内存区域四周的内容,捕捉到了准确的名堂,如下图


经太过析,捕捉的内容结构如下:


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

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


经由现实测试,组织CommonAccessToken时,有以下技巧:

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

2022世界杯预选赛中国赛程www.9cx.net)实时更新比分2022世界杯预选赛中国赛程数据,2022世界杯预选赛中国赛程全程高清免费不卡顿,100%原生直播,2022世界杯预选赛中国赛程这里都有。给你一个完美的观赛体验。

◾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

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的权限:


列出所有用户是否具有接见remote PowerShell的权限:


列出具有接见remote PowerShell权限的用户:


删除指定用户的remote PowerShell接见权限:


开启指定用户的remote PowerShell接见权限:


若是想要执行治理Exchange服务器的下令,用户需要成为Organization Management组的成员

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


2.毗邻remote PowerShell的内置方式

Powershell示例下令如下:


该方式默认只能从域内主机提议毗邻,不支持从域外毗邻

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剧本

0x05 小结

对于ProxyShell中的第二个破绽CVE-2021-34523,连系行使思绪,不难猜出最简朴粗暴的防御方式:将"Organization Management"组内的用户清空,就可以防止攻击者执行高权限的Exchange Powershell下令。

本文为 3gstudent 原创稿件,授权嘶吼独家公布,

发布评论