
BigBlueButton-Versionen unter 2.2.4 weisen eine LFI-Sicherheitslücke auf, die Zugriff auf sensible Dateien ermöglicht. 🚨
BigBlueButton-Versionen unter 2.2.4 weisen eine LFI-Schwachstelle auf, die den Zugriff auf sensible Dateien ermöglicht.
Während eines Fernlehrgangs auf einer BigBlueButton-Instanz teilte ein Student aus meiner Klasse den Link zur Folienpräsentation meines Lehrers, und mir fiel auf, dass der Dateiname in der URL enthalten war.

Student: „Kein Grund, Notizen zu schreiben, ich habe die Folie."
Ich: Nun ja, ich habe einen Sicherheitsbericht zu schreiben. 😂
Indem ich ein wenig damit herumspielte, konnte ich auf die Datei /etc/passwd des Servers zugreifen und die Existenz einer Sicherheitslücke in der Open-Source-Lösung Big Blue Button entdecken.
Ich meldete die Schwachstelle, und das BBB-Team antwortete mir schnell und schloss die Sicherheitslücke (es dauerte nur wenige Tage).
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);
}
Wie Sie sehen können, ermöglicht diese von einem PresentationController verwendete Methode das Herunterladen einer Präsentationsdatei durch Verkettung von 3 Parametern.
Dies ermöglicht Links wie diesen:
https://test.bigbluebutton.org/bigbluebutton/presentation/download/ffc98830dbfbac3dcc80cc4c5f30711ebd1c23e8-1586764259489/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1586764259500?presFilename=d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1586764259500.pdf
Um die Schwachstelle auszunutzen, genügt es, einen gültigen Link zu einer Präsentationsdatei zu erhalten und den Parameter presFilename zu ändern, um auf sensible Dateien zuzugreifen.
https://test.bigbluebutton.org/bigbluebutton/presentation/download/ffc98830dbfbac3dcc80cc4c5f30711ebd1c23e8-1586764259489/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1586764259500?presFilename=../../../../../etc/passwd

Das BBB-Team schloss die Schwachstelle in Version 2.2.4 über eine Serverkonfigurationsregel (HTTP), einen regulären Ausdruck und ein präzises Dateinamenformat.
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"';
}