Jump to content

0x00 前言我最近學到的一個利用方法:在vCenter上使用管理員權限,從/storage/db/vmware-vmdir/data.mdb提取IdP證書,為管理員用戶創建SAML請求,最後使用vCenter server進行身份驗證並獲得有效的管理員cookie。

直觀理解:從vCenter本地管理員權限到VCSA管理面板的管理員訪問權限。

學習資料:

https://www.horizon3.ai/compromising-vcenter-via-saml-certificates/

https://github.com/horizon3ai/vcenter_saml_login

本文將要在學習資料的基礎上,完善代碼,增加通用性,結合利用思路給出防禦建議。

0x01 簡介本文將要介紹以下內容:

方法復現

腳本優化

利用思路

防禦建議

0x02 方法復現在Kali系統下進行測試

安裝Openssl:

aptinstallpython3-openssl1.從vCenter獲得數據庫文件路徑:/storage/db/vmware-vmdir/data.mdb

需要vCenter管理員權限

2.運行腳本下載地址:

https://github.com/horizon3ai/vcenter_saml_login/blob/main/vcenter_saml_login.py

命令參數示例:

python3./vcenter_saml_login.py-t192.168.1.1-pdata.mdb命令行返回結果:

JSESSIONID=XX533CDFA344DE842517C943A1AC76113.登錄VCSA管理面板訪問https://192.168.1.1/ui

設置Cookie: JSESSIONID=XX533CDFA344DE842517C943A1AC7611

成功以管理員身份登錄管理面板

0x03 腳本優化通常data.mdb的大小至少為20MB

為了減少交互流量,選擇將vcenter_saml_login.py修改成能夠直接在vCenter下使用

注:

vCenter默認安裝Python

在腳本修改上具體需要考慮以下問題:

1.去掉引用第三方包bitstring我採用的方式是將第三方包bitstring的內容進行精簡,直接插入到Python腳本中

2.避免使用f-字符串格式化Python3.6新增了一種f-字符串格式化

vCenter 6.7的版本為Python 3.5.6,不支持格式化的字符串文字前綴為”f”

我採用的方式是使用format實現格式化字符串

例如:

cn=stream.read(f'bytes:{cn_len}').decode()替換為:

cn=stream.read('bytes:{}'.format(cn_len)).decode()完整代碼已上傳至Github,地址如下:

https://github.com/3gstudent/Homework-of-Python/blob/master/vCenter_ExtraCertFromMdb.py

vCenter_ExtraCertFromMdb.py可上傳至vCenter後直接執行,執行後會得到以下四個重要的參數:

domain,在命令行顯示

idp_cert,保存為idp_cert.txt

trusted_cert_1,保存為trusted_cert_1.txt

trusted_cert_2,保存為trusted_cert_2.txt

接下來,可在任意主機上為管理員用戶創建SAML請求,使用vCenter server進行身份驗證並獲得有效的管理員cookie,完整代碼已上傳至Github,地址如下:

https://github.com/3gstudent/Homework-of-Python/blob/master/vCenter_GenerateLoginCookie.py

參數說明如下:

target: VCSA管理面板的URL

hostname: 對應VCSA管理面板的證書Subject屬性中的CN

domain: 可以使用vCenter_ExtraCertFromMdb.py從data.mdb中獲得

idp_cert path: 可以使用vCenter_ExtraCertFromMdb.py從data.mdb中獲得

trusted_cert_1 path: 可以使用vCenter_ExtraCertFromMdb.py從data.mdb中獲得

trusted_cert_2 path: 可以使用vCenter_ExtraCertFromMdb.py從data.mdb中獲得

0x04 利用思路1.從vCenter本地管理員權限到VCSA管理面板的管理員訪問權限前提:通過漏洞獲得了vCenter本地管理員權限

利用效果:

獲得VCSA管理面板的管理員訪問權限,能夠同vCenter可管理的虛擬機進行交互

注:

此時還可以通過《vSphere开发指南5——LDAP》 中介紹的方法通過LDAP數據庫添加管理員用戶,進而同vCenter可管理的虛擬機進行交互

2.從vCenter備份文件中得到data.mdb前提:需要獲得正確的data.mdb文件

利用效果:

獲得VCSA管理面板的管理員訪問權限,能夠同vCenter可管理的虛擬機進行交互

0x05 防禦建議1.更新補丁,避免攻擊者獲得vCenter本地管理員權限

2.避免在用的vCenter備份文件洩露

0x06 小結本文介紹了vcenter_saml_login的優化思路,增加通用性,結合利用思路給出防禦建議。

0 Comments

Recommended Comments

There are no comments to display.

Guest
Add a comment...