Snyking In - Exploitation d’une vulnérabilité de traversée de répertoires dans le package st
25 février 2019
0 minutes de lectureBienvenue dans le premier épisode d’une nouvelle série consacrée aux exploits, intitulée « Snyking In » ! Nous examinerons différentes vulnérabilités de sécurité, montrerons comment les exploiter et présenterons les risques qu’elles peuvent faire peser sur vos données et vos systèmes. Nos exemples porteront toujours sur des bibliothèques réelles qui présentent le type de vulnérabilité étudié dans au moins une de leurs versions publiées.
Et rassurez-vous, nous ne vous laisserons pas en plan ! Nous vous montrerons également comment détecter et corriger les vulnérabilités dans votre application. Sans plus attendre, découvrez notre première vidéo d’exploitation, suivie d’informations supplémentaires sur la vulnérabilité de traversée de répertoires.
Traversée de répertoires
Une attaque par traversée de répertoires (également appelée traversée de chemins) vise à accéder à des fichiers et répertoires situés en dehors du dossier prévu. En manipulant les fichiers à l’aide de séquences « point-point-barre oblique (../) » et de leurs variantes, ou en utilisant des chemins de fichiers absolus, il peut être possible d’accéder à des fichiers et répertoires arbitraires du système de fichiers, notamment au code source de l’application, à sa configuration et à d’autres fichiers système essentiels.
Les vulnérabilités de traversée de répertoires se répartissent généralement en deux catégories :
Divulgation d’informations : permet à l’attaquant d’obtenir des informations sur la structure des dossiers ou de lire le contenu de fichiers sensibles présents sur le système.
Écriture de fichiers arbitraires : permet à l’attaquant de créer des fichiers ou de remplacer des fichiers existants. Ce type de vulnérabilité est également connu sous le nom de Zip Slip.
Traversée de répertoires dans st
Le module st sert des fichiers statiques sur des pages web et présente une vulnérabilité de ce type. Dans notre exemple, nous servons des fichiers depuis la route publique.
Si un attaquant envoie l’URL suivante à notre serveur, celui-ci divulguera les informations sensibles stockées sur cette machine. Notez que %2e est la version encodée dans une URL du caractère . (point).
Ce type de traversée de répertoires constitue une vulnérabilité de divulgation d’informations : l’attaquant peut lire le contenu de fichiers sensibles. Les dommages se limitent aux informations auxquelles l’attaquant peut accéder sur le système.
L’exploit st
Dans la vidéo ci-dessus, le piratage est réalisé depuis une fenêtre de terminal, car le navigateur normaliserait la saisie. La première tentative d’exploitation utilise la notation point-point-barre oblique pour remonter au-delà du répertoire public :
La bibliothèque st est toutefois particulièrement attentive à la sécurité. Elle se protège contre la traversée de répertoires utilisant la notation point-point-barre oblique. Cependant, en encodant le point dans l’URL, comme indiqué précédemment, la commande suivante exploite avec succès la vulnérabilité :
Le résultat montre que nous pouvons désormais accéder au fichier package-lock.json, entre autres. Nous pouvons ainsi voir les autres modules et les versions utilisées par l’application. Nous pouvons aussi explorer plus en profondeur le système de fichiers à la recherche d’informations plus sensibles, comme dans la vidéo, où nous révélons le fichier /etc/passwd.
Pour tester votre application à la recherche de vulnérabilités dans des bibliothèques tierces telles que st, essayez Snyk gratuitement et obtenez des résultats instantanément.
Lancez-vous dans les challenges Capture The Flag
Apprenez à résoudre des challenges Capture The Flag en regardant à la demande notre atelier virtuel d’initiation.
