macOS Office Sandbox Bypasses

Вивчайте хакінг AWS від нуля до героя з htARTE (Експерт з червоної команди HackTricks AWS)!

Інші способи підтримки HackTricks:

Пропуск пісочниці Word через запуск агентів

Додаток використовує власну пісочницю з дозволом com.apple.security.temporary-exception.sbpl, і ця власна пісочниця дозволяє записувати файли будь-де, поки ім'я файлу починається з ~$: (require-any (require-all (vnode-type REGULAR-FILE) (regex #"(^|/)~$[^/]+$")))

Отже, втеча була настільки простою, як запис plist LaunchAgent у ~/Library/LaunchAgents/~$escape.plist.

Перевірте оригінальний звіт тут.

Пропуск пісочниці Word через елементи входу та zip

Пам'ятайте, що після першої втечі Word може записувати довільні файли, ім'я яких починається з ~$, хоча після попередньої уразливості вже не було можливості записувати в /Library/Application Scripts або в /Library/LaunchAgents.

Було виявлено, що з пісочниці можна створити Елемент входу (додатки, які виконуватимуться при вході користувача). Однак ці додатки не виконаються, якщо вони не підписані і неможливо додати аргументи (тому ви не можете просто запустити зворотний shell, використовуючи bash).

Після попереднього пропуску пісочниці Microsoft відключив можливість записувати файли в ~/Library/LaunchAgents. Однак було виявлено, що якщо помістити zip-файл як Елемент входу, Archive Utility просто розпакує його у поточному місці. Оскільки за замовчуванням папка LaunchAgents з ~/Library не створюється, було можливо заархівувати plist у LaunchAgents/~$escape.plist і розмістити zip-файл у ~/Library, тому після розпакування він дістанеться до місця постійного збереження.

Перевірте оригінальний звіт тут.

Пропуск пісочниці Word через елементи входу та .zshenv

(Пам'ятайте, що після першої втечі Word може записувати довільні файли, ім'я яких починається з ~$).

Однак попередня техніка мала обмеження: якщо папка ~/Library/LaunchAgents існує через те, що інші програми створили її, вона не працюватиме. Тому для цього було виявлено інший ланцюжок Елементів входу.

Атакуючий може створити файли .bash_profile та .zshenv з навантаженням для виконання, а потім заархівувати їх і записати zip-файл у папку користувача жертви: ~/~$escape.zip.

Потім додайте zip-файл до Елементів входу, а потім до додатку Terminal. Коли користувач знову увійде в систему, zip-файл буде розпакований у файли користувача, перезаписуючи .bash_profile та .zshenv, і, отже, термінал виконає один з цих файлів (залежно від того, чи використовується bash чи zsh).

Перевірте оригінальний звіт тут.

Пропуск пісочниці Word за допомогою Open та змінних середовища

З процесів у пісочниці все ще можна викликати інші процеси за допомогою утиліти open. Більше того, ці процеси будуть працювати в межах власної пісочниці.

Було виявлено, що утиліта open має опцію --env для запуску програми з конкретними змінними середовища. Тому було можливо створити файл .zshenv у папці всередині пісочниці і використовувати open з --env, встановлюючи змінну HOME на цю папку, відкриваючи додаток Terminal, який виконає файл .zshenv (з якоїсь причини також було потрібно встановити змінну __OSINSTALL_ENVIROMENT).

Перевірте оригінальний звіт тут.

Пропуск пісочниці Word за допомогою Open та stdin

Утиліта open також підтримувала параметр --stdin (і після попереднього пропуску вже не було можливо використовувати --env).

Справа в тому, що навіть якщо python був підписаний Apple, він не виконає сценарій з атрибутом quarantine. Однак було можливо передати йому сценарій з stdin, тому він не перевірятиме, чи був він у карантині чи ні:

  1. Скиньте файл ~$exploit.py з довільними командами Python.

  2. Запустіть open –stdin='~$exploit.py' -a Python, який запускає додаток Python з нашим файлом, що служить йому в якості стандартного вводу. Python з радістю виконує наш код, і оскільки він є дочірнім процесом launchd, він не обмежений правилами пісочниці Word.

Вивчайте хакінг AWS від нуля до героя з htARTE (Експерт з червоної команди HackTricks AWS)!

Інші способи підтримки HackTricks:

Last updated