
2.2.4 से कम वर्शन वाले BigBlueButton में LFI कमज़ोरियाँ हैं जो संवेदनशील फ़ाइलों तक पहुँच की अनुमति देती हैं। 🚨
BigBlueButton के 2.2.4 से कम संस्करणों में LFI कमजोरी है जो संवेदनशील फ़ाइलों तक पहुंच की अनुमति देती है।
BigBlueButton इंस्टेंस पर एक दूरस्थ शिक्षा पाठ्यक्रम के दौरान, मेरी कक्षा के एक छात्र ने मेरे शिक्षक की स्लाइड प्रस्तुति का लिंक साझा किया और मैंने देखा कि फ़ाइल का नाम URL में शामिल था।

Student: "No need to write notes, I've got the slide."
Me: Well, I've got a security report to make. 😂
इसके साथ थोड़ा प्रयोग करके मैं सर्वर की /etc/passwd फ़ाइल तक पहुंच प्राप्त करने में सक्षम था और ओपन-सोर्स बिग ब्लू बटन समाधान पर एक सुरक्षा कमजोरी के अस्तित्व का पता लगाया।
मैंने भेद्यता की सूचना दी, BBB टीम ने मुझे जवाब देने और भेद्यता को पैच करने में तेजी दिखाई (केवल कुछ दिनों में)।
public File getDownloadablePresentationFile(String meetingId, String presId, String presFilename) {
log.info("Find downloadable presentation for meetingId={} presId={} filename={}", meetingId, presId, presFilename);
File presDir = Util.getPresentationDir(presentationBaseDir, meetingId, presId);
return new File(presDir.getAbsolutePath() + File.separatorChar + presFilename);
}
जैसा कि आप देख सकते हैं, PresentationController द्वारा उपयोग की जाने वाली यह विधि आपको 3 पैरामीटरों को संयोजित करके एक प्रस्तुति फ़ाइल डाउनलोड करने की अनुमति देती है।
यह इस तरह के लिंक प्राप्त करना संभव बनाता है:
https://test.bigbluebutton.org/bigbluebutton/presentation/download/ffc98830dbfbac3dcc80cc4c5f30711ebd1c23e8-1586764259489/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1586764259500?presFilename=d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1586764259500.pdf
भेद्यता का फायदा उठाने के लिए, बस एक प्रस्तुति फ़ाइल का एक मान्य लिंक प्राप्त करें और संवेदनशील फ़ाइलों तक पहुंचने के लिए presFilename पैरामीटर को संशोधित करें।
https://test.bigbluebutton.org/bigbluebutton/presentation/download/ffc98830dbfbac3dcc80cc4c5f30711ebd1c23e8-1586764259489/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1586764259500?presFilename=../../../../../etc/passwd

BBB टीम ने भेद्यता को 2.2.4 संस्करण में एक सर्वर कॉन्फ़िगरेशन नियम (HTTP), एक regex और एक सटीक फ़ाइलनाम प्रारूप के माध्यम से पैच किया।
location /bigbluebutton/presentation/download {
return 404;
}
location ~ "^/bigbluebutton/presentation/download\/[0-9a-f]+-[0-9]+/[0-9a-f]+-[0-9]+$" {
if ($arg_presFilename !~ "^[0-9a-f]+-[0-9]+\.[0-9a-zA-Z]+$") {
return 404;
}
proxy_pass http://127.0.0.1:8090$uri$is_args$args;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# Workaround IE refusal to set cookies in iframe
add_header P3P 'CP="No P3P policy available"';
}