簡體   English   中英

powershell拒絕加載任何本地ps1腳本的目的是什么,當這是微不足道的規避?

[英]What is the purpose of powershell refusing to load any local ps1 scripts, when this is trivial to circumvent?

背景: 我想進入powershell腳本以自動執行某些任務。 我不是管理員,也無法運行提升的PowerShell流程。 我傾向於使用批處理腳本以命令行實用程序以編程方式執行某些任務,但隨着我的能力的增長,它已經達到了這樣的程度,即powershell將是一個更適合該任務的工具。 我玩了直接的窗戶,並寫了一個基本的腳本,看看我是否可以得到一些工作。

一旦我掌握了一些測試命令,我就將它們保存到一個文件中。

Write-Host "Let's do this"
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") 
[System.Windows.Forms.MessageBox]::Show("Script Successful")
calc.exe

我很驚訝地發現,雖然我可以在即時窗口執行我想要的任何內容,但是加載.ps1(我猜是powershell相當於.bat),它必須被簽名,我需要成為一個管理員來改變這種行為。

但是,我的第一個想法就是“好吧,好吧,我只是將命令發送到.bat的即時窗口”。 所以我查看了powershell -help,並在命令提示符下寫了以下內容:

type test.ps1 | powershell  -

它工作,它也可以從.bat工作。 我在這里錯過了什么嗎? 如果您需要的是一個名為type harmfulscript.ps1 | powershell -的.bat,那么禁止從即時窗口調用.ps1文件有什么意義呢? type harmfulscript.ps1 | powershell - ,你很好嗎?

ExecutionPolicy (請參閱Get-help Get-ExecutionPolicyGet-Help Set-ExecutionPolicy )分為“Scopes”。

是的,這對用戶來說是微不足道的; 從字面上看,為PowerShell創建一個桌面快捷方式,調用PowerShell.Exe -ExecutionPolicy Bypass

回答你的問題; 通過具有通用目的,明顯限制范圍,可以防止隨機進程執行* .ps1腳本(除非它們在您的情況下是數字簽名的)。 這使得系統的“攻擊面”變小。

更新(澄清):

'ExecutionPolicy'功能作為'安全控制'的要點不是預防(因為它很容易繞過),它的身份驗證 - 驗證腳本來自何處(例如:它是否經過數字簽名?)。

這主要是為了阻止不知情的用戶從未知/不可信來源運行腳本。

這種“安全控制”無處不在;

  • Java運行時環境(JRE)將僅(默認情況下)加載受信任的(例如:數字簽名的)applet。

  • Web瀏覽器在遇到自簽名或過期的SSL證書時會拋出錯誤。

微軟PowerShell團隊有一個博客帖子背后的更詳細信息,為什么他們選擇的安全原則。

考慮到這一點,請記住'ExecutionPolicy'有'Scopes'(圖層)。 如果沒有為任何范圍定義“ExecutionPolicy”,則PowerShell將默認為“ Restricted

否則,最頂層的“范圍”獲勝。 有關其他詳細信息,請參閱get-help about_Execution_Policies ,例如哪些“范圍”優先。

PS C:\> Get-ExecutionPolicy -List | Format-Table -AutoSize

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine    RemoteSigned


PS C:\>

實際上,現在有兩種簡單的方法可以作為標准用戶:

從powershell,任何用戶都可以運行Set-ExecutionPolicy -Scope UserPolicy ...

或者,它現在也位於Windows 10頁面底部的“更新和安全性” - >“For Developers”下的設置中。這相當於:

Set-ExecutionPolicy -Scope UserPolicy RemoteSigned

除非您經常使用來自網絡共享的腳本,否則對於開發人員工作站來說,這是一個比“Unrestricted”更安全的默認值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM