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

admin 2022年1月3日04:01:24安全新闻评论40 views2355字阅读7分51秒阅读模式

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

【技术原创】vSphere开发指南6——vCenter SAML Certificates
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

本文将要在学习资料的基础上,完善代码,增加通用性,结合利用思路给出防御建议。

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

本文将要介绍以下内容:

◼方法复现

◼脚本优化

◼利用思路

◼防御建议

【技术原创】vSphere开发指南6——vCenter SAML Certificates
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

成功以管理员身份登录管理面板

【技术原创】vSphere开发指南6——vCenter SAML Certificates
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中获得

【技术原创】vSphere开发指南6——vCenter SAML Certificates
0x04 利用思路

1.从vCenter本地管理员权限到VCSA管理面板的管理员访问权限

前提:通过漏洞获得了vCenter本地管理员权限

利用效果:

获得VCSA管理面板的管理员访问权限,能够同vCenter可管理的虚拟机进行交互

注:

此时还可以通过《vSphere开发指南5——LDAP》中介绍的方法通过LDAP数据库添加管理员用户,进而同vCenter可管理的虚拟机进行交互

2.从vCenter备份文件中得到data.mdb

前提:需要获得正确的data.mdb文件

利用效果:

获得VCSA管理面板的管理员访问权限,能够同vCenter可管理的虚拟机进行交互

【技术原创】vSphere开发指南6——vCenter SAML Certificates
0x05 防御建议

1.更新补丁,避免攻击者获得vCenter本地管理员权限

2.避免在用的vCenter备份文件泄露

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

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

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

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

原文始发于微信公众号(嘶吼专业版):【技术原创】vSphere开发指南6——vCenter SAML Certificates

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月3日04:01:24
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  【技术原创】vSphere开发指南6——vCenter SAML Certificates http://cn-sec.com/archives/716447.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: