
CVE-2021-33831 के लिए एक्सप्लॉइट उदाहरण कोड
यह एप्लिकेशन जर्मन संक्रमण कानूनों के अनुसार लोगों पर नज़र रखने के लिए उपयोग किया जाता है ताकि Covid-19 संक्रमण श्रृंखलाओं का पता लगाया जा सके। इसे iCampus नामक एक छात्र परियोजना द्वारा बनाया गया था और इसका उपयोग न केवल विल्डाउ विश्वविद्यालय में बल्कि कॉटबस-सेनफ्टेनबर्ग में भी किया जाता है। लगभग 10.000 लोग प्रभावित हैं। विश्वविद्यालयों के अतिथियों को इस एप्लिकेशन का उपयोग करना आवश्यक है।
एप्लिकेशन में Vue फ्रंटएंड और Laravel बैकएंड शामिल है।
बैकएंड अतिथि उपयोगकर्ता पंजीकरण एंडपॉइंट /corona-app-backend/api/account/register को उजागर करता है
जो विश्वविद्यालय के अतिथियों के पंजीकरण की अनुमति देता है। विश्वविद्यालय के सदस्य अपने सिंगल साइन ऑन उपयोगकर्ता नाम/पासवर्ड संयोजन का उपयोग करके लॉगिन कर सकते हैं।
यह पंजीकरण एंडपॉइंट उपयोगकर्ताओं के स्वचालित निर्माण के विरुद्ध सुरक्षित नहीं है (जैसे कैप्चा के माध्यम से)। एक बार जब कोई प्रोग्राम /corona-app-backend/sanctum/csrf-cookie के माध्यम से एक csrf कुकी और /corona-app-backend/account के माध्यम से एक सत्र टोकन प्राप्त कर लेता है, तो वह उपयोगकर्ता बना सकता है। जितने चाहे उतने। जब तक चाहे। बहुत सारे नकली उपयोगकर्ता एक स्वास्थ्य संगठन के लिए संक्रमण श्रृंखलाओं का पता लगाना व्यावहारिक रूप से असंभव बना देते हैं, जिससे यह एक सेवा-अस्वीकृति (denial of service) हमले का प्रकार बन जाता है।
उपयोगकर्ता का पंजीकरण पंजीकरण एंडपॉइंट पर एक post है जिसमें csrf कुकी और सत्र टोकन निम्नलिखित json पेलोड के साथ होता है:
{"first_name":"John","last_name":"Doe","telephone":"099182","email":null,"accept":true}
या तो email या phone फ़ील्ड सेट होना चाहिए। दोनों सत्यापित नहीं हैं (सिंटैक्स जांच के अलावा)।
एक वैध उपयोगकर्ता सत्र के साथ एंडपॉइंट /corona-app-backend/api/visit के माध्यम से विज़िट (कमरों में चेक-इन) बनाई जा सकती हैं।
एक विज़िट विज़िट एंडपॉइंट पर एक post है जिसमें csrf कुकी और सत्र टोकन निम्नलिखित json पेलोड के साथ होता है:
{"room":"15-K01","visited_on":"2021-05-09T22:01:00.000Z","exited_on":"2021-05-10T21:59:00.000Z"}')
room फ़ील्ड का मान एक सूची से प्राप्त किया जा सकता है जिसे रूम एंडपॉइंट /corona-app-backend/api/rooms से प्राप्त किया जा सकता है और यह विश्वविद्यालय के सभी कमरों के साथ एक json वितरित करता है। कॉल सफल होने के लिए केवल csrf कुकी और सत्र टोकन की आवश्यकता होती है।
समस्या की तुलना CVE-2021-33840 से की जा सकती है, लेकिन यह बहुत आगे तक जाती है।
साथ ही एप्लिकेशन में फ्रंटएंड/बैकएंड भागों में कोई एन्क्रिप्शन नहीं है (https के माध्यम से परिवहन एन्क्रिप्शन के अलावा)। बैकएंड बिना एन्क्रिप्टेड json डेटा प्राप्त करता है और बिना एन्क्रिप्टेड json डेटा वितरित करता है।
Perl भाषा में पूरी तरह से स्वचालित exploit कोड (यादृच्छिक नाम डेटाबेस से) यादृच्छिक लेकिन मान्य दिखने वाले फोन नंबरों के साथ 500 उपयोगकर्ता बनाता है और सभी उपयोगकर्ता एक कमरे में चेक इन होते हैं। पूरी तरह से स्वचालित। सर्वर को ओवरलोड न करने और किसी भी मौजूदा सुरक्षा को ट्रिगर न करने के लिए 5s/request की समय देरी डाली गई थी। Exploit पूरी तरह से स्वचालित रूप से सफलतापूर्वक चला और मैंने उसी दिन बनाए गए नकली उपयोगकर्ताओं सहित समस्या की सूचना विश्वविद्यालय को दी।
कमरा चुनने से पहले मैंने सुनिश्चित किया कि उस दिन कमरा विज़िट नहीं किया गया था। यह संभव है क्योंकि एप्लिकेशन में एक काउंटर होता है जिसमें बताया जाता है कि किसी विशिष्ट कमरे में एक व्यक्ति कितने लोगों के संपर्क में आया था। इसलिए यदि कोई किसी कमरे में जाता है और वह काउंटर 0 है, तो उस समय अवधि में उस कमरे में कोई और नहीं था।
यह एप्लिकेशन CVE-2021-3129 से एक RCE से भी प्रभावित था, जिसे मैंने 12.04.2021 को विश्वविद्यालय को सूचित किया था।
वर्तमान समस्या 31.05.2021 को सूचित की गई थी।
दोनों रिपोर्टों के लिए मुझे रिपोर्ट करने के अगले दिन रसीद की पुष्टि वाला ईमेल प्राप्त हुआ। उसके बाद मुझे कुछ और प्राप्त नहीं हुआ।
एप्लिकेशन के स्रोत कोड के लिए एक अनुरोध प्रगति पर है।