見出し画像

Writeup: Vulnhub Thales

Vulnhub の Thales 攻略メモ。
このVMには幾つか罠があって少しハマってしまった。。

1.仮想マシンのダウンロード

下記のリンクからダウンロード。サイズは 2.2GB。

ダウンロードしたファイルをVirtual Box へインポートして起動する。
メモリは 1GB、ネットワークインターフェースは「ホストオンリーアダプタ」を使用。

2.攻略

1)ポートスキャン

netdiscover  でIPアドレスをスキャンする。
ターゲットのIPアドレスは 192.168.56.144 。
(192.168.56.1 と 100  は VirtualBox 自身のアドレス)  

netdiscover

ポートスキャンしてみる。
開いているポートは OpenSSH (22/tcp), Tomcat ( 8080/tcp) だけだった。

ポートスキャン

2)脆弱性探し

とりあえず、8080/tcp  にブラウザでアクセスしてみる。
Tomcat のトップページが表示された。

画面右側のボタン「Host Manager」をクリックしてみる。
当然のことながら Basic認証がかかっている。
tomcat / s3cret とおなじみのユーザー、パスワードを試したが駄目だった。

Tomcat:Basic認証画面

ちょっと調べてみると、Tomcat のデフォルトユーザー/パスワードは幾つものパターンがあるようだ。念のため、全部試してみることにしよう。

GitHub に様々なデフォルトユーザー/パスワードを集めたページがある。
まずは下記のサイトからデータを拾ってきて、ユーザー名辞書(user.txt)とパスワード辞書(pass.txt)を作成する。

ユーザー、パスワードの総当たりは、手作業だと面倒なので、hydra を使う。コマンドラインは以下の通り。

hydra -v -L user.txt -P  pass.txt  -f http-get://192.168.56.144:8080/manager/html

結果はというと、、あらら、ダメだった。

Hydra の設定を変更しながら何度か試したが状況は変わらない。

ここで頭を抱えてしまった。

Tomcat 9.0.52 には認証無しで侵入できそうな脆弱性は見当たらない。
攻略には何とかして管理画面にログインすることが必要になる。

少し考えて、ターゲットの仮想マシンを一旦削除し、再度Verturl Boxへインポートし直すことにした。

もしかしたら、一連のブルートフォースアタックで、アカウントがロックアウトされるなど、サーバー側で問題が起きてしまったのかもしれない。

仮想マシンを再起動し、再度 hydra を実行してみる。
今度はうまくいった。

念のため再度、仮想マシンを再起動後、ブラウザで 管理画面にログインしてみる。問題無くログインできた。

Tomcat管理画面

3)侵入

管理画面にログインできるので、悪意のあるアプリをアップロードして実行すれば侵入できる。

侵入にはmetasploit を使うことにした。
攻撃に使うモジュールは  exploit/multi/http/tomcat_mgr_upload
あっさりと侵入できた。

4)権限昇格

しばらくサーバー内をうろついていると、thales ユーザーの秘密鍵が読み取り可能なことに気づいた。ダウンロードする。

この秘密鍵を使って、ssh でログインを試みたが、パスフレーズが設定されていた。

パスフレーズをクラックするため、まずはハッシュファイルを作成する。

このファイルをJohn the ripperに入力してパスワードをクラックする。
パスワードは vodka06 だった。

ところが、このパスフレーズを使ってもログインできなかった。

ログイン失敗

/home/thales/.ssh のパーミッションが777だったので、公開鍵を作成してアップロードしてみたが、それでも  ssh でのログインはできなかった。

ここでもう1度、頭を抱えた。
もしかすると、もともと thales は ssh でのログインが許可されていないのかもしれない。 

もしやと思い、metepreter からシェルを起動し、su コマンドで先ほどのパスワードを使うと thales ユーザーに権限昇格できた。

thales のホームディレクトリには notes.txt があり、バックアップ用スクリプトの場所が書かれていた。

スクリプトはパーミッション 777 で誰でも書き込み可。
バックアップ先のディレクトリは  /var/backups になっていた。

バックアップの出力先 /var/backups の所有者は root で、タイムスタンプが5分毎に更新されていることに気づいた。

つまり、先ほどのバックアップスクリプトは root 権限で 5分毎に動いていることになる。

バックアップスクリプトは誰でも書き込み可能なので、スクリプトを書き換えて、攻撃マシンにリバースシェル接続するようにすれば良い。

まずスクリプトを書き換え、リバースシェル用のコマンドを追加する。

次に攻撃側マシンの 4242/tcp で待ち受ける。

少し待つと、root 権限のシェルに接続できた。
権限昇格完了だ。

フラグを見てみる。

これで完了。
めでたし、めでたし。


この記事が気に入ったらサポートをしてみませんか?