
CVE-2021-46398 भेद्यता के शोषण के लिए एक प्रूफ ऑफ कॉन्सेप्ट
इस रिपॉजिटरी में, आपको docker compose के माध्यम से CVE-2021-46398 दोष के शोषण का एक प्रूफ ऑफ कॉन्सेप्ट मिलेगा, साथ ही सूचना प्रणालियों पर इस दोष के प्रभावों का विश्लेषण भी मिलेगा।
# Exploit Title: FileBrowser 2.17.2 - Cross Site Request Forgery (CSRF) to Remote Code Execution (RCE)
# Date: 05/02/2022
# Exploit Author: FEBIN MON SAJI
# Vendor Homepage: https://filebrowser.org/
# Software Link: https://github.com/filebrowser/filebrowser
# Version:
FileBrowser <= 2.17.2
# Tested on: Ubuntu 20.04
# CVE : CVE-2021-46398
FileBrowser की वेबसाइट के अनुसार, FileBrowser एक लोकप्रिय "अपना-खुद-का-क्लाउड-बनाएँ" प्रकार का सॉफ्टवेयर है जिसे आप एक सर्वर पर स्थापित कर सकते हैं, इसे एक पथ पर निर्देशित कर सकते हैं और फिर Go भाषा में विकसित एक सुंदर वेब इंटरफ़ेस के माध्यम से अपनी फ़ाइलों तक पहुँच सकते हैं, जिसमें कई सुविधाएँ हैं। यह कुछ हद तक Google Drive जैसा है, सिवाय इसके कि हर कोई अपना स्वयं का इंस्टेंस रख सकता है और होस्ट कर सकता है।
FileBrowser के एडमिन कई उपयोगकर्ता बना सकते हैं, यहाँ तक कि एक और एडमिन-विशेषाधिकार प्राप्त उपयोगकर्ता भी, और किसी भी निर्देशिका तक पहुँच दे सकते हैं जिसे वे चाहते हैं। उपयोगकर्ता निर्माण को एक एंडपॉइंट द्वारा संभाला जाता है। एंडपॉइंट उपयोगकर्ता बनाने के लिए प्रारूप में इनपुट स्वीकार करता है, लेकिन हेडर को सत्यापित करने में विफल रहता है, जिसका मान होना चाहिए, लेकिन वह स्वीकार करता है; और यहीं कमजोरी उत्पन्न होती है। साथ ही, सत्यापित नहीं किया जाता है और कोई एंटी- टोकन भी लागू नहीं किए गए हैं। इसलिए एक हमलावर इस कमजोरी का आसानी से शोषण करके एक बैकडोर उपयोगकर्ता बना सकता है जिसके पास एडमिन विशेषाधिकार और होम डायरेक्टरी या उस निर्देशिका तक पहुँच होगी जिस तक हमलावर पहुँचना चाहता है, केवल वैध एडमिन को एक दुर्भावनापूर्ण वेबपेज URL भेजकर और पूरे सर्वर के फ़ाइल सिस्टम तक पहुँच प्राप्त करके (इस प्रक्रिया का अधिक स्पष्टीकरण प्रदर्शन अनुभाग में दिया गया है)।
/api/usersContent-Typeapplication/jsontext/plainOriginइसके अलावा, एक एडमिन सिस्टम पर कमांड चला सकता है, इसलिए यह कमजोरी एक RCE की ओर ले जाती है।
यहाँ एक अनुक्रम आरेख है जो हमले की प्रक्रिया का सारांश प्रस्तुत करता है (एलिस हैकर है और बॉब FileBrowser इंस्टेंस का एडमिन और होस्ट है):
sequenceDiagram
Alice (hacker) ->> Alice (hacker): *Maliciously creates the malicious HTML page*
Alice (hacker) ->> Bob (admin): Here is a cool page! You must check that bro!
Bob (admin) ->> Alice (hacker): Thanks dude, let's open that!
Bob (admin) ->> Bob (admin): *Opens the page thinking it's something cool*
Bob (admin) -->> FileBrowser: *Sends a request to create a user without knowing it*
FileBrowser -->> FileBrowser: *Creates a new admin privileged user as requested*
Alice (hacker) ->> FileBrowser: Eheheh Bob is so dumb! *Connect to FileBrowser with the backdoor user*
FileBrowser ->> Alice (hacker): *Accept Alice connection with the new user created*
Alice (hacker) ->> FileBrowser: *Request shell access to FileBrowser with the appropriate button then makes sytem calls on Bob's computer*इस प्रदर्शन का उद्देश्य दो/तीन मशीनों से बना एक लघु-आर्किटेक्चर स्थापित करना है:
यह वास्तव में एक सरलीकृत आर्किटेक्चर है जिसका उद्देश्य दोष के तकनीकी पहलू को उजागर करना है।
इस प्रयोग के लिए, आपको केवल docker की आवश्यकता होगी।
इस सेटअप में, लक्ष्य मशीन एक FileBrowser v2.17.2 इमेज पर आधारित है (जो इस दोष के प्रति कमजोर है), जिसमें केवल FileBrowser का खाता एडमिनिस्ट्रेटर खाता है जिसमें लॉगिन/पासवर्ड admin/admin है।
लक्ष्य मशीन लॉन्च करना:
mkdir srv && docker compose up
हमलावर की ओर से, दुर्भावनापूर्ण वेबपेज हमें FileBrowser API कॉल को निष्पादित करने और एडमिनिस्ट्रेटर के कंप्यूटर से अपना बैकडोर उपयोगकर्ता बनाने की अनुमति देगा।
ऐसे पेज का एक उदाहरण इस रिपॉजिटरी में index.html नाम से प्रदान किया गया है। यह एक सरल HTML पेज है जिसमें एक छिपा हुआ फ़ॉर्म है जो इनपुट के नाम पर पेलोड के साथ /api/users FileBrowser एंडपॉइंट पर एक POST अनुरोध करता है। यह पेलोड एक एडमिन-विशेषाधिकार प्राप्त उपयोगकर्ता बनाता है जिसका लॉगिन "oui" और पासवर्ड "oui" है, और यह बटन क्लिक करने पर ट्रिगर होता है।
हम स्पष्ट रूप से इससे अधिक सुंदर और आकर्षक पेज बना सकते थे और HTTP अनुरोध भेजने को वेबसाइट के किसी अन्य तत्व में छिपा सकते थे, यह केवल इसलिए है ताकि आप दोष के शोषण का तकनीकी पहलू देख सकें। याद रखें कि इस दुर्भावनापूर्ण वेबपेज का लक्ष्य FileBrowser के एडमिन द्वारा बिना किसी संदेह के खोला जाना है!
एडमिन की ओर से, हम FileBrowser पर चुपचाप एडमिन का काम कर रहे हैं। 127.0.0.1:8080 पर जाएँ और एडमिन क्रेडेंशियल admin/admin के साथ लॉग इन करें।
फिर, हमें दुर्भावनापूर्ण वेबपेज किसी भी माध्यम से प्राप्त हुआ, जैसे कि फ़िशिंग ईमेल में, और हम वह क्रिया करते हैं जो शोषण को ट्रिगर करती है। index.html वेबपेज खोलें और बटन पर क्लिक करें; यह पेलोड लॉन्च करता है।
अब, हमलावर की ओर वापस आते हुए, अब हमारे पास FileBrowser सर्वर पर एक एडमिन-विशेषाधिकार प्राप्त बैकडोर उपयोगकर्ता है।
यह सुनिश्चित करने के लिए अपना पसंदीदा वेब ब्राउज़र निजी ब्राउज़िंग में खोलें कि आप एडमिनिस्ट्रेटर के किसी भी प्रमाणीकरण साधन का उपयोग नहीं कर रहे हैं। localhost:8080 पर जाएँ और बैकडोर उपयोगकर्ता क्रेडेंशियल oui/oui के साथ लॉग इन करें।
बधाई हो! अब आपके पास FileBrowser के सर्वर फ़ाइल सिस्टम तक पहुँच है और इस प्रकार सर्वर के सभी उपयोगकर्ताओं की फ़ाइलों तक पहुँच है!
और क्योंकि FileBrowser बहुत सारी सुविधाओं वाला एक महान प्लेटफ़ॉर्म है, आप "toggle shell" बटन दबाकर एक टर्मिनल इंस्टेंस लॉन्च कर सकते हैं... whoami टाइप करके देखें, और रूट के रूप में जो चाहें करें :)
बैकडोर उपयोगकर्ता को शेल कमांड का उपयोग करने की अनुमति देने के लिए, उन्हें पेलोड पर स्पष्ट रूप से घोषित किया जाना चाहिए। अपने कमांड जोड़ने के लिए
index.htmlदेखें!
यह दोष v2.18.0 संस्करण से पैच किया गया है। इसके बारे में जानकारी उनके GitHub पर उपलब्ध है। पैच को तैनात करना बहुत जटिल नहीं था क्योंकि इसमें एक ही प्रोग्राम फ़ाइल में केवल 6 लाइनों के कोड को बदलने की आवश्यकता थी। चूँकि कमजोरी पार्सिंग विफलता से उत्पन्न हुई थी (देखें दोष विवरण), यह सुनिश्चित करना पर्याप्त था कि किसी भी अन्य चीज़ के लिए संसाधित होने से पहले किसी भी अनुरोध को application/json प्रारूप में पार्स किया जाए।
यह कार्य सूचना प्रणाली इंजीनियरिंग विशेषज्ञता के अंतिम वर्ष में Grenoble INP - Ensimag, UGA में दिए गए सूचना प्रणाली सुरक्षा पाठ्यक्रम के भाग के रूप में किया गया था।