ld.so privesc exploit example
Préparer l'environnement
Dans la section suivante, vous pouvez trouver le code des fichiers que nous allons utiliser pour préparer l'environnement
Créez ces fichiers sur votre machine dans le même dossier
Compilez la bibliothèque :
gcc -shared -o libcustom.so -fPIC libcustom.c
Copiez
libcustom.so
dans/usr/lib
:sudo cp libcustom.so /usr/lib
(droits root)Compilez l'exécutable :
gcc sharedvuln.c -o sharedvuln -lcustom
Vérifiez l'environnement
Vérifiez que libcustom.so est chargée depuis /usr/lib et que vous pouvez exécuter le binaire.
Exploit
Dans ce scénario, nous allons supposer que quelqu'un a créé une entrée vulnérable à l'intérieur d'un fichier dans /etc/ld.so.conf/ :
Le dossier vulnérable est /home/ubuntu/lib (où nous avons un accès en écriture). Téléchargez et compilez le code suivant à l'intérieur de ce chemin :
Maintenant que nous avons créé la bibliothèque malveillante libcustom à l'intérieur du chemin mal configuré, nous devons attendre un redémarrage ou que l'utilisateur root exécute ldconfig
(si vous pouvez exécuter ce binaire en tant que sudo ou s'il a le bit suid, vous pourrez l'exécuter vous-même).
Une fois cela fait, revérifiez d'où l'exécutable sharevuln
charge la bibliothèque libcustom.so
:
Comme vous pouvez le voir, il charge depuis /home/ubuntu/lib
et si un utilisateur l'exécute, un shell sera exécuté :
Notez que dans cet exemple, nous n'avons pas élevé les privilèges, mais en modifiant les commandes exécutées et en attendant qu'un utilisateur privilégié ou root exécute le binaire vulnérable, nous pourrons élever les privilèges.
Autres mauvaises configurations - Même vulnérabilité
Dans l'exemple précédent, nous avons simulé une mauvaise configuration où un administrateur a défini un dossier non privilégié dans un fichier de configuration dans /etc/ld.so.conf.d/
.
Mais il existe d'autres mauvaises configurations qui peuvent causer la même vulnérabilité, si vous avez des permissions d'écriture sur un fichier de configuration à l'intérieur de /etc/ld.so.conf.d
, dans le dossier /etc/ld.so.conf.d
ou dans le fichier /etc/ld.so.conf
, vous pouvez configurer la même vulnérabilité et l'exploiter.
Exploit 2
Supposons que vous ayez des privilèges sudo sur ldconfig
.
Vous pouvez indiquer à ldconfig
où charger les fichiers de configuration, donc nous pouvons en profiter pour faire charger à ldconfig
des dossiers arbitraires.
Alors, créons les fichiers et dossiers nécessaires pour charger "/tmp" :
Maintenant, comme indiqué dans l'exploit précédent, créez la bibliothèque malveillante dans /tmp
.
Et finalement, chargeons le chemin et vérifions d'où le binaire charge la bibliothèque :
Comme vous pouvez le voir, avoir des privilèges sudo sur ldconfig
vous permet d'exploiter la même vulnérabilité.
Je n'ai pas trouvé de moyen fiable d'exploiter cette vuln si ldconfig
est configuré avec le bit suid. L'erreur suivante apparaît : /sbin/ldconfig.real: Can't create temporary cache file /etc/ld.so.cache~: Permission denied
Références
Dab machine in HTB
Last updated