xfeng

xfeng

Sporting | Reading | Technology | Recording
github
bilibili

CVE 2021-42278-42287-域內提權

看到網上有人公開了 CVE-2021-42287/CVE-2021-42278 權限提升漏洞的 EXP,本着學習的目的找了相關資料去研究。

該提權漏洞可以將域內的普通用戶提升到域管權限,雖然需要一定條件,但危害還是很嚴重的。

由於當前對於這個漏洞的資料不是很系統和自己的理解不是很透徹,所以下文的分析不一定很準確。

1. 漏洞原理#

在了解該漏洞原理之前,需要先理解 Kerberos 協議的原理。

簡單的理解就是:

Kerberos 協議分為三步

認證步驟認證過程認證結果
AS 認證ASREQ & ASREP獲得 TGT 認購權證
TGS 認證TGSREQ & TGSREP獲得 ST 服務票據
TGS 認證AP-REQ & AP-REP客戶端將與伺服器建立連接

認證流程圖如下:

image

CVE-2021-42278:

機器用戶的帳號形式是在帳號名後面加上$,因為 DC 沒有驗證機器用戶的帳號末尾是否有$,所以機器用戶名被當作普通用戶來執行操作。

CVE-2021-42287:

與普通用戶在獲取 TGT 時,通過另一個用戶去請求自己的 ST,然後將 TGT 發送給 KDC,因為 TGT 是用另一個用戶的信息來獲取的,所以 KDC 在數據庫中找不到與之匹配的用戶信息,然後 KDC 去尋找機器用戶的 ST,最後獲得了機器用戶的權限。

1.1 漏洞過程:#

  • 利用域普通用戶新增機器帳號(域用戶默認可以新增機器帳號)
  • 清除機器帳號 SPN,更改機器名為域控名,並去除末尾的 $
  • 以新增的機器帳號向域控發起 Kerberos 請求認證獲取 TGT(票據授權票據,票據的票據)
  • 刪除機器帳號,用獲取到 TGT 請求 ldap 管理員服務權限的 ST(Server Ticket)
  • 域控解密 TGT 獲取 PAC(Privilege Attribute Certificate),發現請求的是 ldap 管理員服務權限,並用 ldap 伺服器管理員的 HASH 去加密 ST
  • ldap 伺服器管理員用自身 HASH 解密出 PAC
  • 通過 PAC 獲取請求用戶和被請求用戶的信息,判斷用戶是否有訪問服務的權限
  • 這個判斷過程需要請求域控,域控首先去數據庫(活動目錄)搜索請求方的相關信息,因為去除了$,所以會被當作域用戶去搜索,當搜索不到信息時,會去搜索機器帳號信息,然後在末尾加上$
  • 這個時候,域控得到的信息是:域控機器想去請求 ldap 管理員服務,通過請求,這樣只要請求域控就能獲取域控權限

1.2 漏洞條件:#

  • 低權限域帳戶可以創建和修改機器帳戶
  • 在 AP_REP 的時候 (而非 TGS_REP) 在搜索不到用戶的時候,去搜索機器用戶,並在之後添加了 $
  • 域控允許委派攻擊
  • DC 未打補丁 KB5008380 或 KB5008602

2. 影響版本#

CVE-2021-42278
○ Windows Server 2012 R2
○ Windows Server 2012 (Server Core installation)
○ Windows Server 2012
○ Windows Server 2008 R2 for x64-based Systems Service Pack 1(Server Core installation)
○ Windows Server 2008 R2 for x64-based Systems Service Pack 1
○ Windows Server 2008 for x64-based Systems Service Pack 2(Server Core installation)
○ Windows Server 2008 for x64-based Systems Service Pack 2
○ Windows Server 2008 for 32-bit Systems Service Pack 2(Server Core installation)
○ Windows Server 2008 for 32-bit Systems Service Pack 2
○ Windows Server 2016 (Server Core installation)
○ Windows Server 2016
○ Windows Server, version 20H2 (Server Core Installation)
○ Windows Server, version 2004 (Server Core installation)
○ Windows Server 2022 (Server Core installation)
○ Windows Server 2019 (Server Core installation)
○ Windows Server 2022
○ Windows Server 2019
○ Windows Server 2012 R2 (Server Core installation)
CVE-2021-42287
○ Windows Server 2012 R2 (Server Core installation)
○ Windows Server 2012 R2
○ Windows Server 2012 (Server Core installation)
○ Windows Server 2008 R2 for x64-based Systems Service Pack 1(Server Core installation)
○ Windows Server 2012
○ Windows Server 2008 R2 for x64-based Systems Service Pack 1
○ Windows Server 2008 for x64-based Systems Service Pack 2(Server Core installation)
○ Windows Server 2008 for x64-based Systems Service Pack 2
○ Windows Server 2008 for 32-bit Systems Service Pack 2(Server Core installation)
○ Windows Server 2008 for 32-bit Systems Service Pack 2
○ Windows Server 2016 (Server Core installation)
○ Windows Server 2016
○ Windows Server, version 20H2 (Server Core Installation)
○ Windows Server, version 2004 (Server Core installation)
○ Windows Server 2022 (Server Core installation)
○ Windows Server 2022
○ Windows Server 2019 (Server Core installation)
○ Windows Server 2019

3. 漏洞復現#

工具:

3.1 掃描探測#

noPac.exe scan -domain redteam.club -user xfeng -pass 123456

3.2 直接利用(noPac.exe)#

noPac.exe -domain redteam.club -user test -pass pass@123 /dc ad02.redteam.club /mAccount test123 /mPassword feng /service cifs /ptt

dir \\ad01.redteam.club\c$
psexec.exe \\ad01.redteam.club cmd.exe

4. 漏洞修復#

微軟已經發布了安全補丁,具體可以查看鏈接

檢查自己版本的 Windows 是否安裝了對應的安全補丁

image

5. 參考文章#

https://exploit.ph/cve-2021-42287-cve-2021-42278-weaponisation.html

https://www.thehacker.recipes/ad/movement/kerberos/samaccountname-spoofing

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。