![見出し画像](https://assets.st-note.com/production/uploads/images/104745742/rectangle_large_type_2_6a0feae7eecd187c6faf82b69bf2e9fa.png?width=1200)
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 自身のアドレス)
![](https://assets.st-note.com/img/1683254417922-wvCc6a9ZY2.png?width=1200)
ポートスキャンしてみる。
開いているポートは OpenSSH (22/tcp), Tomcat ( 8080/tcp) だけだった。
![](https://assets.st-note.com/img/1683261236427-hBfmbtHwWt.png?width=1200)
2)脆弱性探し
とりあえず、8080/tcp にブラウザでアクセスしてみる。
Tomcat のトップページが表示された。
![](https://assets.st-note.com/img/1683261057059-Lc9LVCVuIg.png?width=1200)
画面右側のボタン「Host Manager」をクリックしてみる。
当然のことながら Basic認証がかかっている。
tomcat / s3cret とおなじみのユーザー、パスワードを試したが駄目だった。
![](https://assets.st-note.com/img/1683261381420-glzme3P520.png?width=1200)
ちょっと調べてみると、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
結果はというと、、あらら、ダメだった。
![](https://assets.st-note.com/img/1683347421063-agZom3vKmk.png?width=1200)
Hydra の設定を変更しながら何度か試したが状況は変わらない。
ここで頭を抱えてしまった。
Tomcat 9.0.52 には認証無しで侵入できそうな脆弱性は見当たらない。
攻略には何とかして管理画面にログインすることが必要になる。
少し考えて、ターゲットの仮想マシンを一旦削除し、再度Verturl Boxへインポートし直すことにした。
もしかしたら、一連のブルートフォースアタックで、アカウントがロックアウトされるなど、サーバー側で問題が起きてしまったのかもしれない。
仮想マシンを再起動し、再度 hydra を実行してみる。
今度はうまくいった。
![](https://assets.st-note.com/img/1683348820790-A7Y2pLSOJk.png?width=1200)
念のため再度、仮想マシンを再起動後、ブラウザで 管理画面にログインしてみる。問題無くログインできた。
![](https://assets.st-note.com/img/1683349515070-XagKEc8CHJ.png?width=1200)
3)侵入
管理画面にログインできるので、悪意のあるアプリをアップロードして実行すれば侵入できる。
侵入にはmetasploit を使うことにした。
攻撃に使うモジュールは exploit/multi/http/tomcat_mgr_upload
あっさりと侵入できた。
![](https://assets.st-note.com/img/1683350650598-cwipQ5idiq.png?width=1200)
4)権限昇格
しばらくサーバー内をうろついていると、thales ユーザーの秘密鍵が読み取り可能なことに気づいた。ダウンロードする。
![](https://assets.st-note.com/img/1683351212173-GAjrcAMqcc.png?width=1200)
この秘密鍵を使って、ssh でログインを試みたが、パスフレーズが設定されていた。
![](https://assets.st-note.com/img/1683351435532-nTnXDpLLgG.png)
パスフレーズをクラックするため、まずはハッシュファイルを作成する。
![](https://assets.st-note.com/img/1683351601161-G8nZjyTEjv.png)
このファイルをJohn the ripperに入力してパスワードをクラックする。
パスワードは vodka06 だった。
![](https://assets.st-note.com/img/1683351782763-leVdgviQjq.png?width=1200)
ところが、このパスフレーズを使ってもログインできなかった。
![](https://assets.st-note.com/img/1683352788667-RbxjMajpbO.png?width=1200)
/home/thales/.ssh のパーミッションが777だったので、公開鍵を作成してアップロードしてみたが、それでも ssh でのログインはできなかった。
ここでもう1度、頭を抱えた。
もしかすると、もともと thales は ssh でのログインが許可されていないのかもしれない。
もしやと思い、metepreter からシェルを起動し、su コマンドで先ほどのパスワードを使うと thales ユーザーに権限昇格できた。
![](https://assets.st-note.com/img/1683353460255-0ImJ0YkBzo.png?width=1200)
thales のホームディレクトリには notes.txt があり、バックアップ用スクリプトの場所が書かれていた。
![](https://assets.st-note.com/img/1683354293578-riTr50eJ0R.png?width=1200)
スクリプトはパーミッション 777 で誰でも書き込み可。
バックアップ先のディレクトリは /var/backups になっていた。
![](https://assets.st-note.com/img/1683354606221-RBYnDhjHQ1.png?width=1200)
バックアップの出力先 /var/backups の所有者は root で、タイムスタンプが5分毎に更新されていることに気づいた。
![](https://assets.st-note.com/img/1683354766020-wlv3mwsGdr.png)
つまり、先ほどのバックアップスクリプトは root 権限で 5分毎に動いていることになる。
バックアップスクリプトは誰でも書き込み可能なので、スクリプトを書き換えて、攻撃マシンにリバースシェル接続するようにすれば良い。
まずスクリプトを書き換え、リバースシェル用のコマンドを追加する。
![](https://assets.st-note.com/img/1683355295866-nsKQFBt8kL.png)
次に攻撃側マシンの 4242/tcp で待ち受ける。
![](https://assets.st-note.com/img/1683355354184-6OTbXILxq3.png)
少し待つと、root 権限のシェルに接続できた。
権限昇格完了だ。
![](https://assets.st-note.com/img/1683355572845-rxkLjpwy49.png?width=1200)
フラグを見てみる。
![](https://assets.st-note.com/img/1683355651586-YiYWsYY2Pw.png)
これで完了。
めでたし、めでたし。
この記事が気に入ったらサポートをしてみませんか?