iT邦幫忙

2026 iThome 鐵人賽

DAY 10
0

【故事】

第二座城,O1 一進去就知道不對勁。

不是因為它比較難。是因為它長得不一樣

牆的砌法不同,門的鉸鍊裝在另一邊,連地上鋪的石板都是另一種尺寸。他站在入口,發現自己連「該從哪裡開始看」都要重新想一次。

那時候他還很有信心。他想,牆終究是牆。


他做的第一件事,是去找門房那本值勤簿。

沒有值勤簿。

這座城不用簿子。他找了半個小時,最後在牆上看到一排掛牌——這裡的授權不寫在紙上,是刻在牌子上掛著的,而且掛得很高,得抬頭看。

掛牌上刻的東西他看不太懂。不是文字不同,是概念不同。那些牌子上寫的不是「此人可代為做某事」,而是一串他沒見過的權名。

他抄了下來,先跳過了。


接下來五天,他把所有學過的東西試了一遍。

他找那種「可代為謄寫」的授權——這座城沒有那個機制。
他找刻著屋主印的工具——也沒有。
他翻歷史紀錄——這座城的人不留那種紀錄。
他翻設定檔——格式完全不同,他連哪個是設定檔都分不出來。

第五天晚上,他坐在那座城的一間空屋裡,看著自己的冊子。

二十幾頁,一條都用不上。


那是一種很特別的挫敗。

不是「我不會」的挫敗——他會啊,他上個月才一個人拿下一座城的王座。是那種你明明很會,但你會的東西在這裡一文不值的感覺。

他想起七年前剛進公會的時候。那時候他也有過幾個月是這樣:前一個地方學的所有東西,在新的地方全部不適用。當時他以為那是因為自己不夠好。

現在他知道不是。

那只是換了一座城。


第六天,他把器囊整個倒出來。

木箱裡的東西他其實沒有全部用過。壓在底下的是一面鏡子——巡紋鏡。舉起來對著一座城,它會把城裡所有「不合規矩的地方」映出來,標成一條一條的。

他之前沒拿出來,不是因為排斥。只是前一座城他靠自己就走完了,沒有用到。


鏡子舉起來,十幾分鐘就把整面城映完了。

上面標了幾十處。

大部分是雜訊——一些無關緊要的小毛病,一些根本用不上的東西。O1 坐下來,一條一條看,看到凌晨。

然後他在中間某一條停住了。

那一條指向城裡的一面吩咐牌。鏡子在那面牌子上畫了一個記號,旁邊寫著一行很短的話,短到像是在提醒而不是在解釋:

「此處未框。」


O1 找到那面牌子,抬頭看。

那面牌子指的是一個地方,而那個地方的名字中間有空格。寫牌子的人沒有把整個名字框起來,就這樣直接刻上去了。

他盯著那個空格看了很久。

鏡子只告訴他這裡沒框起來。鏡子沒有告訴他這代表什麼。

他先去翻了學派的典籍附錄,翻到相關的那幾頁,看完還是不太確定。

最後他去問了人。

那個人叫史帝凡。他們是同一批進學派的,都在準備長夜,在鬥技場見過幾次——一開始只是點頭,後來變成偶爾交換一下今天卡在哪裡。進度差不多,只是史帝凡比他早一個月碰到這種城。

O1 開口的時候有點卡。

不是因為不好意思,是因為他已經很久沒有問過別人問題了。在公會那七年,他是被問的那一個。

史帝凡講了大概三分鐘。

講完他問:「這樣講你有懂嗎?」

「有。」

「那就好。」史帝凡收拾東西準備走,走到一半回頭補了一句,「這個我也是別人講給我聽才懂的。當初我自己看了兩天,看不出來。」


那天晚上他在那個位置放了一樣東西。

名字取得跟空格前面那一段一模一樣。

他沒有做任何別的事。他就只是放好,然後等執事下一次出勤。

執事出來了,走到那個位置,把他放的東西拿起來,然後——以城主的名義,照吩咐去做了。

樓上那道門開了。


他坐在階梯底下寫冊子,寫到一半停了下來。

他忽然想起前一座城的一件事。

那座城裡也有過類似的東西:屋主吩咐僕人「去拿槌子」,沒說哪一把,僕人就拿了最先找到的那一把。當時他覺得那是那座城特有的毛病。

現在他坐在另一座城的階梯上,看著同一件事換了一身衣服站在他面前。

吩咐沒有說清楚,執行的人就會自己填空。

這件事跟城牆怎麼砌沒有關係,跟鉸鍊裝在哪一邊也沒有關係。它是所有城共通的。

O1 在冊子上寫下這句話,然後在旁邊補了一行小字:

「我學過這個。我只是沒認出它換了衣服。」


