mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
53 lines
6.6 KiB
Markdown
53 lines
6.6 KiB
Markdown
# macOS Office Sandbox Bypasses
|
||
|
||
{{#include ../../../../../banners/hacktricks-training.md}}
|
||
|
||
### Word Sandbox обход через Launch Agents
|
||
|
||
Застосунок використовує **кастомний Sandbox** з правом **`com.apple.security.temporary-exception.sbpl`**, і цей кастомний пісочниця дозволяє записувати файли будь-де, якщо ім'я файлу починається з `~$`: `(require-any (require-all (vnode-type REGULAR-FILE) (regex #"(^|/)~$[^/]+$")))`
|
||
|
||
Отже, втеча була такою ж легкою, як **створення `plist`** LaunchAgent у `~/Library/LaunchAgents/~$escape.plist`.
|
||
|
||
Перевірте [**оригінальний звіт тут**](https://www.mdsec.co.uk/2018/08/escaping-the-sandbox-microsoft-office-on-macos/).
|
||
|
||
### Word Sandbox обход через Login Items і zip
|
||
|
||
Пам'ятайте, що з першої втечі Word може записувати довільні файли, ім'я яких починається з `~$`, хоча після виправлення попередньої уразливості не було можливості записувати в `/Library/Application Scripts` або в `/Library/LaunchAgents`.
|
||
|
||
Було виявлено, що зсередини пісочниці можливо створити **Login Item** (додатки, які виконуються, коли користувач входить в систему). Однак ці додатки **не виконуватимуться, якщо** вони **не сертифіковані** і **неможливо додати аргументи** (тому ви не можете просто запустити зворотний шелл, використовуючи **`bash`**).
|
||
|
||
Після попереднього обходу Sandbox Microsoft вимкнув можливість записувати файли в `~/Library/LaunchAgents`. Однак було виявлено, що якщо ви помістите **zip-файл як Login Item**, `Archive Utility` просто **розпакує** його в його поточному місці. Тому, оскільки за замовчуванням папка `LaunchAgents` з `~/Library` не створюється, було можливим **запакувати plist у `LaunchAgents/~$escape.plist`** і **помістити** zip-файл у **`~/Library`**, щоб при розпакуванні він досягнув місця збереження.
|
||
|
||
Перевірте [**оригінальний звіт тут**](https://objective-see.org/blog/blog_0x4B.html).
|
||
|
||
### Word Sandbox обход через Login Items і .zshenv
|
||
|
||
(Пам'ятайте, що з першої втечі Word може записувати довільні файли, ім'я яких починається з `~$`).
|
||
|
||
Однак попередня техніка мала обмеження: якщо папка **`~/Library/LaunchAgents`** існує, тому що інше програмне забезпечення створило її, це призведе до збою. Тому для цього було виявлено інший ланцюг Login Items.
|
||
|
||
Зловмисник міг створити файли **`.bash_profile`** і **`.zshenv`** з корисним навантаженням для виконання, а потім запакувати їх і **записати zip у папку користувача жертви**: **`~/~$escape.zip`**.
|
||
|
||
Потім додати zip-файл до **Login Items** і потім до **додатка `Terminal`**. Коли користувач повторно входить в систему, zip-файл буде розпакований у файлі користувача, перезаписуючи **`.bash_profile`** і **`.zshenv`**, і, отже, термінал виконає один з цих файлів (в залежності від того, чи використовується bash або zsh).
|
||
|
||
Перевірте [**оригінальний звіт тут**](https://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c).
|
||
|
||
### Word Sandbox обход з Open і змінними середовища
|
||
|
||
З пісочницьких процесів все ще можливо викликати інші процеси, використовуючи утиліту **`open`**. Більше того, ці процеси будуть виконуватися **в межах їх власної пісочниці**.
|
||
|
||
Було виявлено, що утиліта open має опцію **`--env`** для запуску програми з **конкретними змінними середовища**. Отже, було можливим створити **файл `.zshenv`** в папці **всередині** **пісочниці** і використовувати `open` з `--env`, встановлюючи **змінну `HOME`** на цю папку, відкриваючи додаток `Terminal`, який виконає файл `.zshenv` (з якоїсь причини також було потрібно встановити змінну `__OSINSTALL_ENVIROMENT`).
|
||
|
||
Перевірте [**оригінальний звіт тут**](https://perception-point.io/blog/technical-analysis-of-cve-2021-30864/).
|
||
|
||
### Word Sandbox обход з Open і stdin
|
||
|
||
Утиліта **`open`** також підтримувала параметр **`--stdin`** (і після попереднього обходу більше не було можливості використовувати `--env`).
|
||
|
||
Суть у тому, що навіть якщо **`python`** був підписаний Apple, він **не виконає** скрипт з атрибутом **`quarantine`**. Однак було можливим передати йому скрипт з stdin, тому він не перевірить, чи був він під карантином чи ні:
|
||
|
||
1. Скиньте файл **`~$exploit.py`** з довільними командами Python.
|
||
2. Запустіть _open_ **`–stdin='~$exploit.py' -a Python`**, що запускає додаток Python з нашим скинутим файлом, що служить його стандартним введенням. Python із задоволенням виконує наш код, і оскільки це дочірній процес _launchd_, він не підпорядковується правилам пісочниці Word.
|
||
|
||
{{#include ../../../../../banners/hacktricks-training.md}}
|