【问题标题】:is there any Security risks when bypassing the Execution Policy in PowerShell?绕过 PowerShell 中的执行策略时是否存在任何安全风险?
【发布时间】:2021-05-03 14:44:29
【问题描述】:

当我尝试通过任务计划程序运行 PowerShell 脚本 .ps1 文件时 像这样我得到0*1 Error

powershell.exe 
arguments :-File "E:\v tes\hash v.ps1"

但是当使用以下命令运行命令时:

-NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass `
-File "E:\v tes\hash v.ps1"

它似乎在工作

我需要担心绕过 ExecutionPolicy 吗?

通过在 Bypass 中运行带有 ExecutionPolicy 的命令来绕过 PowerShell 中的执行策略时是否存在任何安全风险?

【问题讨论】:

  • or is it only bypassing it one time and Only for this Script -- 如果它以任何其他方式起作用,我会感到惊讶。

标签: powershell


【解决方案1】:

在您的任务中调用-ExecutionPolicy Bypass 只是绕过该任务的正常执行策略。它会在每次运行时执行此操作,但您不会通过这样做来更改系统的整体执行策略。

执行策略是为了防止您在脚本中意外运行您不希望执行的操作,它本身并不是真正的安全系统。 使用 Bypass 处理您需要的任务会比将整个系统执行策略调整为远程签名或全部签名或不受限制更安全,只要您了解脚本在做什么。

下面是关于一般执行策略的信息

about_execution_Policy

【讨论】:

  • [...] would be safer [...] as long as you understand what your script is doing. 我想补充一点,在这里保持 .ps1 免受“随机”人的进一步修改至关重要。您可能曾经知道脚本做了什么,但如果它被篡改了,您就不再知道了。
【解决方案2】:

PowerShell 的默认 ExecutionPolicy 是 Restricted,这意味着无法运行任何脚本。这对安全很重要,因为可以有效地使用 PowerShell 来拥有一台机器。

如果您有一个特定的脚本要运行,并且该脚本不会更改,您可以考虑签署该特定脚本。这是按计划运行一个脚本的一种非常安全的方式,也是最佳实践方式。

“我是否需要担心绕过执行策略”

这实际上取决于您的组织目标的价值。这就是为什么在绕过模式下设置计划任务对您来说很危险的原因。

任何有权访问机器的人都可以用他们想要的任何东西替换该脚本,并且它仍然会被执行。不要这样做。

现在,如果计算机位于没有物理访问权限的加固位置,并且它是用于您家用 PC 上的个人脚本,那当然可以。如果它是关键任务或可能涉及网络,或者您处于重要行业,请不要走这条冒险的捷径。

“那我该怎么办?”

如果您需要按计划运行脚本,只需对脚本进行签名,如果脚本被篡改或更改,签名将不匹配且不会运行。这会让你开始:How to sign scripts

【讨论】:

  • "任何有权访问机器的人都可以替换该脚本" -- 如果人们能够访问机器并替换脚本,那么您面临的问题要比担心 PowerShell 大得多执行政策。
  • 没错,但我见过很多管理员从不认为他们的脚本可能被篡改的案例。在特权提升攻击中,它是一个常见的目标。幸运的是脚本已签名,并且证书保持在异地,您可以在很大程度上减轻该途径。
【解决方案3】:

没有。安全策略的目的是不在不知情的情况下运行 powershell 脚本,就像作为电子邮件附件接收时一样。在更高版本的操作系统中,默认策略是远程签名的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    • 2020-02-29
    相关资源
    最近更新 更多