web-dev-qa-db-fra.com

Liens symboliques, vulnérabilité d'escalade de chemin et privilège de privilège

Je suis un peu inexpérimenté à cela ...

J'utilise cela VM https://www.vulnhub.com/entry/the-wall-1,130/ pour la pratique et il y a une étape je ne fais pas comprendre. Ici: https://research.g0blin.co.uk/thewall-vulnhub-ritereup/

Après avoir appelé des chaînes sur le binaire, je peux voir un chemin qui n'est pas correctement limité à un chemin d'accès statique. Un moyen assez brut de trouver la vulnérabilité, mais efficace.

Donc, fondamentalement pour obtenir la coquille de Davidgilmour, j'ai besoin de créer un lien symbolique vers/bin/sh in/tmp/mail et modifier la variable du chemin. Mais je ne comprends pas pourquoi cela est fait ni comment cela fonctionne. Quelqu'un peut-il m'expliquer?

Je sais que la variable du chemin est l'endroit où les exécutables sont, comme dans Windows, de sorte que lorsque j'écris, par exemple, "CAT" ou une autre commande dans l'invite de commande, cela fonctionne et je n'ai pas à écrire tout le chemin pour Chat (au moins c'est ce que je crois que ça fait).

Et pourquoi le lien symbolique est-il enregistré sur/TMP/mail? Et pourquoi un lien symbolique est-il même utilisé?

3
Mark Read

L'attaquant tente de faire fonctionner une coquille en tant qu'utilisateur DavidGilmour. Sur la base de leurs explorations, la décision est d'essayer d'exploiter une vulnérabilité dans le binaire shineon binaire car ce binaire est défini vers DavidGilmour:

$ ls -lah /usr/local/bin/shineon
-rwsr-s---  1 DavidGilmour  RichardWright   7.3K Oct 25 07:58 /usr/local/bin/shineon

Notez le s dans les autorisations. Cela indique que lorsque shineon est exécuté, il fonctionnera comme DavidGilmour. Mais comme shineon est un programme de fonctionnalité limitée, il n'a pas de start Shell commande. Au lieu de cela, l'attaquant examine la fonctionnalité que la coquille fournit:

1. Calendar
2. Who
3. Check Internet
4. Check Mail
5. Exit

puis regarde les cordes à l'intérieur du binaire. Les chaînes correspondantes sont:

/usr/bin/cal
/usr/bin/who
/sbin/ping -c 3 www.google.com
mail

L'attaquant devine que ce sont les chaînes de commandes utilisées pour exécuter la fonctionnalité de l'application: Calendar correspond à /usr/bin/cal, etc ... l'attaquant remarque intelligemment que mail n'a pas de chemin complet. Cela signifie que le script exécutera la première commande mail il trouve dans le PATH. L'attaquant crée donc une commande nommée mail dans certains répertoires aléatoires. Ils ont choisi /tmp, mais ce choix est sans importance. La commande est un lien symbolique à /bin/sh. Un lien symbolique crée un alias entre deux fichiers. Dans ce cas, lorsque le système d'exploitation exécute /tmp/mail, il sera réellement exécuter /bin/sh. Ils auraient pu copier /bin/sh à /tmp/mail aussi, mais pourquoi déranger. La copie prend du temps et utilise un espace disque. La liaison symbolique est tout aussi efficace et plus rapide.

La dernière étape consiste à définir la variable d'environnement PATH pour commencer avec /tmp Pour que lorsque le système d'exploitation va exécuter la commande mail, il trouvera /tmp/mail. Et, étant que ce n'est qu'un lien symbolique à /bin/sh, il exécutera /bin/sh comme DavidGilmour (rappelez-vous que le programme est défini afin qu'il fonctionne toujours comme DavidGilmour).

Objectif atteint!

4
Neil Smithline