【技术原创】vSphere开发指南6——vCenter SAML Certificates - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

【技术原创】vSphere开发指南6——vCenter SAML Certificates

3gstudent 技术 2022-01-03 11:45:00
223797
收藏

导语:本文介绍了vcenter_saml_login的优化思路,增加通用性,结合利用思路给出防御建议。

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:

apt install python3-openssl

1.从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 -t 192.168.1.1 -p data.mdb

命令行返回结果:

JSESSIONID=XX533CDFA344DE842517C943A1AC7611

3.登录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的优化思路,增加通用性,结合利用思路给出防御建议。

如若转载,请注明原文地址
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2022 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务