白 - 許可權提升和漏洞利用技巧

zha0gongz1發表於2023-03-08

Windows服務

1.不安全的服務檔案許可權或路徑

基本原理

Windows服務是一種在後臺執行的計算機程式,它在概念上類似於Unix守護程式。

每個Windows服務都將其可執行檔案的路徑儲存在稱為BINARY_PATH_NAME的變數中。當啟動服務時,會檢查此變數並執行其下設定的.exe檔案。

步驟

前提條件:Windows服務必須啟用第3點許可權,並且當前使用者有啟動或停止服務許可權,否則必須等待系統重啟才能執行惡意攻擊載荷。

  • 1.檢查目標系統中的所有服務
  • 2.列舉服務的所有許可權集
  • 3.查詢SERVICE_ALL_ACCESSSERVICE_CHANGE_CONFIG是否已啟用(這些許可權允許使用者修改服務配置和 bin 路徑)
  • 4.查詢該服務以檢查該服務是否以更高的許可權執行
  • 5.可使用命令或惡意檔案更改服務的 BINARY_PATH_NAME (binpath)
  • 6.重新整理或啟動服務並獲得更高許可權shell

實操

使用 PowerUp指令碼查詢錯誤配置,列舉機器服務尋找開啟了 binpath 的服務。

<#返回當前使用者可以寫入服務的路徑或其配置的服務#>
powershell -ep bypass

.\powerup.ps

Get-ModifiableServiceFile

找到了一個名為“daclsvc”的服務,為避免工具誤報,可使用Accesschk工具再次檢查此服務以確認它確實設定了SERVICE_ALL_ACCESSSERVICE_CHANGE_CONFIG許可權。

不難看出,有啟動 (service_start)許可權 、停止許可權,也有權更改服務“daclsvc”的可執行檔案路徑的許可權

進一步檢視一下該服務以何種許可權執行

注意:大多數情況下,Windows會以 SYSTEM 或管理員許可權執行所有服務

白 - 許可權提升和漏洞利用技巧
以本地系統許可權執行

利用這個錯誤配置,可以使用scservice control(預設安裝)來更改此服務的可執行檔案路徑

可將其設定為反彈shell的可執行檔案路徑。再次使用sc查詢以檢查設定的新路徑是否正確

配置無誤後,使用net(預設安裝)啟動此服務即可獲得 SYSTEM 許可權的shell

服務已執行

2.不安全的服務檔案

基本原理

可執行檔案是包含可以由作業系統執行的機器碼指令構成的檔案,可以是特定於平臺的,也可以是跨平臺

步驟

前提條件:服務的 .exe(二進位制檔案)許可權是可寫的或啟用FILE_ALL_ACCESS許可權以及啟動/停止服務的許可權

  • 1.列舉所有服務以檢查全部原始.exe(二進位制檔案)是否可寫
  • 2.使用惡意檔案替換或更改原始二進位制檔案
  • 3.重新整理或啟動該服務,該服務將執行其 .exe 並以 SYSTEM 許可權執行上面寫入的任何內容

實操

使用 winPEAS 來列舉所有可執行檔案許可權配置錯誤的服務。

在 winpeas 探測結果中,我們可以看到filepermsvc服務的原始 .exe 為任意使用者設定了AllAccess許可權。簡單來說就是“系統上的所有使用者都可以對該檔案進行任何操作(r、w、x)”,再次使用accesschk工具確認,這些自動化工具在加固的系統執行時可能觸發告警

利用錯誤配置,只需修改指令碼,或者在這裡用惡意檔案覆蓋原始的 .exe

最後只需啟動服務即可

注意:即使服務以localSystem許可權執行,我們也有啟動和停止服務的許可權

相關文章