Hack The Boxをやってみる③

Hack The Boxというサイトに入っている。
ペネトレーションテストの勉強をするサイトだ。


ご注意:
ペネトレーションテスト等、セキュリティ研究やテストを行う際は、常に倫理的な行動をとり、対象システムの所有者から適切な許可を得て行うことが重要です。不正アクセスや攻撃は法律で禁止されており、重大な法的責任が伴います。
なので、あくまでも練習として、練習用のサーバーで行うのは、オッケーだが、ガチで実在のサーバーに対して、無許可で行うのは、捕まるので絶対やめた方がよい。

フォースを使っても、暗黒面に落ちではいけないのだ。

Tracksのなかの問題をやってみよう!

今回は、Tracks -> Intro to Red Team -> Sau という出題をやってみた。
これは、CVEで報告された、3つの脆弱性を使って解く。

詳しいことは、先人が書いている。
https://qiita.com/sota70/items/e6badedd980c6ba6d4b0

僕は、CVE-2023-27163のrequest-basketsの脆弱性を調べているうちに、リバースシェルを確立してしまい、途中で分からなくなってしまった。

大まかな攻略法は、こんな感じ。

  • ポートスキャンをしたところ、ポート80番、55555番が空いている。
  • ポート80番(http)がブロックされている。
  • ポート55555で何かが動いているので、ブラウザでアクセス。
  • request-basketsというものが動いていることを確認。
  • request-basketsのVer.1.2.1は、server side request forgery脆弱性があることを確認。
  • request-basketsは、ファイアウォールでブロックされていても、サーバ内部URLにアクセスして、転送してくれる機能があるらしい。
  • request-basketsで、localという空のバスケットを作り、設定をして、サーバー内のポート80番にアクセスできるようにする。
  • ポート80番にアクセス。するとそこでは、Maltrailv0.53が稼働している。
  • Maltrailv0.53は、https://nvd.nist.gov/vuln/detail/CVE-2025-34073 で、usernameにスクリプトを仕込むことが出来る。
  • これにより、リバースシェルを確立。
  • 最後に、systemctlの脆弱性で、CVE-2023–26604 コマンド実行して権限昇格。

request-basketsから、ブロックされた80番にアクセスする

「ここでは、request-basketsで、localという空のバスケットを作り、設定をして、サーバー内のポート80番にアクセスできるようにする」部分を特に書いてみよう。

以下のように。ブラウザでポート55555にアクセスすると、

http://[ターゲットのIPアドレス]:55555
例) http://10.129.238.23:55555

このような、request-basketsの画面が出て来る。ここで、とりあえずlocalと入力して、Createボタンをクリックする。

バスケットが出来たら、OpenBasketボタンをクリックする。

歯車マークをクリックする。

設定画面になるので、以下のように設定する。

http://[ターゲットマシンのIPアドレス]:55555/local にアクセスすると、
以下のように、ポート80番のウェブページが表示される。

CVE-2023-26604の脆弱性を使った権限昇格

systemctlの脆弱性で、CVE-2023–26604 コマンド実行して権限昇格する部分を詳しく書いてみよう。権限昇格の手がかりを探すために、以下のコマンドで、ユーザーに許可されているコマンドを調べてみる。

sudo -l

すると、systemctlコマンドが許されている。このコマンドのバージョンを調べると、245。
この情報からCVEを検索すると、CVE-2023–26604がヒットする。

では、CVE-2023–26604 とはどんな脆弱性なのだろうか?

On one of the pentest project, an unprivileged account was accessed on rhel 8. It was spelled out in sudoers that the command /usr/bin/systemctl status *random_service* could be run from mine user. Coincidentally, the size of my terminal turned out to be small. There is a feature in systemctl which outputs information to pager less instead of cat if the size of the terminal is less than the length of any line output. Pager less has the ability to execute commands, in example you can triger new shell with command !sh.
https://medium.com/%40zenmoviefornotification/saidov-maxim-cve-2023-26604-c1232a526ba7

systemctlコマンドは、出力行が多いとき、catでなく、Pager lessが使われる。
Pager lessの、改ページのコマンド入力待ち状態で、「!sh」と入力する。

!sh

すると、shellが実行される。こんな感じ。

たまにスクロールしてしまって、ページごとに入力待ちにならない時がある。
そんな時は、コマンドプロンプトで、以下のコマンドを実行すると改善されるらしいぞ。

    script /dev/null -c bash
    stty rows 10 cols 40

    コメント

    タイトルとURLをコピーしました