macOS Perl Applications Injection
Através das variáveis de ambiente PERL5OPT
e PERL5LIB
PERL5OPT
e PERL5LIB
Usando a variável de ambiente PERL5OPT é possível fazer o perl executar comandos arbitrários. Por exemplo, crie este script:
Agora exporte a variável de ambiente e execute o script perl:
Outra opção é criar um módulo Perl (por exemplo, /tmp/pmod.pm
):
E então use as variáveis de ambiente:
Através de dependências
É possível listar a ordem da pasta de dependências do Perl em execução:
O seguinte conteúdo é de um livro sobre técnicas de hacking. O conteúdo a seguir é do arquivo macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-perl-applications-injection.md.
Algumas das pastas retornadas nem sequer existem, no entanto, /Library/Perl/5.30
existe, não é protegida pelo SIP e está antes das pastas protegidas pelo SIP. Portanto, alguém poderia abusar dessa pasta para adicionar dependências de script nela, para que um script Perl de alta privilégio as carregue.
No entanto, observe que você precisa ser root para escrever nessa pasta e hoje em dia você receberá este prompt TCC:
Por exemplo, se um script estiver importando use File::Basename;
seria possível criar /Library/Perl/5.30/File/Basename.pm
para executar código arbitrário.
Referências
Last updated