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)
|
||||
- [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)
|
||||
- [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)
|
||||
- [Cisco - vmanage](linux-hardening/privilege-escalation/cisco-vmanage.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}}
|
||||
|
||||
|
||||
# Перерахування
|
||||
## Перерахування
|
||||
```bash
|
||||
nmap -sV --script "http-vmware-path-vuln or vmware-version" -p <PORT> <IP>
|
||||
msf> use auxiliary/scanner/vmware/esx_fingerprint
|
||||
msf> use auxiliary/scanner/http/ms15_034_http_sys_memory_dump
|
||||
```
|
||||
# Брутфорс
|
||||
## Bruteforce
|
||||
```bash
|
||||
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}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user