未加引號的 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...