他又想了一下,把鏡子從器囊裡拿出來,放在桌上看。

那五天他用眼睛找,什麼都沒找到。鏡子十幾分鐘就標出來了。

但鏡子標出來的那幾十條,是他自己一條一條看完的。而那條為什麼有用,是他查了典籍、問了人,才弄明白的。

他坐在那裡,第一次把這兩件事分開來看。

看得細,是他的長處,這沒有變。

但看得細,不等於知道該看哪裡。 在一座他還不懂規矩的城裡,他的眼睛再好,也不知道要往哪裡看。

鏡子知道要往哪裡看,因為造鏡子的人看過很多座城。
而史帝凡知道那代表什麼,因為一個月前也有人這樣講給他聽。


他在導典第一頁加了第四行。

那一頁現在是:

桌子是我的。
先做,再讀。
先看完,再動手。
換一座城,就要換一種讀法。

他寫完看了一下,覺得這句好像有點太大了,配不上他今天做的事。

他沒有想到的是,這句話後來會在一個完全不同的地方,再一次成為他的難題。

(那是很後面的事了。)


【解咒筆記】Windows 提權:找「被誤設定的差遣」

Day 9 講 Linux,這一篇講 Windows。先給心法,因為兩邊的思路真的不同:

Linux Windows
秩序靠什麼 檔案與權限位元 服務與身分
找什麼 被寫得太寬的授權 被寫壞的差遣、可借用的身分
典型 sudo 清單、SUID、cron 服務設定、排程、權杖

Windows 上有一大堆以高權限常駐運作的服務。你不需要找到漏洞,只需要找到一個你能插手的環節。

一、落地後的前三分鐘

whoami /all
systeminfo
net user; net localgroup administrators
tasklist /svc
schtasks /query /fo LIST /v

whoami /priv 是這裡的 sudo -l——先跑這一行。

二、吩咐沒說清楚:Unquoted Service Path

這是我第一次真正成功的 Windows 提權,所以放在最前面講。

Windows 在啟動服務或排程工作時,會依照設定裡寫的路徑去找執行檔。如果路徑有空格、而且沒有用雙引號框起來

C:\Program Files\My App\service.exe

系統會依序嘗試:

C:\Program.exe
C:\Program Files\My.exe
C:\Program Files\My App\service.exe

只要前面任何一個位置你有寫入權,放一個同名執行檔進去,它就會被以服務的身分執行。

手動檢查:

