9.8 KiB
Informações Básicas do 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!
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Adquira produtos oficiais PEASS & HackTricks
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-me no Twitter 🐦@carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para o repositório hacktricks e hacktricks-cloud repo.
Evite executar com root
Para não executar o Tomcat com root, uma configuração muito comum é definir um servidor Apache na porta 80/443 e, se o caminho solicitado corresponder a uma expressão regular, a solicitação é enviada para o Tomcat em execução em uma porta diferente.
Estrutura Padrão
├── bin
├── conf
│ ├── catalina.policy
│ ├── catalina.properties
│ ├── context.xml
│ ├── tomcat-users.xml
│ ├── tomcat-users.xsd
│ └── web.xml
├── lib
├── logs
├── temp
├── webapps
│ ├── manager
│ │ ├── images
│ │ ├── META-INF
│ │ └── WEB-INF
| | └── web.xml
│ └── ROOT
│ └── WEB-INF
└── work
└── Catalina
└── localhost
- A
WEB-INF
folder that contains theweb.xml
file, which is the deployment descriptor for the web application. - A
classes
folder that contains the compiled Java classes. - A
lib
folder that contains the JAR files needed for the web application. - Any other files or folders that are part of the web application.
- A pasta
bin
armazena scripts e binários necessários para iniciar e executar um servidor Tomcat. - A pasta
conf
armazena vários arquivos de configuração usados pelo Tomcat. - O arquivo
tomcat-users.xml
armazena as credenciais do usuário e suas funções atribuídas. - A pasta
lib
contém vários arquivos JAR necessários para o correto funcionamento do Tomcat. - As pastas
logs
etemp
armazenam arquivos de log temporários. - A pasta
webapps
é a raiz do Tomcat e hospeda todas as aplicações. A pastawork
atua como um cache e é usada para armazenar dados durante a execução.
Cada pasta dentro de webapps
deve ter a seguinte estrutura.
- Uma pasta
WEB-INF
que contém o arquivoweb.xml
, que é o descritor de implantação para a aplicação web. - Uma pasta
classes
que contém as classes Java compiladas. - Uma pasta
lib
que contém os arquivos JAR necessários para a aplicação web. - Quaisquer outros arquivos ou pastas que fazem parte da aplicação web.
webapps/customapp
├── images
├── index.jsp
├── META-INF
│ └── context.xml
├── status.xsd
└── WEB-INF
├── jsp
| └── admin.jsp
└── web.xml
└── lib
| └── jdbc_drivers.jar
└── classes
└── AdminServlet.class
O arquivo mais importante entre eles é o WEB-INF/web.xml
, que é conhecido como descritor de implantação. Este arquivo armazena informações sobre as rotas usadas pela aplicação e as classes que lidam com essas rotas.
Todas as classes compiladas usadas pela aplicação devem ser armazenadas na pasta WEB-INF/classes
. Essas classes podem conter lógica de negócios importantes, bem como informações confidenciais. Qualquer vulnerabilidade nesses arquivos pode levar à comprometimento total do site. A pasta lib
armazena as bibliotecas necessárias para essa aplicação específica. A pasta jsp
armazena Jakarta Server Pages (JSP), anteriormente conhecido como JavaServer Pages
, que pode ser comparado a arquivos PHP em um servidor Apache.
Aqui está um exemplo de arquivo web.xml.
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>AdminServlet</servlet-name>
<servlet-class>com.inlanefreight.api.AdminServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AdminServlet</servlet-name>
<url-pattern>/admin</url-pattern>
</servlet-mapping>
</web-app>
A configuração web.xml
acima define um novo servlet chamado AdminServlet
que é mapeado para a classe com.inlanefreight.api.AdminServlet
. Java usa a notação de ponto para criar nomes de pacotes, o que significa que o caminho no disco para a classe definida acima seria:
classes/com/inlanefreight/api/AdminServlet.class
Em seguida, é criado um novo mapeamento de servlet para mapear solicitações para /admin
com AdminServlet
. Essa configuração enviará qualquer solicitação recebida para /admin
para a classe AdminServlet.class
para processamento. O descritor web.xml
contém muitas informações sensíveis e é um arquivo importante para verificar ao aproveitar uma vulnerabilidade de Inclusão de Arquivo Local (LFI).
tomcat-users
O arquivo tomcat-users.xml
é usado para permitir ou negar o acesso às páginas de administração /manager
e host-manager
.
<?xml version="1.0" encoding="UTF-8"?>
<SNIP>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<!--
By default, no user is included in the "manager-gui" role required
to operate the "/manager/html" web application. If you wish to use this app,
you must define such a user - the username and password are arbitrary.
Built-in Tomcat manager roles:
- manager-gui - allows access to the HTML GUI and the status pages
- manager-script - allows access to the HTTP API and the status pages
- manager-jmx - allows access to the JMX proxy and the status pages
- manager-status - allows access to the status pages only
The users below are wrapped in a comment and are therefore ignored. If you
wish to configure one or more of these users for use with the manager web
application, do not forget to remove the <!.. ..> that surrounds them. You
will also need to set the passwords to something appropriate.
-->
<SNIP>
!-- user manager can access only manager section -->
<role rolename="manager-gui" />
<user username="tomcat" password="tomcat" roles="manager-gui" />
<!-- user admin can access manager and admin section both -->
<role rolename="admin-gui" />
<user username="admin" password="admin" roles="manager-gui,admin-gui" />
</tomcat-users>
O arquivo nos mostra para que cada um dos papéis manager-gui
, manager-script
, manager-jmx
e manager-status
fornecem acesso. Neste exemplo, podemos ver que um usuário tomcat
com a senha tomcat
tem o papel manager-gui
, e uma segunda senha fraca admin
é definida para a conta de usuário admin
.
Referências
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Você trabalha em uma empresa de cibersegurança? Você quer ver sua empresa anunciada no HackTricks? ou quer ter acesso à última versão do PEASS ou baixar o HackTricks em PDF? Confira 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 do Discord ou ao grupo do 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.