
Vulnérabilité de traversée de chemin dans NitroShare v0.3.4
NitroShare Desktop v0.3.4 contient une vulnérabilité de traversée de chemin dans son serveur de transfert de fichiers LAN. Le serveur écoute sur toutes les interfaces réseau (port 40818) sans authentification. Lors de la réception de fichiers, le champ name de l'en-tête d'élément JSON de l'expéditeur est transmis sans vérifier que le chemin résolu reste dans le répertoire racine de transfert, C:\UserName\Downloads\NitroShare. Un attaquant sur le même LAN peut envoyer un nom de fichier spécialement conçu contenant des séquences ../ (attaque classique de type « dot dot slash ») pour écrire des fichiers partout où l'utilisateur courant a accès, y compris le dossier de démarrage de Windows pour une exécution de code à la prochaine connexion (d'où le POC qui a été créé). Aucune interaction de l'utilisateur n'est requise. De plus, TLS est désactivé par défaut (la méthode d'authentification que l'application propose), ce qui signifie qu'aucune authentification n'est requise par défaut, et je suppose que la plupart des utilisateurs n'en utiliseront pas, d'après des années de travail dans l'informatique et la sécurité de l'information.
{"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>"}
Un PoC fonctionnel est fourni (poc_path_traversal_via_lan_transfer___arbitrary_file_w.py) et a été vérifié contre NitroShare 0.3.4 sous Windows.
/, \) et les séquences ... Après résolution avec QDir::absoluteFilePath(), vérifiez que le résultat commence par le répertoire racine de transfert avant de continuer.