
Vulnerabilidade de Path Traversal no NitroShare v0.3.4
O NitroShare Desktop v0.3.4 contém uma vulnerabilidade de path traversal no seu servidor de transferência de arquivos LAN. O servidor escuta em todas as interfaces de rede (porta 40818) sem autenticação. Ao receber arquivos, o campo name do cabeçalho JSON do item do remetente é passado sem verificar se o caminho resolvido permanece dentro do diretório raiz de transferência, C:\UserName\Downloads\NitroShare. Um atacante na mesma LAN pode enviar um nome de arquivo manipulado contendo sequências ../ (ataque clássico de dot dot slash) para gravar arquivos em qualquer lugar onde o usuário atual tenha acesso, incluindo a pasta de Inicialização do Windows para execução de código no próximo login (daí o POC que foi criado). Nenhuma interação do usuário é necessária. Além disso, o TLS está desabilitado por padrão (o método de autenticação que o aplicativo oferece), o que significa que nenhuma autenticação é necessária por padrão, o que eu presumo que a maioria dos usuários fará com base em anos trabalhando em TI e Segurança da Informação.
{"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>"}
Um PoC funcional é fornecido (poc_path_traversal_via_lan_transfer___arbitrary_file_w.py) e foi verificado contra o NitroShare 0.3.4 no Windows.
/, \) e sequências ... Após resolver com QDir::absoluteFilePath(), verificar se o resultado começa com o diretório raiz de transferência antes de prosseguir.