
CVE-2023-22518 Atlassian Confluence Server के लिए एक्सप्लॉइट विश्लेषण, जिसमें सेटअप, JAR डिफिंग, मूल कारण, और एडमिन पहुँच पुनः प्राप्त करने के लिए अनधिकृत पुनर्स्थापना शामिल है।
Confluence में CVE-2023-22518
CVE-2023-22518 : यह भेद्यता "Confluence के डेटाबेस और सर्वर में अनुचित प्राधिकरण भेद्यता" के रूप में वर्णित है। यह दोष Atlassian उत्पादों के On-premises संस्करणों को प्रभावित करता है।
पर्यावरण सेट करें। दोषपूर्ण संस्करण 8.0.4 का उपयोग करें। डाउनलोड URL: https://product-downloads.atlassian.com/software/confluence/downloads/atlassian-confluence-8.0.4-x64.exe

Trial Installation चुनें, फिर फ्री ट्रायल key पाने के लिए लिंक पर क्लिक करें। फिर क्लस्टर सेट करें: non-cluster चुनें।

फिर डेटाबेस सेटअप पर जाएँ -> MySQL चुनें।

निर्देशों का पालन करें:
MySQL ड्राइवर डाउनलोड करें .jar फ़ाइल को /home/lily/atlassian/confluence/confluence/WEB-INF/lib में डालें Confluence को पुनरारंभ करें और सेटअप प्रक्रिया जारी रखें।

डेटाबेस कॉन्फ़िगर करें, user और password table बनाएँ।
CREATE DATABASE securedb CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'admin123'@'localhost' IDENTIFIED BY 'supersecure';
GRANT ALL PRIVILEGES ON securedb.* TO 'admin123'@'localhost';
GRANT SUPER ON *.* TO 'your_username'@'your_host';
FLUSH PRIVILEGES;
फिर edit /etc/mysql/my.cnf करें। इसमें निम्न पंक्तियाँ जोड़ें:
transaction-isolation = READ-COMMITTED
log_bin_trust_function_creators = 1

फिर Mysql और Confluence को पुनरारंभ करें। फिर localhost:8090 पर सेटअप पृष्ठ पर जाएँ और बनाए गए डेटाबेस का उपयोग करके भरें।

कनेक्शन सफलता जाँचें, Next पर क्लिक करें। फिर Sign up करें।

** दोनों संस्करणों की jar फ़ाइलों को IntelliJ में diff करें **

SystemAdminOnly : एक सुविधा है जो प्रशासनिक कार्यों को केवल व्यवस्थापक खातों तक सीमित करती है। यह सुनिश्चित करने में मदद करता है कि केवल अधिकृत खाते ही महत्वपूर्ण कार्य कर सकें जो सिस्टम को प्रभावित करते हैं।
RestoreAction.class के validate() पर breakpoint लगाएँ।

अपलोड की गई फ़ाइल को getRestoreFileFromUpload द्वारा सहेजने वाला फ़ंक्शन।

GetExportDescriptor का उपयोग zip फ़ाइल को अनज़िप करने और उसकी सामग्री पढ़ने के लिए किया जाता है।


हालाँकि, डिबग करने के बाद भी भेद्यता का मूल कारण नहीं मिल पाया।
CVE में वर्णित कारण प्राधिकरण भेद्यता है। इससे हमारा ध्यान Java भाषा की भेद्यताओं पर शोध की ओर जाता है, जो डेवलपर द्वारा प्राधिकरण प्रक्रिया के दौरान होती हैं।
ध्यान struts.xml फ़ाइल की ओर स्थानांतरित करें; यह फ़ाइल नामस्थानों के आधार पर क्रियाओं और रूटिंग के साथ-साथ इंटरसेप्टर के बारे में जानकारी रखती है।



हम देखते हैं कि namespace /json, namespace /admin की कार्यक्षमता को बढ़ाता है। इसलिए, namespace /admin के लिए बनाए गए रूट को namespace /json के माध्यम से भी एक्सेस किया जा सकता है।
namespace /json के संदर्भ में, अनुरोध रूटिंग प्रक्रिया में इंटरसेप्टर की एक श्रृंखला से गुजरना शामिल है। इनमें से एक इंटरसेप्टर, जिसे WebSudoInterceptor कहा जाता है, अनुरोध URI के आधार पर जाँच करता है।
विशेष रूप से, WebSudoInterceptor निम्नलिखित जाँच चरण करता है:
यदि अनुरोध पथ /authenticate.action है, तो इसे अनदेखा कर दिया जाता है। यदि अनुरोध पथ /admin है, तो यह जाँचता है कि WebSudoNotRequired विशेषता खाली है या नहीं।
यदि कोई अनुरोध '/json' को भेजा जाता है, तो '/json/action' का अनुरोध '/setup/action' और 'admin/action' पर अग्रेषित किया जाएगा। इस CVE में, कमजोर पथ '/json/setup-restore.action?synchronous=true' है।
BurpSuite में अनुरोध कैप्चर करें, GET /json/setup-restore.action। हालाँकि, "Method Not Allowed response" प्राप्त होता है। फिर POST /json/setup-restore.action?synchronous=true के साथ प्रयास करें और 200 प्रतिक्रिया प्राप्त करें।


फ़ाइल xmlexport-200123123001.zip अपलोड करें।

भेजें और प्रतिक्रिया प्राप्त करें।

अब हम account admin :admin से लॉग इन कर सकते हैं।

और परिणाम इस प्रकार प्राप्त होता है:
