mirror of
https://github.com/carlospolop/hacktricks
synced 2025-01-05 17:58:50 +00:00
168 lines
8.7 KiB
Markdown
168 lines
8.7 KiB
Markdown
# Podstawowe informacje o Tomcacie
|
|
|
|
<details>
|
|
|
|
<summary><strong>Nauka hakowania AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
* Czy pracujesz w **firmie z branży cyberbezpieczeństwa**? Chcesz zobaczyć swoją **firmę reklamowaną na HackTricks**? lub chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
|
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
|
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do [repozytorium hacktricks](https://github.com/carlospolop/hacktricks) i [repozytorium hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
|
|
|
</details>
|
|
|
|
**Grupa Try Hard Security**
|
|
|
|
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
|
|
|
{% embed url="https://discord.gg/tryhardsecurity" %}
|
|
|
|
***
|
|
|
|
### Unikaj uruchamiania jako root
|
|
|
|
Aby nie uruchamiać Tomcata jako root, bardzo częstą konfiguracją jest ustawienie serwera Apache na porcie 80/443 i, jeśli żądana ścieżka pasuje do wyrażenia regularnego, żądanie jest przesyłane do Tomcata działającego na innym porcie.
|
|
|
|
### Domyślna struktura
|
|
```
|
|
├── 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
|
|
```
|
|
* Folder `bin` przechowuje skrypty i pliki binarne potrzebne do uruchomienia serwera Tomcat.
|
|
* Folder `conf` przechowuje różne pliki konfiguracyjne używane przez Tomcat.
|
|
* Plik `tomcat-users.xml` przechowuje dane uwierzytelniające użytkowników i ich przypisane role.
|
|
* Folder `lib` zawiera różne pliki JAR potrzebne do poprawnego działania Tomcat.
|
|
* Foldery `logs` i `temp` przechowują tymczasowe pliki dziennika.
|
|
* Folder `webapps` jest domyślnym katalogiem głównym Tomcat i zawiera wszystkie aplikacje. Folder `work` działa jako pamięć podręczna i służy do przechowywania danych podczas działania.
|
|
|
|
Oczekiwana struktura każdego folderu wewnątrz `webapps`.
|
|
```
|
|
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
|
|
```
|
|
Najważniejszym plikiem spośród nich jest `WEB-INF/web.xml`, który jest znany jako deskryptor wdrożenia. Ten plik przechowuje **informacje o trasach** używanych przez aplikację oraz klasy obsługujące te trasy.\
|
|
Wszystkie skompilowane klasy używane przez aplikację powinny być przechowywane w folderze `WEB-INF/classes`. Te klasy mogą zawierać ważną logikę biznesową oraz poufne informacje. Każda podatność w tych plikach może prowadzić do całkowitego skompromitowania strony internetowej. Folder `lib` przechowuje biblioteki potrzebne dla danej aplikacji. Folder `jsp` przechowuje [Jakarta Server Pages (JSP)](https://en.wikipedia.org/wiki/Jakarta\_Server\_Pages), wcześniej znane jako `JavaServer Pages`, które można porównać do plików PHP na serwerze Apache.
|
|
|
|
Oto przykładowy plik **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>
|
|
```
|
|
Konfiguracja `web.xml` powyżej definiuje **nowy serwlet o nazwie `AdminServlet`**, który jest odwzorowany do **klasy `com.inlanefreight.api.AdminServlet`**. Java używa notacji kropkowej do tworzenia nazw pakietów, co oznacza, że ścieżka na dysku dla powyższej klasy będzie:
|
|
|
|
* **`classes/com/inlanefreight/api/AdminServlet.class`**
|
|
|
|
Następnie tworzony jest nowy odwzorowanie serwletu, aby **odwzorować żądania na `/admin` z `AdminServlet`**. Ta konfiguracja przekieruje każde żądanie otrzymane dla **`/admin` do klasy `AdminServlet.class`** w celu przetworzenia. Deskryptor **`web.xml`** zawiera wiele **wrażliwych informacji** i jest ważnym plikiem do sprawdzenia podczas wykorzystywania podatności na **Lokalne Włączenie Pliku (LFI)**.
|
|
|
|
### tomcat-users
|
|
|
|
Plik **`tomcat-users.xml`** jest używany do **zezwolenia** lub zabrania dostępu do stron administracyjnych **`/manager` i `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>
|
|
```
|
|
Plik pokazuje, do czego dostęp zapewniają role `manager-gui`, `manager-script`, `manager-jmx` i `manager-status`. W tym przykładzie widzimy, że użytkownik `tomcat` z hasłem `tomcat` ma rolę `manager-gui`, a drugie słabe hasło `admin` jest ustawione dla konta użytkownika `admin`.
|
|
|
|
## Referencje
|
|
|
|
* [https://academy.hackthebox.com/module/113/section/1090](https://academy.hackthebox.com/module/113/section/1090)
|
|
|
|
**Try Hard Security Group**
|
|
|
|
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
|
|
|
{% embed url="https://discord.gg/tryhardsecurity" %}
|
|
|
|
<details>
|
|
|
|
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
* Czy pracujesz w **firmie z branży cyberbezpieczeństwa**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? lub chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
|
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
|
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**Grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do [repozytorium hacktricks](https://github.com/carlospolop/hacktricks) i [repozytorium hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
|
|
|
</details>
|