Salut les apprentis pentesteurs ! Aujourd’hui je vous invite sur Vulnhub . Il s’agit d’un writeup de résolution de la machine BlueSky. C’est parti pour ce tuto dans lequel on utilisera nmap, on fera du Fuzzing et on identifiera l’exploit pour obtenir un shell, à vos claviers !
Bluesky est donc une box Vulnhub de niveau “Easy”. Le challenge consiste à trouver le flag se trouvant dans /root.
Recon > Enum > exploitation > Privesc : Ce sont les étapes que nous mettrons en pratique une nouvelle fois à travers cette box.
J’espère que ce writeup VunHub vous mettra l’eau à la bouche pour continuer à exploiter de nouvelles machines.
Vulnhub, comment ça marche ?
Vulnhub est une plateforme sponsorisée par Offensive-security et constitue un recueil de machines vulnérables. Ces machines font partie de celles recommandées pour s’entraîner pour l’OSCP par exemple.
Pour en profiter, il suffit de choisir une machine virtuelle vulnérable selon votre niveau de compétence, la télécharger (format souvent compatible avec VMware ou Virtualbox).
Ensuite, vous devez utiliser vos connaissances techniques pour compromettre celle-ci (avoir l’accès du super administrateur dans la plupart des cas).
Pour en savoir plus: https://www.vulnhub.com/about/
BlueSky- Reconnaissance
Après téléchargement de la machine virtuelle à partir de ce lien, nous la déployons.
Vous devez ensuite configurer le réseau de la machine virtuelle en pont (Bridge) avec celui de votre machine physique et identifier premièrement l’adresse ip de la machine vulnérable.
Pour ce faire, il y a plusieurs méthodes de détection de cette adresse IP. Nous ferons cette détection avec nmap.
Tout d’abord, il vous faut connaître l’adresse réseau de votre machine physique. Le mien est le 192.168.43.0/24. Ainsi la commande ci-après nous révélera l’adresse ip de toutes les machines du réseau: nmap -sV 192.168.43.0-254

D’après le rapport de nmap, nous pouvons remarquer que notre machine virtuelle a pour adresse ip 192.168.43.115 et a deux ports ouverts.
Attaquons premièrement le port http.
BlueSky – Enumération
Commençons d’abord par le fuzzing des pages web cachées sur le port http à l’aide de DIRB. Alors les résultats n’ont pas été fructueux comme l’indique l’image ci-après

Les pages identifiées ne donnent rien d’exploitable. Sachant que Apache Tomcat à des pages particulières, nous avons choisi un autre wordlist pour le fuzzing

Suite à ce résultat, nous pouvons constater que le serveur web utilise le framework Struts ( pour en savoir plus https://fr.wikipedia.org/wiki/Apache_Struts).

Nous irons faire quelques recherches sur les potentielles vulnérabilités sur ce framework. Les recherches ont été fructueuses. En fait, l’application est vulnérable au CVE 2017-5638 dont l’exploit est disponible ici
BlueSky – Exploitation
L’exploit téléchargé nous permet d’exécuter arbitrairement des commandes en tant que l’utilisateur minhtuan

Le port ssh étant ouvert, nous avons pensé à ajouter notre clé publique dans le fichier authorized_keys du dossier caché ssh afin d’avoir accès au système par ssh pour une meilleure interactivité.

Une fois la clé ajoutée, nous pouvons nous connecter facilement à la VM à l’aide la commande ci-après: ssh [email protected]

Après connexion, un fichier user.txt attire notre attention. Malheureusement rien d’intéressant ne s’y trouve à part un message d’encouragement: Try your best, you have passed the first challenge, and the last one is for you, root me!
Rappellons que sur l’instruction accompagnant la VM était d’arriver à obtenir le contenu du fichier flag se trouvant dans le repertoire /root. En effet, Il faut faire sans doute une escalation de privilège !
BlueSky – Privesc
A ce niveau, nous utiliserons le script linpeas pour nous rendre la tâche facile 😀
En fait, linpeas (Linux Privilege Escalation Awesome Script) est un script qui, une fois lancé sur un système linux permet de ressortir des informations utiles du système pour faire de l’escalation de privilège.
Nous devons exécuter le script sur la machine vulnérable (vous pouvez envoyer le script par ssh ou copier directement et le code et l’enregistrer dans un fichier sur la machine vulnérable ou encore le télécharger directement avec wget). Après l’exécution, nous avons analysé avec attention les informations revelées et nous remarquons des fichiers intéressants du navigateur Firefox.

Pour bien fouiller dans ces fichiers, nous utiliserons un outil disponible sur github qui se chargera de déchiffrer le conteniu de ces fichiers. Il s’agit de Firefox decrypt
On exécutera firefox decrypt comme nous l’avons fait plus haut avec linpeas sur la machine vulnérable. Le mot de passe trouvé après exécution du firefox nous permet d’avoir le shell en tant que root.

Sur ce, nous mettons fin à cet article.
Que pouvons nous retenir de ce challenge ?
- Essayer plusieurs wordlists quand vous faîtes de l’énumération;
- LinPeas est un outil intéressant qui vous donne des idées d’escalation de privilège
- Mettez à jours vos frameworks
- Try Harder 😛
J’espère que ceci vous a été utile. A très bientôt dans d’autres tutos!