2023年12月22日 星期五

Bat/PowerShell 提權執行的指令

Bat/PowerShell 提權執行的指令



PowerShell

啟動一個新的進程並以管理員權限執行指定的命令

Start-Process 'cmd.exe' -ArgumentList "/c $cmdStr" -Verb RunAs



Bat 通常解法

批處理檔(.bat 檔)中實現類似的功能,事情就有些不同了,因為批處理檔沒有內建的提升權限命令。

一種解決方案是創建一個臨時的 VBScript 檔,這個腳本會觸發 UAC 提示以提升權限,然後執行您的批處理檔。這裡有一個例子:

  • 1. 創建一個 VBScript 檔案:
保存以下代碼到一個 .vbs 檔案,例如 elevate.vbs。這段代碼會以管理員身份執行一個指定的命令。
If WScript.Arguments.Count >= 1 Then
    Command = WScript.Arguments(0)
    Set Shell = CreateObject("Shell.Application")
    Shell.ShellExecute "cmd.exe", "/c " & Command, "", "runas", 1
End If


  • 2. 從批處理檔中調用這個 VBScript:
在您的 .bat 檔案中,使用以下命令來調用 elevate.vbs,並傳遞您想要以管理員權限執行的命令作為參數。
cscript //nologo elevate.vbs "您的命令"




進階手段

先利用執行內建需要管理員的程式來判斷是不是管理員

  1. 如果不是則委託給 PowerShell 重新讀取自己再次執行,並結束(並免重複執行自己)
  2. 如果已經是則繼續執行底下 bat

只需要將這行貼在首行即可

fltmc >nul || (set Admin=/x /d /c call "%~f0" %* & powershell -nop -c start cmd $env:Admin -verb runas; & exit /b)





沒有留言:

張貼留言