日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【安全漏洞】ProxyShell利用分析2——CVE-2021-34523

發(fā)布時(shí)間:2025/3/21 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【安全漏洞】ProxyShell利用分析2——CVE-2021-34523 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

本文將要介紹ProxyShell中第二個(gè)漏洞的細(xì)節(jié),分析利用思路。

簡(jiǎn)介

本文將要介紹以下內(nèi)容:

?CommonAccessToken

?Exchange PowerShell Remoting

?利用分析

CommonAccessToken

在上篇文章《ProxyShell利用分析1——CVE-2021-34473》提到,我沒有找到通過參數(shù)指定EWS認(rèn)證用戶的方法,但是對(duì)于Exchange PowerShell Remoting,可以通過傳入CommonAccessToken指定認(rèn)證用戶,訪問Exchange PowerShell Remoting
【安全資料】

1.定位參數(shù)傳入方法

使用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作為參數(shù)傳入CommonAccessToken

傳遞參數(shù)的方式可以參考下圖


2.CommonAccessToken的生成

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

依次定位到Microsoft.Exchange.Security.Authorization -> CommonAccessToken -> Deserialize(Stream stream)【安全資料】

如下圖

在起始位置下斷點(diǎn)

執(zhí)行命令:

找到applicationPool:MSExchangePowerShellAppPool對(duì)應(yīng)的進(jìn)程pid

附加到該進(jìn)程上,等待一段時(shí)間,能夠捕獲到正確的格式

此時(shí),選中Locals中的binaryReader,依次按鼠標(biāo)右鍵 -> 選擇Show in Memory Window -> Memory 1,如下圖【安全資料】


查看該內(nèi)存區(qū)域附近的內(nèi)容,捕獲到了正確的格式,如下圖


對(duì)于認(rèn)證類型長(zhǎng)度,長(zhǎng)度為1字節(jié),字節(jié)序?yàn)閘ittle endian,內(nèi)容為認(rèn)證類型的字符串長(zhǎng)度,例如認(rèn)證類型為basic,那么認(rèn)證類型長(zhǎng)度為\x05【安全資料】

在Python代碼實(shí)現(xiàn)上,計(jì)算認(rèn)證類型長(zhǎng)度可以使用如下代碼:

經(jīng)過實(shí)際測(cè)試,構(gòu)造CommonAccessToken時(shí),有以下技巧:

?用戶名只要是合法用戶即可,可以使用默認(rèn)郵箱

?sid為關(guān)鍵內(nèi)容,代表認(rèn)證用戶的權(quán)限,如果需要認(rèn)證為管理員用戶Administrator,這里的格式為S-1-5-domain-500

?如果域環(huán)境禁用了管理員用戶administrator,仍然能夠認(rèn)證成功

?group sid只要是可用的即可,例如隨便指定一個(gè)S-1-1-0

關(guān)于sid的格式可以參考:

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

3.CommonAccessToken的驗(yàn)證

在以正確的方式傳入?yún)?shù)X-Rps-CAT,如果CommonAccessToken也有效,那么在訪問/Powershell時(shí)會(huì)返回狀態(tài)碼200【安全資料】

Exchange PowerShell Remoting

1.默認(rèn)設(shè)置下,所有域用戶都可以連接remote PowerShell

常用命令:

查看用戶是否具有訪問remote PowerShell的權(quán)限:

列出所有用戶是否具有訪問remote PowerShell的權(quán)限:

列出具有訪問remote PowerShell權(quán)限的用戶:

刪除指定用戶的remote PowerShell訪問權(quán)限:

開啟指定用戶的remote PowerShell訪問權(quán)限:

如果想要執(zhí)行管理Exchange服務(wù)器的命令,用戶需要成為Organization Management組的成員

查看Organization Management組成員的命令如下:

2.連接remote PowerShell的內(nèi)置方法

Powershell示例命令如下:【安全資料】


該方法默認(rèn)只能從域內(nèi)主機(jī)發(fā)起連接,不支持從域外連接

利用分析

1.CommonAccessToken的格式

用戶sid需要設(shè)置成Administrator,默認(rèn)為S-1-5-domain-500

這里可以選擇其他用戶的sid,但需要滿足用戶位于"Organization Management"組中

2.使用PyPSRP連接remote PowerShell的一個(gè)問題

使用PyPSRP執(zhí)行Powershell命令時(shí),無法執(zhí)行添加用戶的操作

這是因?yàn)閭鬟fPassword的值時(shí)需要執(zhí)行Powershell命令convertto-securestring,而convertto-securestring不是Exchange PowerShell Remoting支持的命令【安全資料】

如果選擇執(zhí)行Powershell腳本,由于默認(rèn)Powershell策略的限制,會(huì)提示無法執(zhí)行Powershell腳本

小結(jié)

對(duì)于ProxyShell中的第二個(gè)漏洞CVE-2021-34523,結(jié)合利用思路,不難猜出最簡(jiǎn)單粗暴的防御方法:將"Organization Management"組內(nèi)的用戶清空,就可以防止攻擊者執(zhí)行高權(quán)限的Exchange Powershell命令。

有學(xué)網(wǎng)安的朋友可以關(guān)注私信我哦!!!

總結(jié)

以上是生活随笔為你收集整理的【安全漏洞】ProxyShell利用分析2——CVE-2021-34523的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。