macOS Perl Applications Injection
PERL5OPT
& PERL5LIB
環境変数を介して
PERL5OPT
& PERL5LIB
環境変数を介して環境変数PERL5OPTを使用すると、perlが任意のコマンドを実行することが可能です。 例えば、このスクリプトを作成します:
test.pl
今、環境変数をエクスポートして、perlスクリプトを実行します:
別のオプションは、Perlモジュールを作成することです(例:/tmp/pmod.pm
):
/tmp/pmod.pm
その後、環境変数を使用します:
依存関係を介して
Perlを実行している際に、依存関係フォルダの順序をリストアップすることが可能です:
次のように返されます:
いくつかの返されたフォルダは存在しない場合がありますが、/Library/Perl/5.30
は存在します。これはSIPによって保護されていませんし、SIPによって保護されたフォルダよりも前にあります。したがって、誰かがそのフォルダを悪用してスクリプトの依存関係を追加し、高特権のPerlスクリプトがそれを読み込むことができます。
ただし、そのフォルダに書き込むにはroot権限が必要であり、現在ではこのTCCプロンプトが表示されます:
たとえば、スクリプトが**use File::Basename;
**をインポートしている場合、/Library/Perl/5.30/File/Basename.pm
を作成して任意のコードを実行させることが可能です。
参考文献
Last updated