macOS Office Sandbox Bypasses

ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)

HackTricksをサポートする他の方法:

ランチエージェントを使用したWord Sandboxバイパス

アプリケーションは、com.apple.security.temporary-exception.sbplという権限を使用するカスタムサンドボックスを使用しており、このカスタムサンドボックスでは、ファイル名が~$で始まる限り、どこにでもファイルを書き込むことができます:(require-any (require-all (vnode-type REGULAR-FILE) (regex #"(^|/)~$[^/]+$")))

したがって、エスケープは、~/Library/LaunchAgents/~$escape.plistplistランチエージェントを書き込むだけで簡単でした。

元のレポートはこちらを確認してください。

ログインアイテムとzipを使用したWord Sandboxバイパス

最初のエスケープから、Wordは~$で始まる任意のファイルを書き込むことができますが、前の脆弱性のパッチ後は/Library/Application Scripts/Library/LaunchAgentsに書き込むことはできませんでした。

サンドボックス内からは、ログインアイテム(ユーザーがログインすると実行されるアプリ)を作成できることがわかりました。ただし、これらのアプリはノータライズされていないと実行されず引数を追加することはできません(つまり、**bash**を使用して逆シェルを実行することはできません)。

前のサンドボックスバイパスから、Microsoftは~/Library/LaunchAgentsにファイルを書き込むオプションを無効にしました。しかし、LaunchAgentsフォルダが~/Libraryにデフォルトで作成されないため、LaunchAgents/~$escape.plistにplistをzipして、zipファイルを**~/Library**に配置すると、解凍時に永続的な宛先に到達するようになりました。

元のレポートはこちらを確認してください。

ログインアイテムと.zshenvを使用したWord Sandboxバイパス

(最初のエスケープから、Wordは~$で始まる任意のファイルを書き込むことができます)。

ただし、前のテクニックには制限がありました。他のソフトウェアが作成したために~/Library/LaunchAgentsフォルダが存在する場合、失敗する可能性がありました。このため、このための異なるログインアイテムチェーンが発見されました。

攻撃者は、実行するペイロードを持つ**.bash_profile.zshenvファイルを作成し、それらをzipして、被害者のユーザーフォルダにzipファイルを書き込むことができました:~/~$escape.zip**。

次に、zipファイルをログインアイテムに追加し、**Terminalアプリを追加します。ユーザーが再ログインすると、zipファイルがユーザーのファイルに解凍され、.bash_profile.zshenv**が上書きされ、したがって、ターミナルはこれらのファイルのいずれかを実行します(bashまたはzshが使用されているかに応じて)。

元のレポートはこちらを確認してください。

Openと環境変数を使用したWord Sandboxバイパス

サンドボックス化されたプロセスからは、openユーティリティを使用して他のプロセスを呼び出すことができます。さらに、これらのプロセスは独自のサンドボックス内で実行されます。

openユーティリティには、特定の環境変数でアプリを実行するための**--envオプションがあることがわかりました。したがって、サンドボックス内のフォルダに.zshenvファイル**を作成し、HOME変数をそのフォルダに設定してTerminalアプリを開くopenを使用することで、.zshenvファイルを実行できました(何らかの理由で__OSINSTALL_ENVIROMENT変数を設定する必要がありました)。

元のレポートはこちらを確認してください。

Openとstdinを使用したWord Sandboxバイパス

**openユーティリティは--stdin**パラメータもサポートしていました(前のバイパス後、--envを使用することはできなくなりました)。

重要なのは、Appleによって署名された**pythonでも、quarantine**属性を持つスクリプトは実行されないことです。ただし、stdinからスクリプトを渡すことで、それが隔離されているかどうかをチェックしないで実行できました:

  1. 任意のPythonコマンドを含む**~$exploit.py**ファイルを作成します。

  2. open **–stdin='~$exploit.py' -a Python**を実行します。これにより、Pythonアプリが、標準入力として提供されたファイルを使用して実行されます。 Pythonは喜んでコードを実行し、_launchd_の子プロセスであるため、Wordのサンドボックスルールには拘束されません。

ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)

HackTricksをサポートする他の方法:

Last updated