Le nom de fichier qui s'exécute : injection de wildcard tar jusqu'à root

Élévation de Privilèges & Post-Exploitation Niveau 3/4 ~5 min 14 octobre 2026

Le défi

Une machine du service finance chez Calderwell lance une sauvegarde toutes les heures : elle se place dans le répertoire d'upload et archive avec tar tout ce qu'il contient. Le répertoire est accessible en écriture à l'utilisateur web, ce qui explique comment trois fichiers que personne n'a uploadés s'y sont retrouvés pendant la nuit. Deux d'entre eux ne sont pas du tout des rapports. Lisez le job de sauvegarde et le répertoire, puis donnez le nom exact du fichier déposé par un attaquant pour que la prochaine sauvegarde exécute son code en root.

Ce que tu vas apprendre

  • Expliquer comment le shell développe un glob en arguments séparés avant que la commande ne les voie
  • Comprendre que tar ne peut pas distinguer un nom de fichier d'une option une fois que le shell les a découpés
  • Identifier --checkpoint-action comme la fonctionnalité de tar qui transforme un nom de fichier en exécution de code
  • Comprendre pourquoi un dossier accessible en écriture sous un glob privilégié est en soi la vulnérabilité
  • Connaître les alternatives sûres (find -exec, listes de fichiers explicites, préfixe ./)

Compétences testées

Élévation de privilèges LinuxLecture de scripts shellAnalyse du système de fichiers

Prérequis

  • Commandes shell de base (ls, cat)
  • Ce que fait un glob (*)

Comment ça marche

Quand un shell voit tar czf out.tgz *, il remplace le * par tous les noms de fichiers du dossier et transmet chacun comme un argument séparé. La commande ne voit jamais de * ; elle voit une liste. Si l'un de ces noms de fichiers commence par un tiret, la commande le lit comme une option.

GNU tar possède une option, --checkpoint-action=exec=..., qui exécute une commande à intervalles réguliers. Un fichier nommé --checkpoint-action=exec=sh run.sh, placé dans le dossier, devient donc une instruction demandant à tar d'exécuter run.sh. Un attaquant qui peut seulement écrire des fichiers dans le dossier parcouru par le glob d'une tâche privilégiée fait exécuter son code avec les droits de l'utilisateur de cette tâche.

Le même piège s'applique à toute commande cmd * sur un contenu contrôlé par l'attaquant : chown, chmod, rsync et d'autres ont tous des échappatoires en forme d'option.

Erreurs fréquentes

  • Répondre run.sh. C'est le payload appelé par les options plantées, pas le fichier qui détourne tar. tar ne l'exécute que parce que le fichier d'option le lui demande.
  • Répondre avec un CSV. Les deux rapports sont le contenu ordinaire du spool et sont inoffensifs.
  • Vouloir lancer la sauvegarde ici. La tâche tourne en root selon un calendrier ; il suffit de reconnaître ce que fera la prochaine exécution.
  • Chercher un binaire SUID ou une règle sudo. L'élévation tient entièrement dans le glob et le nom de fichier, rien d'autre n'est mal configuré.

Comment s'en protéger

Ne laissez jamais une commande privilégiée parcourir par glob un dossier que d'autres peuvent modifier.

  • Remplacez le glob par une liste explicite et préfixée : find /srv/upload -maxdepth 1 -type f -print0 | tar --null -T - -czf ..., afin que les noms de fichiers ne puissent jamais être lus comme des options.
  • Ou désamorcez le tiret : tar czf out.tgz -- * ou ./*, pour que chaque opérande soit clairement un chemin.
  • Ne lancez pas la sauvegarde en root sur un spool accessible en écriture par le web. Abandonnez les privilèges, ou copiez le spool vers une zone de transit que l'utilisateur web ne peut pas toucher et sauvegardez celle-ci.

Solution complète

Les membres Pro et Max débloquent la solution complète étape par étape.

Passer Pro

Statistiques de la communauté

174 résolutions
83% taux de réussite
waltermoar Premier sang

Hacks du jour associés

Contributeurs

Contributeurs crédités

Ces hackers ont signalé des problèmes, amélioré le contenu et renforcé cette page.

32 000+ Hackers Vrais labs Gratuit
Commencer Gratuitement ou résolvez le hack du jour, sans compte