vSphere 开发指南6——vCenter SAML Certificates

发布于 2024-12-25 18:35:31 字数 4113 浏览 12 评论 0

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

幸福还没到

暂无简介

文章
评论
27 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文