
Уязвимость обхода пути в NitroShare v0.3.4
NitroShare Desktop v0.3.4 содержит уязвимость path traversal в своём LAN-сервере передачи файлов. Сервер прослушивает все сетевые интерфейсы (порт 40818) без аутентификации. При получении файлов поле name из JSON-заголовка элемента отправителя передаётся без проверки того, что разрешённый путь остаётся в пределах корневого каталога передачи, C:\UserName\Downloads\NitroShare. Злоумышленник в той же LAN-сети может отправить специально сформированное имя файла, содержащее последовательности ../ (классическая атака dot dot slash), чтобы записать файлы в любое место, доступное текущему пользователю, включая папку автозагрузки Windows для выполнения кода при следующем входе в систему (именно поэтому и был создан PoC). Взаимодействие с пользователем не требуется. Кроме того, TLS отключён по умолчанию (метод аутентификации, который предлагает приложение), что означает отсутствие необходимости аутентификации по умолчанию, и, как я предполагаю, большинство пользователей так и оставят, исходя из многолетнего опыта работы в IT и информационной безопасности.
{"name":"attacker","size":"<n>","count":"1"}.{"name":"../../AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup/payload.exe","directory":false,"created":"0","last_modified":"0","last_read":"0","size":"<n>"}
Рабочий PoC прилагается (poc_path_traversal_via_lan_transfer___arbitrary_file_w.py) и был проверен на NitroShare 0.3.4 в Windows.
/, \) и последовательности ... После разрешения с помощью QDir::absoluteFilePath() убедитесь, что результат начинается с корневого каталога передачи, прежде чем продолжить.