macOS Office Sandbox Bypasses
Reading time: 4 minutes
tip
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.
Ominięcie Sandboxa Worda za pomocą Launch Agents
Aplikacja używa niestandardowego Sandboxa z uprawnieniem com.apple.security.temporary-exception.sbpl
, a ten niestandardowy sandbox pozwala na zapisywanie plików wszędzie, pod warunkiem, że nazwa pliku zaczyna się od ~$
: (require-any (require-all (vnode-type REGULAR-FILE) (regex #"(^|/)~$[^/]+$")))
Dlatego, ucieczka była tak prosta jak napisanie plist
LaunchAgent w ~/Library/LaunchAgents/~$escape.plist
.
Sprawdź oryginalny raport tutaj.
Ominięcie Sandboxa Worda za pomocą Login Items i zip
Pamiętaj, że od pierwszej ucieczki, Word może zapisywać dowolne pliki, których nazwa zaczyna się od ~$
, chociaż po poprawce poprzedniej luki nie było możliwe zapisywanie w /Library/Application Scripts
ani w /Library/LaunchAgents
.
Odkryto, że z poziomu sandboxa można utworzyć Login Item (aplikacje, które będą uruchamiane, gdy użytkownik się loguje). Jednak te aplikacje nie będą uruchamiane, chyba że będą notaryzowane i nie można dodać argumentów (więc nie można po prostu uruchomić odwrotnego powłoki za pomocą bash
).
Po poprzednim ominięciu Sandboxa, Microsoft wyłączył opcję zapisywania plików w ~/Library/LaunchAgents
. Odkryto jednak, że jeśli umieścisz plik zip jako Login Item, Archive Utility
po prostu rozpakowuje go w jego bieżącej lokalizacji. Tak więc, ponieważ domyślnie folder LaunchAgents
w ~/Library
nie jest tworzony, możliwe było spakowanie plist w LaunchAgents/~$escape.plist
i umieszczenie pliku zip w ~/Library
, aby po dekompresji dotarł do miejsca docelowego.
Sprawdź oryginalny raport tutaj.
Ominięcie Sandboxa Worda za pomocą Login Items i .zshenv
(Pamiętaj, że od pierwszej ucieczki, Word może zapisywać dowolne pliki, których nazwa zaczyna się od ~$
).
Jednak poprzednia technika miała ograniczenie, jeśli folder ~/Library/LaunchAgents
istnieje, ponieważ stworzyło go jakieś inne oprogramowanie, to by nie zadziałało. Odkryto więc inną sekwencję Login Items dla tego.
Atakujący mógł stworzyć pliki .bash_profile
i .zshenv
z ładunkiem do wykonania, a następnie spakować je i zapisać zip w folderze użytkownika ofiary: ~/~$escape.zip
.
Następnie, dodać plik zip do Login Items i następnie do aplikacji Terminal
. Gdy użytkownik się ponownie zaloguje, plik zip zostanie rozpakowany w plikach użytkownika, nadpisując .bash_profile
i .zshenv
, a zatem terminal wykona jeden z tych plików (w zależności od tego, czy używana jest bash czy zsh).
Sprawdź oryginalny raport tutaj.
Ominięcie Sandboxa Worda z Open i zmiennymi env
Z procesów w sandboxie nadal możliwe jest wywoływanie innych procesów za pomocą narzędzia open
. Co więcej, te procesy będą działać w swoim własnym sandboxie.
Odkryto, że narzędzie open ma opcję --env
, aby uruchomić aplikację z konkretnymi zmiennymi env. Dlatego możliwe było stworzenie pliku .zshenv
w folderze wewnątrz sandboxa i użycie open
z --env
, ustawiając zmienną HOME
na ten folder, otwierając aplikację Terminal
, która wykona plik .zshenv
(z jakiegoś powodu konieczne było również ustawienie zmiennej __OSINSTALL_ENVIROMENT
).
Sprawdź oryginalny raport tutaj.
Ominięcie Sandboxa Worda z Open i stdin
Narzędzie open
obsługiwało również parametr --stdin
(a po poprzednim ominięciu nie było już możliwe użycie --env
).
Chodzi o to, że nawet jeśli python
był podpisany przez Apple, nie wykona skryptu z atrybutem quarantine
. Jednak możliwe było przekazanie mu skryptu z stdin, więc nie sprawdzi, czy był kwarantannowany, czy nie:
- Umieść plik
~$exploit.py
z dowolnymi poleceniami Pythona. - Uruchom open
–stdin='~$exploit.py' -a Python
, co uruchamia aplikację Python z naszym umieszczonym plikiem jako standardowym wejściem. Python chętnie uruchamia nasz kod, a ponieważ jest to proces potomny launchd, nie jest związany z zasadami sandboxa Worda.
tip
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.