macOS Office Sandbox Bypasses

Reading time: 8 minutes

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

Word Sandbox bypass via Launch Agents

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

したがって、エスケープは plist LaunchAgent を ~/Library/LaunchAgents/~$escape.plist に書き込むことと同じくらい簡単でした。

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

Word Sandbox bypass via Login Items and zip

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

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

前のサンドボックスバイパスから、Microsoft は ~/Library/LaunchAgents にファイルを書き込むオプションを無効にしました。ただし、Login Item として zip ファイル を置くと、Archive Utility はその現在の場所で 解凍 します。したがって、デフォルトでは ~/LibraryLaunchAgents フォルダーが作成されないため、LaunchAgents/~$escape.plist に plist を zip し、~/Library に zip ファイルを 配置 することで、解凍すると永続性の宛先に到達することができました。

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

Word Sandbox bypass via Login Items and .zshenv

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

ただし、前の技術には制限があり、~/Library/LaunchAgents フォルダーが他のソフトウェアによって作成されている場合、失敗します。したがって、これに対する別の Login Items チェーンが発見されました。

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

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

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

Word Sandbox Bypass with Open and env variables

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

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

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

Word Sandbox Bypass with Open and stdin

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

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

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

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする