Article original : Keep Calm and Hack The Box - Blocky

Hack The Box (HTB) est une plateforme en ligne qui vous permet de tester vos compétences en matière de 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

Blocky est assez simple dans l'ensemble et était basé sur une machine réelle. Il démontre les risques des mauvaises pratiques de mot de passe ainsi que l'exposition de fichiers internes sur un système public.

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

  • nmap
  • nikto
  • gobuster
  • wpscan
  • jd-gui
  • hash-identifier

Commençons.

J'ajoute blocky dans le fichier /etc/hosts

nano /etc/hosts

avec

10.10.10.37     blocky.htb

Image

É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

Je vais utiliser 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 blocky.htb

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

-v : Augmente le niveau de verbosité

blocky.htb : nom d'hôte pour la boîte Blocky

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

nmap blocky.htb

Image

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

Port 21, File Transfer Protocol (FTP) control (command)

Port 22, Secure Shell (SSH), connexions sécurisées, transferts de fichiers (scp, sftp) et redirection de port

Port 80, le plus souvent utilisé par 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

Image

J'utilise cette commande pour la liste de mots common.txt de dirb

gobuster dir -u blocky.htb -w /usr/share/wordlists/dirb/common.txt

Image

Nous pouvons voir qu'il y a des répertoires WordPress (wp-admin, wp-content-wp-includes). Il y a aussi quelques autres pages intéressantes (/phpmyadmin et /plugins)

J'utilise Nikto.

Nikto est un scanner de serveur web Open Source qui effectue des tests complets contre les serveurs web pour plusieurs éléments, vérifie les versions obsolètes de plus de 1250 serveurs, et les problèmes spécifiques aux versions sur plus de 270 serveurs. Il vérifie également les éléments de configuration du serveur tels que la présence de plusieurs fichiers index, les options du serveur HTTP, et tentera d'identifier les serveurs web et logiciels installés.

Plus d'informations sur l'outil ici

Image

J'utilise cette commande pour lancer le scan

nikto -host blocky.htb

Image

Je vois quelques répertoires qui pourraient être intéressants (/wp-content/uploads/ et /wp-login.php)

Enfin, j'utilise WPScan. WPScan est un scanner de vulnérabilités WordPress en boîte noire qui peut être utilisé pour scanner les installations WordPress distantes afin de trouver des problèmes de sécurité

Image

J'utilise cette commande pour lancer le scan

wpscan --url blocky.htb -e

Image

Image

Nous avons un nom d'utilisateur, Notch

Étape 2 - Visite de la page web

Visons les pages que nous avons trouvées lors de la phase de reconnaissance. Commençons par la page web principale. C'est un blog sur Minecraft - BlockyCraft

Image

Image

Je regarde la page wiki. Rien d'intéressant

Image

Je jette un coup d'œil à la page /wp-content/uploads. Rien d'intéressant

Image

Je trouve le panneau admin

Image

ainsi que le panneau phpMyAdmin

Image

Je navigue vers le dossier /plugins et trouve deux fichiers jar.

Un JAR est un format de fichier de package généralement utilisé pour agréger de nombreux fichiers de classe Java et des métadonnées et ressources associées en un seul fichier pour la distribution. Les fichiers JAR sont des fichiers d'archive qui incluent un fichier manifest spécifique à Java. Ils sont basés sur le format ZIP et ont généralement une extension de fichier .jar

Je télécharge les deux fichiers zip sur ma boîte Kali

Image

J'utilise JD-Gui pour décompiler les fichiers java. JD-GUI est un utilitaire graphique autonome qui affiche les codes sources Java des fichiers « .class ». Plus d'informations sur l'outil ici

Je lance l'outil avec

jd-gui

Et je sélectionne la classe JAVA que je veux lire - BlockyCore.class

Image

Je peux voir un nom d'utilisateur et un mot de passe

Image

Je reviens à phpMyAdmin et entre les identifiants que je viens de trouver. J'ai accès à la base de données

Image

Je regarde la table wp_users dans le dossier wordpress pour voir si je peux obtenir plus d'informations sur les utilisateurs du blog

La requête SQL

SELECT * FROM `wp_users`

qui peut être traduite par sélectionner tous les utilisateurs de la table wp_users ne nous donnerait qu'un seul résultat, Notch

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 les données et surtout les 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 hachage est très probablement un hachage MD5 (Wordpress)

Étape 3 - Utilisation du port 22

Je reviens sur mon terminal et me connecte en utilisant SSH

Le protocole SSH (également appelé Secure Shell) est une méthode de connexion à distance sécurisée d'un ordinateur à un autre. Il offre plusieurs options alternatives pour une authentification forte, et il protège la sécurité et l'intégrité des communications avec un chiffrement fort. C'est une alternative sécurisée aux protocoles de connexion non protégés (tels que telnet, rlogin) et aux méthodes de transfert de fichiers non sécurisées (telles que FTP).

Plus d'informations ici sur le protocole SSH

J'utilise la commande suivante

ssh notch@10.10.10.37

et j'entre le mot de passe que j'ai trouvé dans le fichier BlockyCore.class précédemment

Image

Étape 4 - Recherche du flag user.txt

Je suis maintenant connecté en tant que Notch. Je liste tous les dossiers/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 5 - Élévation de privilèges

Je vérifie l'utilisateur actuel avec sudo.

sudo est un programme pour les systèmes d'exploitation informatiques de type Unix qui permet aux utilisateurs d'exécuter des programmes avec les privilèges de sécurité d'un autre utilisateur, par défaut le superutilisateur. Il signifiait à l'origine « superutilisateur do » car les anciennes versions de sudo étaient conçues pour exécuter des commandes uniquement en tant que superutilisateur

Plus d'informations sur sudo ici

Image

Je liste les privilèges de l'utilisateur avec cette commande

sudo -l

J'utilise le même mot de passe que j'ai trouvé précédemment

Image

Je peux voir que Notch a des privilèges illimités et peut exécuter n'importe quelle commande sur le système. Je vérifie l'id. La commande id sous Linux est utilisée pour trouver les noms d'utilisateur et de groupe et les identifiants numériques de l'utilisateur actuel ou de tout autre utilisateur sur le serveur

Image

Je m'élève à root en utilisant cette commande

sudo su

Image

Étape 6 - Recherche du flag root.txt

Je suis maintenant un utilisateur root et peux naviguer vers le dossier root

Image

Je trouve le fichier root.txt !

Image

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