mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/linux-hardening/privilege-escalation/vmware-tools-servi
This commit is contained in:
parent
90c60955a2
commit
25c361d411
@ -110,6 +110,7 @@
|
|||||||
- [Checklist - Linux Privilege Escalation](linux-hardening/linux-privilege-escalation-checklist.md)
|
- [Checklist - Linux Privilege Escalation](linux-hardening/linux-privilege-escalation-checklist.md)
|
||||||
- [Linux Privilege Escalation](linux-hardening/privilege-escalation/README.md)
|
- [Linux Privilege Escalation](linux-hardening/privilege-escalation/README.md)
|
||||||
- [Android Rooting Frameworks Manager Auth Bypass Syscall Hook](linux-hardening/privilege-escalation/android-rooting-frameworks-manager-auth-bypass-syscall-hook.md)
|
- [Android Rooting Frameworks Manager Auth Bypass Syscall Hook](linux-hardening/privilege-escalation/android-rooting-frameworks-manager-auth-bypass-syscall-hook.md)
|
||||||
|
- [Vmware Tools Service Discovery Untrusted Search Path Cve 2025 41244](linux-hardening/privilege-escalation/vmware-tools-service-discovery-untrusted-search-path-cve-2025-41244.md)
|
||||||
- [Arbitrary File Write to Root](linux-hardening/privilege-escalation/write-to-root.md)
|
- [Arbitrary File Write to Root](linux-hardening/privilege-escalation/write-to-root.md)
|
||||||
- [Cisco - vmanage](linux-hardening/privilege-escalation/cisco-vmanage.md)
|
- [Cisco - vmanage](linux-hardening/privilege-escalation/cisco-vmanage.md)
|
||||||
- [Containerd (ctr) Privilege Escalation](linux-hardening/privilege-escalation/containerd-ctr-privilege-escalation.md)
|
- [Containerd (ctr) Privilege Escalation](linux-hardening/privilege-escalation/containerd-ctr-privilege-escalation.md)
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,146 @@
|
|||||||
|
# VMware Tools service discovery LPE (CWE-426) via regex-based binary discovery (CVE-2025-41244)
|
||||||
|
|
||||||
|
{{#include ../../banners/hacktricks-training.md}}
|
||||||
|
|
||||||
|
Hierdie tegniek misbruik regex-gedrewe service discovery-pipelines wat hardlopende prosesopdraglyne ontleed om diensweergawes af te lei en daarna 'n kandidaat-binary met 'n "version"-vlag uitvoer. Wanneer toegewingpatrone onbetroubare, deur 'n aanvaller beheerde paaie aanvaar (bv. /tmp/httpd), voer die bevoorregte versamelaar 'n ewekansige binary uit vanaf 'n onbetroubare ligging, wat local privilege escalation tot gevolg het. NVISO het dit gedokumenteer in VMware Tools/Aria Operations Service Discovery as CVE-2025-41244.
|
||||||
|
|
||||||
|
- Impak: Local privilege escalation to root (or to the privileged discovery account)
|
||||||
|
- Oorsaak: Untrusted Search Path (CWE-426) + permissive regex matching of process command lines
|
||||||
|
- Getroffen: open-vm-tools/VMware Tools on Linux (credential-less discovery), VMware Aria Operations SDMP (credential-based discovery via Tools/proxy)
|
||||||
|
|
||||||
|
## Hoe VMware service discovery werk (hoë vlak)
|
||||||
|
|
||||||
|
- Credential-based (legacy): Aria voer discovery-skripte binne die guest uit via VMware Tools met geconfigureerde bevoorregte credentials.
|
||||||
|
- Credential-less (modern): Discovery-logika loop binne VMware Tools en het reeds bevoorregte regte in die guest.
|
||||||
|
|
||||||
|
Albei modusse voer uiteindelik shell-logika uit wat prosesse met luisterende sokkette skandeer, 'n pasende opdragpad via 'n regex uithaal, en die eerste argv-token met 'n version-vlag uitvoer.
|
||||||
|
|
||||||
|
## Hoofrede en kwesbare patroon (open-vm-tools)
|
||||||
|
|
||||||
|
In open-vm-tools stem die serviceDiscovery-plugin script get-versions.sh kandidaat-binaries aan deur breë regular expressions te gebruik en voer die eerste token uit sonder enige trusted-path-validasie:
|
||||||
|
```bash
|
||||||
|
get_version() {
|
||||||
|
PATTERN=$1
|
||||||
|
VERSION_OPTION=$2
|
||||||
|
for p in $space_separated_pids
|
||||||
|
do
|
||||||
|
COMMAND=$(get_command_line $p | grep -Eo "$PATTERN")
|
||||||
|
[ ! -z "$COMMAND" ] && echo VERSIONSTART "$p" "$("${COMMAND%%[[:space:]]*}" $VERSION_OPTION 2>&1)" VERSIONEND
|
||||||
|
done
|
||||||
|
}
|
||||||
|
```
|
||||||
|
Dit word aangeroep met permissiewe patrone wat \S (nie-witspasie) bevat en sal maklik nie-stelselpaadjies in gebruikersskryfbare liggings pas:
|
||||||
|
```bash
|
||||||
|
get_version "/\S+/(httpd-prefork|httpd|httpd2-prefork)($|\s)" -v
|
||||||
|
get_version "/usr/(bin|sbin)/apache\S*" -v
|
||||||
|
get_version "/\S+/mysqld($|\s)" -V
|
||||||
|
get_version "\.?/\S*nginx($|\s)" -v
|
||||||
|
get_version "/\S+/srm/bin/vmware-dr($|\s)" --version
|
||||||
|
get_version "/\S+/dataserver($|\s)" -v
|
||||||
|
```
|
||||||
|
- Uittrekking gebruik grep -Eo en neem die eerste token: ${COMMAND%%[[:space:]]*}
|
||||||
|
- Geen whitelist/allowlist van vertroude stelselpaaie nie; enige ontdekte listener met 'n ooreenstemmende naam word uitgevoer met -v/--version
|
||||||
|
|
||||||
|
Dit skep 'n untrusted search path execution primitive: ewekansige binaries wat in world-writable gidsies geleë is (bv. /tmp/httpd) word deur 'n geprivilegieerde komponent uitgevoer.
|
||||||
|
|
||||||
|
## Exploitation (both credential-less and credential-based modes)
|
||||||
|
|
||||||
|
Voorvereistes
|
||||||
|
- Jy kan 'n ongeprivilegieerde proses laat loop wat 'n listening socket op die guest oopmaak.
|
||||||
|
- Die discovery job is geaktiveer en loop periodiek (tipies elke ~5 minute).
|
||||||
|
|
||||||
|
Stappe
|
||||||
|
1) Plaas 'n binary in 'n pad wat ooreenstem met een van die permissiewe regexes, bv. /tmp/httpd of ./nginx
|
||||||
|
2) Laat dit loop as 'n laag-privilegieerde gebruiker en maak seker dit open enige listening socket
|
||||||
|
3) Wag vir die discovery-siklus; die privileged collector sal outomaties uitvoer: /tmp/httpd -v (of soortgelyk), wat jou program as root uitvoer
|
||||||
|
|
||||||
|
Minimale demo (met NVISO se benadering)
|
||||||
|
```bash
|
||||||
|
# Build any small helper that:
|
||||||
|
# - default mode: opens a dummy TCP listener
|
||||||
|
# - when called with -v/--version: performs the privileged action (e.g., connect to an abstract UNIX socket and spawn /bin/sh -i)
|
||||||
|
# Example staging and trigger
|
||||||
|
cp your_helper /tmp/httpd
|
||||||
|
chmod +x /tmp/httpd
|
||||||
|
/tmp/httpd # run as low-priv user and wait for the cycle
|
||||||
|
# After the next cycle, expect a root shell or your privileged action
|
||||||
|
```
|
||||||
|
Tipiese prosesafstamming
|
||||||
|
- Credential-based: /usr/bin/vmtoolsd -> /bin/sh /tmp/VMware-SDMP-Scripts-.../script_...sh -> /tmp/httpd -v -> /bin/sh -i
|
||||||
|
- Credential-less: /bin/sh .../get-versions.sh -> /tmp/httpd -v -> /bin/sh -i
|
||||||
|
|
||||||
|
Artefakte (credential-based)
|
||||||
|
Herstelde SDMP wrapper scripts onder /tmp/VMware-SDMP-Scripts-{UUID}/ kan direkte uitvoering van die rogue path toon:
|
||||||
|
```bash
|
||||||
|
/tmp/httpd -v >"/tmp/VMware-SDMP-Scripts-{UUID}/script_-{ID}_0.stdout" 2>"/tmp/VMware-SDMP-Scripts-{UUID}/script_-{ID}_0.stderr"
|
||||||
|
```
|
||||||
|
## Algemeneer die tegniek: regex-gedrewe ontdekkingmisbruik (draagbare patroon)
|
||||||
|
|
||||||
|
Baie agents en monitoring-suites implementeer weergawe-/diensontdekking deur:
|
||||||
|
- Opsomming van prosesse met luisterende sockets
|
||||||
|
- Grepping argv/command lines met permissiewe regexes (bv. patrone wat \S bevat)
|
||||||
|
- Die gematchte pad uit te voer met 'n goedaardige vlag soos -v, --version, -V, -h
|
||||||
|
|
||||||
|
As die regex onbetroubare paadjies aanvaar en die pad vanaf 'n geprivilegieerde konteks uitgevoer word, kry jy CWE-426 Untrusted Search Path-uitvoering.
|
||||||
|
|
||||||
|
Abuse recipe
|
||||||
|
- Gee jou binary 'n naam soos algemene daemons wat die regex waarskynlik sal pas: httpd, nginx, mysqld, dataserver
|
||||||
|
- Plaas dit in 'n skrywebare gids: /tmp/httpd, ./nginx
|
||||||
|
- Verseker dit pas die regex en open enige poort om geïnventariseer te word
|
||||||
|
- Wag vir die geskeduleerde versamelaar; jy kry 'n outomatiese geprivilegieerde aanroep van <path> -v
|
||||||
|
|
||||||
|
Maskeeringsnota: Dit stem ooreen met MITRE ATT&CK T1036.005 (Match Legitimate Name or Location) om die kans op 'n match en onopgemerktheid te verhoog.
|
||||||
|
|
||||||
|
Reusable privileged I/O relay truuk
|
||||||
|
- Bou jou helper sodat by geprivilegieerde aanroep (-v/--version) dit verbinding maak na 'n bekende rendezvous (bv. 'n Linux abstract UNIX socket soos @cve) en stdio oorbrug na /bin/sh -i. Dit vermy on-disk artefakte en werk oor baie omgewings waar dieselfde binary met 'n vlag heruitgevoer word.
|
||||||
|
|
||||||
|
## Opsporings- en DFIR-riglyne
|
||||||
|
|
||||||
|
Opspoornavrae
|
||||||
|
- Ongewone subprosesse van vmtoolsd of get-versions.sh soos /tmp/httpd, ./nginx, /tmp/mysqld
|
||||||
|
- Enige uitvoering van nie-stelsel absolute paadjies deur ontdekkingskripte (kyk vir spasies in ${COMMAND%%...} uitbreidings)
|
||||||
|
- ps -ef --forest om afstammings-boom te visualiseer: vmtoolsd -> get-versions.sh -> <non-system path>
|
||||||
|
|
||||||
|
Op Aria SDMP (credential-based)
|
||||||
|
- Inspekteer /tmp/VMware-SDMP-Scripts-{UUID}/ vir tydelike skripte en stdout/stderr-artefakte wat uitvoering van aanvallerpaaie toon
|
||||||
|
|
||||||
|
Beleid/telemetrie
|
||||||
|
- Alarmeer wanneer geprivilegieerde versamelaars vanaf nie-stelsel voorvoegsels uitvoer: ^/(tmp|home|var/tmp|dev/shm)/
|
||||||
|
- Lêerintegriteitsmonitering op get-versions.sh en VMware Tools-plugins
|
||||||
|
|
||||||
|
## Mitigasies
|
||||||
|
|
||||||
|
- Patch: Pas Broadcom/VMware-opdaterings toe vir CVE-2025-41244 (Tools and Aria Operations SDMP)
|
||||||
|
- Deaktiveer of beperk ontdekking sonder credentials waar moontlik
|
||||||
|
- Valideer vertroude paaie: beperk uitvoering tot toegelate gidse (/usr/sbin, /usr/bin, /sbin, /bin) en slegs presiese bekende binaries
|
||||||
|
- Vermy permissiewe regexes met \S; verkies geanker, eksplisiete absolute paaie en presiese opdragname
|
||||||
|
- Verlaag voorregte vir ontdekkinghelpers waar moontlik; sandbox (seccomp/AppArmor) om impak te verminder
|
||||||
|
- Monitor en waarsku op vmtoolsd/get-versions.sh wat nie-stelselpaadjies uitvoer
|
||||||
|
|
||||||
|
## Aantekeninge vir verdedigers en implementeerders
|
||||||
|
|
||||||
|
Veiliger matching- en uitvoerpatroon
|
||||||
|
```bash
|
||||||
|
# Bad: permissive regex and blind exec
|
||||||
|
COMMAND=$(get_command_line "$pid" | grep -Eo "/\\S+/nginx(\$|\\s)")
|
||||||
|
[ -n "$COMMAND" ] && "${COMMAND%%[[:space:]]*}" -v
|
||||||
|
|
||||||
|
# Good: strict allowlist + path checks
|
||||||
|
candidate=$(get_command_line "$pid" | awk '{print $1}')
|
||||||
|
case "$candidate" in
|
||||||
|
/usr/sbin/nginx|/usr/sbin/httpd|/usr/sbin/apache2)
|
||||||
|
"$candidate" -v 2>&1 ;;
|
||||||
|
*)
|
||||||
|
: # ignore non-allowlisted paths
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
```
|
||||||
|
## Verwysings
|
||||||
|
|
||||||
|
- [NVISO – Jy noem dit, VMware eskaleer dit (CVE-2025-41244)](https://blog.nviso.eu/2025/09/29/you-name-it-vmware-elevates-it-cve-2025-41244/)
|
||||||
|
- [Broadcom-advies vir CVE-2025-41244](https://support.broadcom.com/web/ecx/support-content-notification/-/external/content/SecurityAdvisories/0/36149)
|
||||||
|
- [open-vm-tools – serviceDiscovery/get-versions.sh (stable-13.0.0)](https://github.com/vmware/open-vm-tools/blob/stable-13.0.0/open-vm-tools/services/plugins/serviceDiscovery/get-versions.sh)
|
||||||
|
- [MITRE ATT&CK T1036.005 – Match Legitimate Name or Location](https://attack.mitre.org/techniques/T1036/005/)
|
||||||
|
- [CWE-426: Untrusted Search Path](https://cwe.mitre.org/data/definitions/426.html)
|
||||||
|
|
||||||
|
{{#include ../../banners/hacktricks-training.md}}
|
@ -1,16 +1,27 @@
|
|||||||
|
# VMware ESX / vCenter Pentesting
|
||||||
|
|
||||||
{{#include ../../banners/hacktricks-training.md}}
|
{{#include ../../banners/hacktricks-training.md}}
|
||||||
|
|
||||||
|
|
||||||
# Opname
|
## Enumeration
|
||||||
```bash
|
```bash
|
||||||
nmap -sV --script "http-vmware-path-vuln or vmware-version" -p <PORT> <IP>
|
nmap -sV --script "http-vmware-path-vuln or vmware-version" -p <PORT> <IP>
|
||||||
msf> use auxiliary/scanner/vmware/esx_fingerprint
|
msf> use auxiliary/scanner/vmware/esx_fingerprint
|
||||||
msf> use auxiliary/scanner/http/ms15_034_http_sys_memory_dump
|
msf> use auxiliary/scanner/http/ms15_034_http_sys_memory_dump
|
||||||
```
|
```
|
||||||
# Bruteforce
|
## Bruteforce
|
||||||
```bash
|
```bash
|
||||||
msf> auxiliary/scanner/vmware/vmware_http_login
|
msf> auxiliary/scanner/vmware/vmware_http_login
|
||||||
```
|
```
|
||||||
As jy geldige akrediteerbare inligting vind, kan jy meer metasploit skandeerder modules gebruik om inligting te verkry.
|
As jy valid credentials vind, kan jy meer metasploit scanner modules gebruik om inligting te verkry.
|
||||||
|
|
||||||
|
|
||||||
|
### Sien ook
|
||||||
|
|
||||||
|
Linux LPE via VMware Tools diensontdekking (CWE-426 / CVE-2025-41244):
|
||||||
|
|
||||||
|
{{#ref}}
|
||||||
|
../../linux-hardening/privilege-escalation/vmware-tools-service-discovery-untrusted-search-path-cve-2025-41244.md
|
||||||
|
{{#endref}}
|
||||||
|
|
||||||
{{#include ../../banners/hacktricks-training.md}}
|
{{#include ../../banners/hacktricks-training.md}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user