コラムColumn

導入事例Case Study

サイバーニュースCyber News

海外のサイバーセキュリティ関連のニュースを日本語でご紹介しています。

お知らせNews

【Hack The Box入門】Knife 攻略ガイド(Retired Machine)

Hack The Box「Knife」は、難易度「Easy」に分類されるマシンです。
一見シンプルですが、PHP 8.1.0-dev に存在するリモートコマンドインジェクション脆弱性を利用して初期侵入が可能です。
さらに、knife コマンドラインツールの動作を分析することで root 権限を取得できます。

免責事項:
本記事は Hack The Box の「Knife」マシンを題材に、セキュリティ教育・学習を目的として作成しています。
実際の攻撃手法の模倣や不正アクセスを助長する意図はありません。
フラグ(user.txt / root.txt)の内容は記載していません。各自で取得してください。

00. マシンの起動

「Create Instance」をクリックしてマシンを起動します。

起動後にIPアドレスが割り当てられます(自分の環境ごとに異なります)。
VPN 接続を確認するため、ping コマンドで疎通を確認します。
多くの場合、応答が返ればマシンが稼働中です。

TTL値が63の場合、1ホップのみ(VPN経由)で接続されているため、Linuxマシンであることがわかります。

01. Enumeration(情報収集)

01.1 ポートスキャン

最初に Nmap の高速スキャンを実施して、開放ポートを確認します。

nmap -n -vv --open -T4 -p- -oN AllPorts.nmap 10.129.113.27

結果として、ポート 22 (SSH)80 (HTTP) のみが開いていることが判明しました。

01.2 Nmapスクリプトエンジンによる詳細スキャン

開いているポートに対して詳細なスキャンを行います。

nmap -sV -sC -oN DetailPorts.nmap -p 80,22 10.129.113.27

サーバは Apache 2.4.41 / PHP 8.1.0-dev で稼働しているようです。
HTTP ポートの挙動をさらに深堀りします。

01.3 Webポートの確認

ブラウザで http://<IPアドレス> を開きます。

特に表示上の特徴はありません。
ここからは HTTP ヘッダーなどの内部情報を確認します。

02. Foothold(初期侵入)

Burp Suite を用いてHTTPレスポンスヘッダーを確認すると、
PHP/8.1.0-dev のバージョン情報が確認できました。

この開発版 PHP には、認証不要のリモートコード実行(RCE)脆弱性が存在します。
Google検索で「PHP 8.1.0 exploit」を調べると、Packet Storm上にPoCコードが公開されています。
※公開情報は教育目的でのみ参照してください。

Exploitコードをダウンロードします。

wget https://dl.packetstormsecurity.net/2105-exploits/php_8.1.0-dev.py.txt

このスクリプトでは、URL (-u) とコマンド (-c) を指定してリモートで任意コマンドを実行可能です。

試しに実行すると、ユーザー「james」 の権限でリモートコードが実行されました。

次に、リバースシェルを確立して対話的アクセスを取得します。

Bashリバースシェルの生成

  1. RevShells.com にアクセスし、
    自分の IP とポート番号を入力して「bash -i」を選択します。
  1. 生成されたコードをローカルファイルに保存します。
  2. updogpython3 -m http.server などで簡易サーバを立ち上げ、
    攻撃対象から curl コマンドで取得します。
    同時に Netcat でリスナーを起動します。

接続が成功すれば、シェルが確立されます。

その後、TTYシェルを確保します。

python3 -c "import pty; pty.spawn('/bin/bash')"

03. Privilege Escalation(権限昇格)

次に root 権限取得を試みます。
まず sudo -l コマンドで、スーパーユーザー権限で実行可能なコマンドを確認します。

結果、/usr/bin/knife が sudo 実行可能であることがわかりました。

knife は Chef の管理ツールの一部であり、
Rubyスクリプトを実行する機能(knife exec)を持っています。

これを利用して、root権限でファイルを読み取るRubyスクリプトを作成します。

echo "exec \"cat /root/root.txt\"" > hidd3nwiki

作成したスクリプトを knife exec 経由で実行します。

sudo /usr/bin/knife exec hidd3nwiki

root フラグの取得に成功しました。

04. まとめ

「Knife」マシンでは、次の3ステップで完全攻略が可能でした。

  1. PHP 8.1.0-dev RCE脆弱性 による初期侵入
  2. リバースシェル確立とユーザー権限取得
  3. knife コマンドの exec 機能を悪用したroot奪取

難易度は「Easy」ながら、バージョン情報の読み取りやツール調査の重要性を再確認できる好例です。

これで「Knife」の解説は完了です。
バージョン情報を見逃さないこと、そしてツールの権限設定を丁寧に確認することの重要性を学べる良問でした。
次回の攻略ガイドもお楽しみに。

注意・免責:

  • 本記事の手順は Hack The Box の学習環境における教育目的での説明です。記載されているコマンド、ユーザー名、パスワード、IP アドレス等は演習用のものであり、実在するシステムでの同様の操作は法律に抵触する可能性があります。
  • 本記事で紹介する手法は防御力向上のための知見提供を目的としています。第三者のシステムに対する不正アクセスやデータ取得を助長する意図はありません。
  • 記事の内容を実運用環境で試す場合は、必ず対象システムの所有者から書面による許可を得てください。疑問点や報告がある場合は、当社までご連絡ください。

投稿者プロフィール

ハリス ディルシャン
ハリス ディルシャン
Offensive Security Engineer | Red Team Specialist
レッドチーム演習やペネトレーションテスト、脅威モデリングを専門とするオフェンシブセキュリティエンジニアです。エンタープライズ環境やWeb・モバイルアプリ、API、クラウドサービスにおけるセキュリティ評価を多数実施し、CTFやマルウェア解析、アンチウイルス回避などにも精通しています。2020年にはCEH Master世界ランキングでトップ10入りを果たし、国際的に高い評価を得ています。
主な保有資格:
● OSCP(Offensive Security Certified Professional)
● CPENT(Certified Penetration Testing Professional)
● eCPPT(Certified Professional Penetration Tester)
● eMAPT(Mobile Application Penetration Tester)
● CRTS(Certified Red Team Specialist)
● CEH Master(認定エシカルハッカー)
● SOC-100(Security Operations Essentials)
● PEN-100(Network Penetration Testing Essentials)
● SLIIT – 情報技術学士(サイバーセキュリティ専攻)


Page Top