
BigBlueButton versões inferiores a 2.2.4 possuem uma vulnerabilidade de LFI que permite acesso a arquivos confidenciais. 🚨
BigBlueButton versões inferiores a 2.2.4 têm uma vulnerabilidade LFI permitindo acesso a arquivos sensíveis.
Durante um curso de ensino a distância em uma instância do BigBlueButton, um aluno da minha turma compartilhou o link da apresentação de slides do meu professor e notei que o nome do arquivo estava incluído na URL.

Aluno: "Não precisa anotar, eu tenho o slide."
Eu: Bem, eu tenho um relatório de segurança para fazer. 😂
Brincando um pouco com isso, consegui acessar o arquivo /etc/passwd do servidor e descobrir a existência de uma vulnerabilidade de segurança na solução de código aberto Big Blue Button.
Relatei a vulnerabilidade, a equipe do BBB foi rápida em me responder e corrigir a vulnerabilidade (apenas alguns dias).
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);
}
Como você pode ver, este método usado por um PresentationController permite baixar um arquivo de apresentação concatenando 3 parâmetros.
Isso torna possível obter links como este:
https://test.bigbluebutton.org/bigbluebutton/presentation/download/ffc98830dbfbac3dcc80cc4c5f30711ebd1c23e8-1586764259489/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1586764259500?presFilename=d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1586764259500.pdf
Para explorar a vulnerabilidade, basta obter um link válido para um arquivo de apresentação e modificar o parâmetro presFilename para acessar arquivos sensíveis.
https://test.bigbluebutton.org/bigbluebutton/presentation/download/ffc98830dbfbac3dcc80cc4c5f30711ebd1c23e8-1586764259489/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1586764259500?presFilename=../../../../../etc/passwd

A equipe do BBB corrigiu a vulnerabilidade na versão 2.2.4 através de uma regra de configuração do servidor (HTTP), uma regex e um formato de nome de arquivo preciso.
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"';
}