macOS Office Sandbox Bypasses

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Słowo Bypass piaskownicy za pomocą agentów uruchomieniowych

Aplikacja korzysta z niestandardowej piaskownicy przy użyciu uprawnienia com.apple.security.temporary-exception.sbpl, a ta niestandardowa piaskownica pozwala na zapisywanie plików w dowolnym miejscu, o ile nazwa pliku zaczyna się od ~$: (require-any (require-all (vnode-type REGULAR-FILE) (regex #"(^|/)~$[^/]+$")))

Dlatego ucieczka była tak łatwa jak zapisanie pliku plist LaunchAgent w ~/Library/LaunchAgents/~$escape.plist.

Sprawdź oryginalny raport tutaj.

Słowo Bypass piaskownicy za pomocą elementów logowania i zip

Pamiętaj, że po pierwszej ucieczce, Word może zapisywać dowolne pliki, których nazwa zaczyna się od ~$, chociaż po poprawce poprzedniej podatności nie było możliwe zapisywanie w /Library/Application Scripts lub /Library/LaunchAgents.

Odkryto, że z piaskownicy można utworzyć Element logowania (aplikacje, które będą uruchamiane po zalogowaniu użytkownika). Jednak te aplikacje nie zostaną uruchomione, chyba że są podpisane i niemożliwe jest dodanie argumentów (więc nie można po prostu uruchomić odwróconej powłoki za pomocą bash).

Po poprzedniej ucieczce z piaskownicy, Microsoft wyłączył możliwość zapisywania plików w ~/Library/LaunchAgents. Jednak odkryto, że jeśli umieścisz plik zip jako Element logowania, Archive Utility po prostu go rozpakuje w bieżącej lokalizacji. Dlatego, ponieważ domyślnie folder LaunchAgents z ~/Library nie jest tworzony, można było spakować plik plist w LaunchAgents/~$escape.plist i umieścić plik zip w ~/Library, aby po rozpakowaniu dotarł do miejsca trwałości.

Sprawdź oryginalny raport tutaj.

Słowo Bypass piaskownicy za pomocą elementów logowania i .zshenv

(Pamiętaj, że po pierwszej ucieczce, 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ż został utworzony przez inne oprogramowanie, operacja zakończyłaby się niepowodzeniem. Dlatego odkryto inną sekwencję Elementów logowania dla tego przypadku.

Atakujący mógł utworzyć pliki .bash_profile i .zshenv z ładunkiem do wykonania, a następnie spakować je i zapisać plik zip w folderze użytkownika ofiary: ~/~$escape.zip.

Następnie dodać plik zip do Elementów logowania, a następnie do aplikacji Terminal. Po ponownym zalogowaniu użytkownika plik zip zostanie rozpakowany w plikach użytkownika, nadpisując .bash_profile i .zshenv, a więc terminal wykona jeden z tych plików (w zależności od tego, czy używany jest bash czy zsh).

Sprawdź oryginalny raport tutaj.

Słowo Bypass piaskownicy za pomocą Open i zmiennych środowiskowych

Z procesów w piaskownicy nadal można wywoływać inne procesy za pomocą narzędzia open. Ponadto, te procesy będą działać w swojej własnej piaskownicy.

Odkryto, że narzędzie open ma opcję --env, która pozwala uruchomić aplikację z określonymi zmiennymi środowiskowymi. Dlatego można było utworzyć plik .zshenv w folderze wewnątrz piaskownicy i użyć open z --env, ustawiając zmienną HOME na ten folder, otwierając tę aplikację Terminal, która wykona plik .zshenv (z jakiegoś powodu konieczne było również ustawienie zmiennej __OSINSTALL_ENVIROMENT).

Sprawdź oryginalny raport tutaj.

Słowo Bypass piaskownicy za pomocą Open i stdin

Narzędzie open obsługiwało również parametr --stdin (a po poprzedniej ucieczce nie było już możliwe użycie --env).

Chodzi o to, że nawet jeśli python był podpisany przez Apple, nie będzie wykonywał skryptu z atrybutem quarantine. Jednak można było przekazać mu skrypt ze standardowego wejścia (stdin), więc nie sprawdzał, czy był kwarantannowany czy nie:

  1. Upuść plik ~$exploit.py z dowolnymi poleceniami Pythona.

  2. Uruchom open –stdin='~$exploit.py' -a Python, co uruchamia aplikację Python z naszym upuszczonym plikiem jako standardowe wejście. Python z radością wykonuje nasz kod i ponieważ jest to proces potomny launchd, nie podlega zasadom piaskownicy Worda.

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated