macOS Perl Applications Injection
Via la variable d'environnement PERL5OPT
& PERL5LIB
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 :
Maintenant exportez la variable d'environnement et exécutez le script perl :
Une autre option consiste à créer un module Perl (par exemple, /tmp/pmod.pm
):
Et ensuite utiliser les variables d'environnement :
Via dépendances
Il est possible de lister l'ordre des dossiers de dépendances de Perl en cours d'exécution :
Ce qui renverra quelque chose comme :
Certains 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.
Cependant, notez que vous devez être root pour écrire dans ce dossier et de nos jours, vous obtiendrez cette invite TCC :
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2088318145-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Frq9WIQinJaxpWMvakjIQ%252Fuploads%252Fgit-blob-ca4f55331df2750af3428efbba41f63b22f62725%252Fimage%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=2c2b16ae&sv=1)
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
Last updated