Логотип exploitDog
Консоль
Логотип exploitDog

exploitDog

github логотип

GHSA-cfqx-f43m-vfh7

Опубликовано: 03 окт. 2024
Источник: github
Github: Прошло ревью
CVSS4: 5.5
CVSS3: 4.9

Описание

@saltcorn/server arbitrary file and directory listing when accessing build mobile app results

Summary

A user with admin permission can read arbitrary file and directory names on the filesystem by calling the admin/build-mobile-app/result?build_dir_name= endpoint. The build_dir_name parameter is not properly validated and it's then used to construct the buildDir that is read. The file/directory names under the buildDir will be returned.

Details

router.get( "/build-mobile-app/result", isAdmin, error_catcher(async (req, res) => { const { build_dir_name } = req.query; // [1] source const rootFolder = await File.rootFolder(); const buildDir = path.join( rootFolder.location, "mobile_app", build_dir_name // [2] ); const files = await Promise.all( fs .readdirSync(buildDir) // [3] sink .map(async (outFile) => await File.from_file_on_disk(outFile, buildDir)) ); [...] }) );

PoC

  • log into the application as an admin user
  • visit the following url: http://localhost:3000/admin/build-mobile-app/result?build_dir_name=/../../../../../../../../

NOTE: it's possible to only see file and directory names but not to download their content.

Impact

Information disclosure

Recommended Mitigation

Resolve the buildDir and check if it starts with ${rootFolder.location}/mobile_app.

Пакеты

Наименование

@saltcorn/server

npm
Затронутые версииВерсия исправления

<= 1.0.0-beta.13

1.0.0-beta.14

5.5 Medium

CVSS4

4.9 Medium

CVSS3

Дефекты

CWE-548

5.5 Medium

CVSS4

4.9 Medium

CVSS3

Дефекты

CWE-548