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的優化思路,增加通用性,結合利用思路給出防禦建議。