wmic service get name,pathname,startmode | findstr /i /v "C:\Windows\\" | findstr /i /v """

但老實說,我當年是 WinPEAS 直接標出來的(見第九節)。

找到之後還要確認兩件事才算數:那個目錄你真的寫得進去那個服務你有辦法讓它重啟。工具會告訴你「這裡沒框起來」,但這兩件事要你自己驗。

這個機制跟 Day 9 的 PATH 劫持是同一個原理的不同外衣:吩咐沒有說清楚,執行的人就自己填空。

三、服務的其他三種設定錯誤

① 執行檔可被覆寫——服務以 SYSTEM 執行,但執行檔放在你有寫入權的目錄。
② 服務設定可被修改——你對服務有 SERVICE_CHANGE_CONFIG 權限,直接改它要跑什麼。
③ DLL 劫持——服務載入的 DLL 不存在、或在可寫路徑被優先搜尋到。

四、排程工作

schtasks /query /fo LIST /v

看兩件事:以什麼身分執行執行的東西你能不能改(含 unquoted path)。跟 Linux 的 cron 同一個道理。

我實際的順序裡,排程排在服務前面——因為排程的內容通常比較容易讀懂,也比較常被忽略。

五、權杖:借用身分,以及一個我踩過的坑

看到這幾個,優先處理:

  • SeImpersonatePrivilegeSeAssignPrimaryTokenPrivilege
  • SeBackupPrivilegeSeRestorePrivilege
  • SeDebugPrivilegeSeTakeOwnershipPrivilege

SeImpersonate 最常見,預設會給某些服務帳號(IIS、MSSQL 之類)。設計用途是讓服務可以代表使用者執行動作——本身完全合理。問題是如果你能讓一個高權限程序來跟你打招呼,你就能借用它的身分。

我實際常用的是 PrintSpoofer 和 GodPotato。

然後是那個坑,講出來給後面的人省時間:

whoami /priv 明明顯示有 SeImpersonatePrivilege,工具跑下去卻提不了權。

我當時卡了很久,一直以為是工具版本不對、或是修補程度的問題。後來發現問題出在權限的作用範圍——那台機器是加入網域的,而本機的權限狀態和網域層級的限制不是同一回事。我要的只是本機提權,卻被另一層規則擋住。

這件事我到現在也沒有完全搞清楚。 Windows 的案子我接得不多,所以只能把現象講出來:看到權杖權限時,多問一句這台機器是不是加入網域的,如果是,行為可能跟單機環境不一樣。

(Potato 家族對 Windows 版本也很挑。查清楚目標版本再選,不要整套亂試一輪。)

六、PowerShell 歷史紀錄:很多人不知道它在那裡

%APPDATA%\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt

這個檔案會記下使用者打過的 PowerShell 指令,而且預設就開著,很多人不知道它存在

裡面常常有:連線字串、帶著密碼的參數、內部主機名稱、管理工具的用法。這是我固定會看的一項。

七、翻憑證(誠實說:我實務上很少遇到)

這一類在練習與考試環境裡很常見,但要老實講——我接的案子以網站滲透為主,少數的主機滲透也幾乎都是 Linux,所以下面這些我在真實委託裡沒有實際遇過。

  • 登錄檔自動登入HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinlogonDefaultPassword
  • 部署遺留檔案unattend.xmlsysprep.infsysprep.xml
  • Group Policy Preferences 的 cpassword(舊環境)
  • 第三方軟體存的憑證:PuTTY session、VNC
  • web.config、連線字串
findstr /si password *.xml *.ini *.txt *.config

練習環境要練,實務上遇不遇得到是另一回事。 這兩件事分清楚比較誠實。

八、AlwaysInstallElevated

reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer

兩個鍵都是 1 的話,你可以用 SYSTEM 權限安裝任意 MSI。命中率不高,但檢查成本只有兩行。

九、自動化工具:我那次就是這樣找到的

前面說過,第一次成功的 Windows 提權是 unquoted path——而它是 WinPEAS 掃出來的,不是我用眼睛看出來的。

我從來沒有排斥過這類工具,很多細節本來就是靠它們挖出來的。

但用了才發現,工具給的東西沒有想像中好拿:

  • WinPEAS 一次標出幾十項,大部分是雜訊
  • 它只告訴你「這裡不符合最佳實務」,不會告訴你這代表什麼、能不能利用
  • 那條 unquoted path 為什麼能打、要放什麼、放在哪裡、怎麼讓服務重啟——全部要你自己補

所以我的結論跟 Day 9 是同一句:工具負責蒐集,判斷還是你的事。

但 Day 10 讓我補上另外半句:

在一個你還不熟的系統裡,工具的價值不是幫你看,是幫你知道該看哪裡。

你的眼睛再細,也只能看你想得到要看的東西。而工具是很多人踩過坑之後累積出來的清單——它替你補的是經驗,不是能力。

PowerUp 我用得不順——時可時不可,同樣的環境有時候跑得出來有時候不行,我到現在也沒完全搞清楚原因。所以它在我這裡是備援,不是主力。

(如果你也遇到這種狀況:先確認執行原則與載入方式,再考慮換工具。不要在一個時好時壞的工具上耗時間,尤其是考試的時候。)

十、我實際的順序

1. whoami /priv
2. 排程工作
3. 登錄檔與部署遺留的憑證
4. 服務(執行檔權限 / 設定權限 / unquoted path)
5. PowerShell 歷史指令
6. AlwaysInstallElevated
7. 自動化工具補漏
8. (最後)修補程度 → 已知的核心提權

十一、最重要的一段:不能平移清單,可以平移原理

這一篇真正想講的不是哪個指令,是當你的方法整套失效的時候該怎麼辦。

我在 Windows 上卡了五天,做的事是把 Linux 那套逐項翻譯過來:找 sudo 的對應物、找 SUID 的對應物、找 .bash_history 的對應物。

每一項我都問得很認真,而且每一項都問錯了。

Linux 的秩序靠檔案與權限,所以你找的是被寫得太寬的授權;Windows 的秩序靠服務與身分,所以你找的是被寫壞的差遣。這個差異不是知識點,是世界觀。

而這裡有一個很重要的轉折:當那條 unquoted path 終於被標出來、我也弄懂它為什麼能打的時候,我愣了一下——

因為它跟 Linux 的 PATH 劫持,骨子裡是同一件事。

吩咐沒說清楚,執行的人就自己填空。這件事跟作業系統無關。

所以結論是兩句,缺一不可:

不能平移清單。可以平移原理。
但原理要能平移,你得先看懂新的秩序——否則它換一身衣服站在你面前,你認不出來。

這個問法後面還會再救我一次,而那次的對象不是一台機器,是一整座網域。(Day 15。)


【工會箴言】

換一座城,就要換一種讀法。



上一篇
Day 9|第一次僭位
下一篇
Day 11|幻廊
系列文
《再叩一次》—一個中年轉職叩門者的 OSCP 三十夜13
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言