發表文章

目前顯示的是有「service」標籤的文章

未加引號的 Windows 服務

圖片
 未加引號的 Windows 服務 假設今天要執行一個服務 service.exe 路徑在 " C:\Program Files\My Program\My service\ " 這裡底下,lpApplicationName 用於指定服務執行檔的名稱和路徑。如果提供的路徑字串當中包含空格且未用引號括起來,則因為函數很笨不清楚檔案名稱結束和參數開始的位置。所以為了確定這一點,函數開始從左到右的路徑直到到達空格,且對於檔案路徑中的每個空格,函數透過新增 .exe 和其餘部分作為參數,使用前面的部分作為檔案名稱試著啟動服務 故透過一個未加引號的服務二進位路徑 C:\Program Files\My Program\My Service\service.exe 的範例來展示這一點 。當Windows啟動該服務時,由於路徑中存在空格,它將使用以下順序嘗試啟動可執行檔。看到這裡應該猜到可以利用的方式了,就是查找未加引號的服務檔,然後路徑當中有包含空格,就可以利用了 C:\Program.exe C:\Program Files\My.exe C:\Program Files\My Program\My.exe C:\Program Files\My Program\My service\service.exe 所以惡意程式可以是 Program.exe 放在 C:\ 路徑下 也可以是 My.exe 放在 C:\Program Files\ or  C:\Program Files\My Program\  路徑下 但一般 C:\ & C:\Program Files\ 這兩個屬於系統預設路徑 想要將檔案放置於這兩個地方需要特殊權限,當有特殊權限時誰還會去放檔案 放檔案是為了提權所以都是一般使用者帳號,故後面兩個路徑較有可能放檔案 練習 1  靶機 IP : 192.168.195.220,已知一般使用者帳號密碼 steve / securityIsNotAnOption++++++ 利用 GammaService 服務路徑,獲取 daveadmin 桌面上的 flag 第一步 RDP 進去 └─$ xfreerdp -v:192.168.195.220 -u:steve -p:securityIs...

替換 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 my...