
OPNsense 26.7.6 - उच्च - रिमोट - विशेषाधिकार शेष - कस्टम फर्मवेयर मिरर sed-स्किप pkg फिंगरप्रिंट
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · opnsense-firmware-mirror-sed
वर्ग: हस्ताक्षर छोड़ें पहुँच: रिमोट
OPNsense कोर 26.7.6 (a842fe48) - opnsense.org
सिस्टम: फर्मवेयर set एक कस्टम mirror / flavour POST करता है। कोर FILTER_SANITIZE_URL \|#;" को बनाए रखता है। opnsense-update -m / -n उस स्ट्रिंग को OPNsense.conf पर sed में इंटरपोलेट करता है और signature_type को "fingerprints" से "none" में बदल सकता है। फिर हमलावर URL से रूट के रूप में pkg install। सेटिंग्स पेज अभी भी हस्ताक्षरित OPNsense पैकेजों का कस्टम मिरर प्रदान करता है। इसमें "हस्ताक्षर अक्षम करें" नियंत्रण नहीं है। विशेषाधिकार page-system-firmware-manualupdate है, page-all नहीं।
Sed out-of-pin opnsense-update में रहता है। इस पिन पर कोर असैनिटाइज़्ड फ़ील्ड और -m पास है। लैब उस s||| प्रोग्राम टेक्स्ट को GNU sed के साथ फिर से चलाती है।
यह GitHub पैक समन्वित प्रकटीकरण तक निजी रहता है।
| ID | अभी कोई CVE नहीं |
| वर्ग | हस्ताक्षर छोड़ें |
| पहुँच | रिमोट (प्रमाणित WebGUI / API) |
| CWE | CWE-74 / CWE-347 |
| CVSS | उच्च: 7.2 CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H |
| उत्पाद | OPNsense core |
| प्रभावित | 26.7.6 (a842fe48c21288d11a422cb944678e8eb308becf) फर्मवेयर set कस्टम मिरर |
| प्रमाणीकरण | WebGUI सत्र या page-system-firmware-manualupdate वाली API कुंजी |
| लाइसेंस | GNU Affero GPL v3.0 |
| लैब | केवल 127.0.0.1 |
मैंने टैग 26.7.6 पिन किया, पील a842fe48। लैब FILTER_SANITIZE_URL का PHP गैजेट और opnsense-update mod_mirrorurl sed है, 127.0.0.1:18860 पर लूपबैक HTTP। PR:H क्योंकि फर्मवेयर पेज को पहले से ही हस्ताक्षरित पैकेज इंस्टॉल करने की अनुमति है। यदि उस पेज को PR:L माना जाए तो स्कोर 8.8।
| विधि | सिंक | विशेषाधिकार |
|---|---|---|
| के साथ कस्टम मिरर पर FILTER_SANITIZE_URL फिर opnsense-update-शैली sed | OPNsense.conf का पुनर्लेखन | अखंडता (लैब-प्रमाणित): signature_type "none"। नियंत्रण मिरर "fingerprints" रहता है। लैब: sanitize-keeps-pipe=yes signature_type=none fingerprints-control=yes। |
| वही सेट, प्लगइन्स फ़ील्ड | setAction plugins को त्याग देता है | नकारात्मक (लैब-प्रमाणित): सहेजने से पहले प्लगइन्स त्याग दिए जाते हैं। |
फिर POST /api/core/firmware/install/<pkg> | हमलावर URL से रूट के रूप में pkg install -y | अखंडता (अनुमानित): रूट के रूप में अहस्ताक्षरित पैकेज। फर्मवेयर पेज पहले से ही हस्ताक्षरित पैकेज इंस्टॉल करता है; यह शेष सत्यापन छोड़ है। लैब में कोई अहस्ताक्षरित पेलोड नहीं। |
फिर POST /api/core/firmware/update या /upgrade | रूट के रूप में opnsense-update -pt / -u | अखंडता (अनुमानित): सत्यापन छोड़े गए (DO_INSECURE) बेस/कर्नेल सेट। |
GET /api/core/firmware/info, /running, /upgradestatus | फर्मवेयर API | पुनरावलोकन (अनुमानित): पैकेज सूचियाँ, अपडेट लॉग, मिरर विकल्प। इस ACL के लिए इच्छित। |
POST /api/core/firmware/reboot, /poweroff, /remove/<pkg> | configd फर्मवेयर क्रियाएँ | उपलब्धता (अनुमानित): रीबूट/हॉल्ट/हटाएँ। इस ACL के लिए इच्छित, शेष के लिए नहीं। |
लैब-प्रमाणित बनाम अनुमानित: sanitize | रखता है और signature_type none लैब SUCCESS हैं। अहस्ताक्षरित पैकेज का लाइव pkg install अनुमानित है। गैजेट, पूर्ण OPNsense FreeBSD VM नहीं। कोई अहस्ताक्षरित पैकेज पेलोड नहीं।
आवश्यक: साइन-इन उपयोगकर्ता या उस उपयोगकर्ता की Local API कुंजी जिसके पास page-system-firmware-manualupdate है और page-all नहीं। सत्र POST पर CSRF। अन-प्रमाणित नहीं। केवल-डैशबोर्ड नहीं।
| सतह | लैब |
|---|---|
| अन-प्रमाणित फर्मवेयर | 401 |
| केवल-डैशबोर्ड | 403 |
नियंत्रण मिरर https://pkg.opnsense.org | signature_type "fingerprints" रहता है |
| प्लगइन-नाम ट्रैवर्सल | filter_pkgname |
| चेंजलॉग फ़ेच | अभी भी opnsense-verify |
save() पर user-config-readonly | throwReadOnly() |
| सत्यापन छोड़ के बिना स्टॉक HTTP मिरर | ट्रांसपोर्ट MITM; फिंगरप्रिंट अभी भी आवश्यक |
| XMLRPC फर्मवेयर | केवल संस्करण स्ट्रिंग्स |
कोई अन-प्रमाणित नहीं। कोई केवल-डैशबोर्ड नहीं। चेंजलॉग अभी भी हस्ताक्षरित।
cd lab
./run.sh
लूपबैक 127.0.0.1:18860। Compose प्रोजेक्ट opnsense-firmware-mirror-sed। विटनेस OPNSENSE-FIRMWARE-MIRROR-SED-WITNESS। अंतिम पंक्ति:
SUCCESS opnsense-firmware-mirror-sed sanitize-keeps-pipe=yes signature_type=none fingerprints-control=yes OPNSENSE-FIRMWARE-MIRROR-SED-WITNESS
रूट लॉन्चर: python3 opnsense-firmware-mirror-sed-Abraxas-Labs.py.
लैब में प्रयुक्त हमला मिरर आकार (केवल विटनेस, कोई अहस्ताक्षरित pkg नहीं):
https://example.invalid/|;/signature_type/s/"fingerprints"/"none"/;#
ऐसे कस्टम मिरर को अस्वीकार करें जो URL नहीं है। opnsense-update -m / -n से पहले sed मेटाकैरेक्टर (|, ;, #, ") हटाएँ, या URL को फ़ाइल के रूप में पास करें ताकि sed इसे कभी प्रोग्राम टेक्स्ट के रूप में न देखे। signature_type: "fingerprints" बनाए रखें जब तक कि एक अलग, ऑडिट किया गया नियंत्रण सत्यापन बंद न करे। फर्मवेयर set को फिंगरप्रिंट को "none" में फिर से लिखने न दें।
a842fe48c21288d11a422cb944678e8eb308becfFirmwareController.php setAction FILTER_SANITIZE_URLscripts/firmware/repos/OPNsense.php opnsense-update -sd -mOPNsense.conf.shadow.in स्टॉक signature_type: "fingerprints"opnsense-update mod_mirrorurl (url: पंक्ति पर s\|\|)