mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-22 02:53:28 +00:00
168 lines
9.4 KiB
Markdown
168 lines
9.4 KiB
Markdown
# Informações Básicas sobre o Tomcat
|
|
|
|
<details>
|
|
|
|
<summary><strong>Aprenda hacking na AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira 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 do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@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)**.
|
|
|
|
</details>
|
|
|
|
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Encontre vulnerabilidades que mais importam 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 tecnológica, de APIs a 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" %}
|
|
|
|
***
|
|
|
|
### 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 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 credenciais de usuário e suas funções atribuídas.
|
|
* A pasta `lib` contém vários arquivos JAR necessários para o funcionamento correto do Tomcat.
|
|
* As pastas `logs` e `temp` armazenam arquivos de log temporários.
|
|
* A pasta `webapps` é o diretório raiz padrão do Tomcat e hospeda todas as aplicações. A pasta `work` atua como um cache e é usada para armazenar dados durante a execução.
|
|
|
|
Espera-se que cada pasta dentro de `webapps` tenha a seguinte estrutura.
|
|
```
|
|
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 esses é `WEB-INF/web.xml`, 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 importante, bem como informações sensíveis. Qualquer vulnerabilidade nesses arquivos pode levar à comprometimento total do site. A pasta `lib` armazena as bibliotecas necessárias para aquela aplicação específica. A pasta `jsp` armazena [Jakarta Server Pages (JSP)](https://en.wikipedia.org/wiki/Jakarta\_Server\_Pages), anteriormente conhecido como `JavaServer Pages`, que pode ser comparado aos arquivos PHP em um servidor Apache.
|
|
|
|
Aqui está um exemplo do arquivo **web.xml**.
|
|
```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 está 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 a ser verificado ao explorar uma **vulnerabilidade de Inclusão de Arquivo Local (LFI)**.
|
|
|
|
### tomcat-users
|
|
|
|
O arquivo **`tomcat-users.xml`** é usado para **permitir** ou proibir o acesso às páginas de administração **`/manager` e `host-manager`**.
|
|
```xml
|
|
<?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 a 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
|
|
|
|
* [https://academy.hackthebox.com/module/113/section/1090](https://academy.hackthebox.com/module/113/section/1090)
|
|
|
|
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Encontre vulnerabilidades que importam mais 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 tecnológica, de APIs a 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" %}
|
|
|
|
<details>
|
|
|
|
<summary><strong>Aprenda hacking na AWS de zero a herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
* 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**](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 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** 🐦[**@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)**.
|
|
|
|
</details>
|