Nextcloud 35.0.0 — फ़ेडरेटेड शेयर सीक्रेट शेयर करने वाले के पूरे Files ट्री के लिए एक अनस्कोप्ड ऐप पासवर्ड है
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · nextcloud-federated-ocm-token
Nextcloud Server 35.0.0 - Nextcloud GmbH
एक फ़ेडरेटेड शेयर सीक्रेट को शेयर करने वाले के लिए बिना स्कोप वाले PERMANENT_TOKEN ऐप पासवर्ड के रूप में बनाया जाता है। प्राप्तकर्ता API इसे refresh_token के रूप में लौटाता है। इसे सेंडर WebDAV पर Bearer के रूप में दोबारा भेजने पर शेयर करने वाले के रूप में लॉगिन हो जाता है और उन फ़ाइलों को पढ़ा जा सकता है जो कभी शेयर नहीं की गई थीं।
जिस बुरे इरादे वाले व्यक्ति के साथ आप एक फ़ाइल फ़ेडरेटेड-शेयर करते हैं, वह आपके Nextcloud पर आपके रूप में लॉगिन कर सकता है, 2FA को छोड़ सकता है, और आपकी सभी फ़ाइलों को पढ़ या ओवरराइट कर सकता है, न कि केवल उस एक फ़ाइल को जो आपने शेयर की थी।
| ID | अभी तक कोई CVE नहीं |
| CWE | CWE-269, CWE-287 |
| CVSS | Critical: 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N (फ़ेडरेटेड प्राप्तकर्ता)। पब्लिक-लिंक कन्वर्ट इससे भी बदतर है (पीयर पर कोई प्राप्तकर्ता खाता नहीं)। |
| Product | Nextcloud Server |
| Affected | 35.0.0 (da02f41) आधिकारिक nextcloud:35.0.0-apache |
| Auth | फ़ेडरेटेड प्राप्तकर्ता (या पब्लिक-लिंक कन्वर्टर) |
| License | GNU Affero GPL v3.0 |
| Lab | केवल 127.0.0.1 |
आप किसी अन्य Nextcloud पर bob के साथ एक फ़ाइल या फ़ोल्डर शेयर करते हैं। Nextcloud एक 32-अक्षर का सीक्रेट बनाता है, उसे आपके ऐप पासवर्ड के रूप में संग्रहीत करता है, और वह सीक्रेट Bob को refresh_token के रूप में सौंप देता है।
इसके बाद Bob (या कोई भी जो आपके पब्लिक लिंक को फ़ेडरेटेड शेयर में बदलता है):
उन्हें होस्ट पर PHP शेल नहीं मिलता। उन्हें आपके पासवर्ड की आवश्यकता नहीं है। शेयर स्वीकार न करें और पहले OCM access-token को कॉल न करें: वह एक्सचेंज फ़ाइलसिस्टम स्कोप को लॉक कर देता है। लैब एक्सचेंज-पूर्व सीक्रेट को साबित करती है।
एक शेयर को शेयर ही होना चाहिए। एक फ़ाइल। एक फ़ोल्डर। मैंने tag v35.0.0 पर FederatedShareProvider::createFederatedShare पढ़ा। यह शेयर करने वाले के लिए बिना स्कोप के IToken::PERMANENT_TOKEN के रूप में 32-अक्षर का सीक्रेट बनाता है। PublicKeyToken::getScopeAsArray डिफ़ॉल्ट रूप से SCOPE_FILESYSTEM => true रखता है। वह एक ऐप पासवर्ड है। Session::tryTokenLogin एक स्थायी Bearer स्वीकार करता है।
OCM एक्सचेंज का काम (PR #57234 / #57166) पहले एक्सचेंज के बाद फ़ाइलसिस्टम स्कोप को पहले से ही लॉक कर देता है। एक अनौपचारिक राइटअप ने उस पोस्ट-एक्सचेंज हॉप का उपयोग किया। मैंने पहले वही आज़माया। इस ट्री पर एक्सचेंज किया गया टोकन TEMPORARY है, जिसका नाम OCM Access Token है, और /remote.php/dav इसे अस्वीकार कर देता है (allowOcmAccessToken false)। DAV ने मना कर दिया।
इसलिए मैंने एक्सचेंज नहीं किया। ocm_discovery_enabled false रहा ताकि प्राप्तकर्ता मेरे लिए इसे एक्सचेंज न करे। दो आधिकारिक nextcloud:35.0.0-apache बॉक्स, overwrite.cli.url को docker DNS (http://sender / http://recipient) के रूप में। इसे 127.0.0.1 पर छोड़ दें तो S2S स्वयं से बात करता है।
Alice bob@http://recipient के साथ एक फ़ाइल शेयर करती है। Bob लंबित शेयर पढ़ता है। refresh_token की लंबाई 32। access_token की लंबाई 0। Alice की निजी witness फ़ाइल का अनऑथेंटिकेटेड Bearer GET, जो कभी शेयर में नहीं थी, 200 लौटाता है, X-User-Id: alice।
cd lab
./run.sh
लक्ष्य केवल http://127.0.0.1:18340 (सेंडर) और :18341 (प्राप्तकर्ता)।
SUCCESS NEXTCLOUD-OCM-PERMANENT-TOKEN who=federated-recipient uid=alice NEXTCLOUD-OCM-PERMANENT-TOKEN-WITNESS
फ़ेडरेटेड सीक्रेट को पहले इन्सर्ट से ही फ़ाइलसिस्टम स्कोप false के साथ बनाएं। उस सीक्रेट को /remote.php/dav पर Bearer/Basic के रूप में स्वीकार न करें। पहला एक्सचेंज पहले से ही FS स्कोप को लॉक करता है; create को कभी भी ऐप पासवर्ड नहीं सौंपना चाहिए था।
GNU Affero GPL v3.0। देखें LICENSE। केवल लूपबैक लैब। कोई वारंटी नहीं।