顧名思義,這是一個 Windows 服務上面的漏洞。找到符合沒有加上引號的路徑很常見,但是真正能夠運用的機率不一定很多,因為前提是還需要注意相關路徑的寫入以及讀取權限。
- 使用前提:
- 檔案的路徑中有空格
- 而且檔案沒有用引號括起來
- 對於該檔案的前一個目錄具有寫入的權限
達成這兩個前提就有機會可以實作 Unquoted Services Path 相關的漏洞應用,但通常在 XP 以後的作業系統,預設普通使用者沒有 C:\ 的寫入權限,所以大多數狀況都不適用;而使用者也須要具備對於該 Services 的開啟與關閉權限。
- 先備知識,觀察權限
- AccessChk
- Services 權限
accesschk.exe /accepteula -ucqv {services_name}
- 資料夾權限
accesschk -uwdq "C:\Program Files (x86)"
觀察
wmic
- 輸入
wmic service get name,pathname- 可以觀察到所有服務的名稱與檔案名稱

- 輸入
wmic service get pathname,startname- 可以觀察到程式名稱與執行者名稱(startname)

- 在此, startname 若為
LocalSystem則代表有system權限
- 在此, startname 若為
Winpeas
- Winpeas 也有這種相關提示
No quotes and Space detectd
實作與解釋
假設我們看到一個 Path 如下所述C:\Program Files (x86)\meow\meowmeow 8.7\meoewww.exe
- 我們可以發現路徑依序為
Program Files (x86)- Windows 會先嘗試解釋為
Program.exe再解釋Program Files (x86)
- Windows 會先嘗試解釋為
meowmeowmeow 8.7- Windows 會先嘗試解釋為
meowmeow.exe再解釋meowmeow 8.7
- Windows 會先嘗試解釋為
meoewww.exe
在這段路徑中,我們觀察路徑的空白會發現,有兩個可以利用的點,分別是路徑中有空白的Program Files (x86)以及meowmeow 8.7
透過截斷漏洞,我們假如建立一個檔案 C:\Program.exe,則會被優先執行。
而假如我們沒有C:\的寫入權限,而剛好有C:\Program Files (x86)\meow\ 的寫入權限的話,我們也可以對meowmeow 8.7這個檔案下手,建立一個C:\Program Files (x86)\meow\meowmeow.exe對系統進行誤導。
惡意檔案(如Revrese shell)在指定的位置與名稱建立完畢後,把服務重啟即可自動運行。
- 關閉服務指令
sc stop {services_name}
- 開啟服務指令
sc start {services_name}
Reference
- https://gracefulsecurity.com/privesc-unquoted-service-path/