PowerShell 基础ps1 脚本的执行策略和相关渗透思想

Posted 白白净净吃了没病

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PowerShell 基础ps1 脚本的执行策略和相关渗透思想相关的知识,希望对你有一定的参考价值。

目录

一、PowerShell 

1、简介

2、进入 powershell

3、ps1 文件

4、ps1 文件的执行演示

二、PowerShell 的执行策略

1、查看策略及更改策略

2、策略对运行脚本的影响演示 

三、 PowerShell 脚本的渗透

附录

1、cmd、PowerShell 和 Window Terminal 的区别

2、Shell 与 终端

3、Linux 中的 Shell


一、PowerShell 

1、简介

Windows PowerShell 是 Microsoft 创建的基于任务的自动化命令行 Shell 和相关脚本语言。它是Microsoft 的新 Shell,它将旧的命令提示符(CMD)功能与具有内置系统管理功能的新脚本指令集结合在一起。

2、进入 powershell

win + R,输入 powershell 即可进入【不区分大小写】:

查看 powershell 的版本:

3、ps1 文件

ps1 文件即包含多行 powershell 命令的脚本,以 .ps1 为扩展名,对于一些重复性工作,比如文件复制、删除、压缩等,用一些基于 windows 的脚本会非常方便。之前用 cmd,即执行 bat 脚本。现在 powershell 脚本更强大,powershell 脚本扩展名为.ps1

4、ps1 文件的执行演示

写了一个脚本 carrot.ps1,大家可以拿去演示:

$wy = New-Object -ComObject WScript.Shell  
# object.Popup(strText,[nSecondsToWait],[strTitle],[nType])
$love= $wy.popup("Do you sure love FWY ? 
If you are too shy to express your love, the system will confirm it for you after twenty seconds without clicking. 
Wish you both happiness! ",20,"Confirm your love",0 + 32)
if ($love -eq 1) 
Write-Host "Congratulations to ZAX !
She made the same choice as you did !" -ForegroundColor white -BackgroundColor red

存放目录如下图:

执行:

点击确定:

如果把此文件移动到上一级目录:

 输入如下命令:

..\\carrot.ps1

如果把此文件放到 D盘,输入如下命令执行:


二、PowerShell 的执行策略

PowerShell 执行策略是一项安全功能,用于控制 PowerShell 加载配置文件和运行脚本的条件。 此功能有助于防止恶意脚本的执行。在非 Windows 计算机上,默认执行策略为 Unrestricted 且无法更改:

上图来源:

关于执行策略 - PowerShell | Microsoft Docs介绍 PowerShell 执行策略并说明如何管理它们。https://docs.microsoft.com/zh-cn/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7.2&viewFallbackFrom=powershell-6


1、查看策略及更改策略

切换执行策略:

Set-ExecutionPolicy 执行策略名字 -Scope CurrentUser

开发人员需频繁使用 powershell 脚本,因此允许本地脚本运行,用 RemoteSigned 即可:

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

如果不加 -Scope ,默认对本机的执行策略进行修改,会报错:

必须使用管理员的 PowerShell 来进行修改:


2、策略对运行脚本的影响演示 

更改当前用户执行策略为 restricted 不能执行脚本,更改后可执行:


三、 PowerShell 脚本的渗透

可以看到将执行策略设为 Restricted 时,不能执行 powershell 脚本

渗透的思想就要绕过这种模式

采用如下方式,可以绕过并完美执行脚本:

PowerShell.exe -ExecutionPolicy Bypass -File .\\carrot.ps1

完美执行,可以看到此时执行策略依然是 restricted,成功绕过 


附录

1、cmd、PowerShell 和 Window Terminal 的区别

cmd :命令行(command line),是命令执行窗口,用 win + R 回车启动

PowerShell :cmd 的升级版,或者说是 cmd 的超集,类似 Linux 系统的 bash 一样,都是基于壳程序 shell,如下图,同样打开服务,PowerShell 支持使用cmdlet命令格式(动词-名词),此外还有 get-help、get-command 等命令

两者对比举例,PowerShell更优秀:

1、命令

同样,PowerShell 兼容原来的 cmd 使用的命令格式:

2、管道 

即前一个命令的输出作为后一个命令的输入:

powershell:

管道基于对象

筛选 mode 和 name:

cmd:

也有管道,但是基于文本,无法细分

 Window Terminal:微软在Build 2019大会上发布的面向 Windows10 的新命令行程序,Terminal 集成了 Windows 上的 PowerShell、cmd、Windows Linux子系统(WSL)三大环境


2、Shell 与 终端

终端:接受用户的输入,并传递给 Shell 程序,接受程序输出并展示到屏幕

Shell:接受用户的命令,并解析给操作系统执行,将结果输出到终端,shell 这个外壳 是用户与操作系统(内核)之间的桥梁


3、Linux 中的 Shell

Bash和shell_take it down的博客-CSDN博客_bash shell一、什么是shell,什么是bash?管理计算机硬件的其实是内核,用户正是通过shell来跟内核通信的,从本质上说shell是一个能执行各种命令的宏处理器。而bash(/bin/bash)就是linux默认的shell。...https://blog.csdn.net/myydebk666/article/details/82977383什么是shell和bash?_Garrick不想996的博客-CSDN博客_bash shell是什么意思在Linux中图形界面不是很强,一般都只是直接通过命令窗口来进行系统控制的,所以shell就显得特别重要。你也可以简单的将shell理解为命令行,与之相关的还有shell脚本,就是shell能识别的一连串命令行。说了那么多,来看个官方定义:Unix shell:一种壳层与命令行界面,是Unix操作系统下传统的用户和计算机的交互界面。普通意义上的shell就是可以接受用户输入命令的程序。它之所以...https://blog.csdn.net/qq_44537267/article/details/104960010?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0.pc_relevant_paycolumn_v3&spm=1001.2101.3001.4242.1&utm_relevant_index=3以 Kali Linux 为例,查看系统支持哪些 shell:

查看当前正在使用的 shell:

你明白 shell、bash 和 zsh 等词的真正含义吗? - 知乎导言最近花了点时间,把和 shell 有关内容都整理了一遍。如果你对这方面有些疑惑,这篇文章可以让你更好地理解它们的含义。阅读时间大概5分钟。 解释与编译编程语言没有编译型和解释型的区别,只能说某个语言常见…https://zhuanlan.zhihu.com/p/34197680

powershell 无法运行一些脚本的情况

有时候在powershell里运行脚本会报错:

无法加载文件 ******.ps1,因为在此系统中禁止执行脚本。有关详细信息,请参阅 "get-help about_signing"。
所在位置 行:1 字符: 17

可以设置运行策略:

下图可以看到原来是无法运行对的,执行了上面的命令后就可以了,如下图

执行策略的问题:

查看“get-help about_signing”:

主题
about_signing

简短说明
说明如何对脚本进行签名以使其符合 Windows PowerShell 执行策略。

详细说明
Restricted 执行策略不允许任何脚本运行。
AllSigned 和 RemoteSigned 执行策略可防止 Windows PowerShell 运行没有数字签名的脚本。

本主题说明如何运行所选未签名脚本(即使在执行策略为 RemoteSigned 的情况下),还说明如何对
脚本进行签名以便您自己使用。

有关 Windows PowerShell 执行策略的详细信息,请参阅 about_Execution_Policy。

允许运行签名脚本
-------------------------------
首次在计算机上启动 Windows PowerShell 时,现用执行策略很可能是 Restricted(默认设置)。

Restricted 策略不允许任何脚本运行。

若要了解计算机上的现用执行策略,请键入:

get-executionpolicy

若要在本地计算机上运行您编写的未签名脚本和来自其他用户的签名脚本,请使用以下命令将计算机上的
执行策略更改为 RemoteSigned:

set-executionpolicy remotesigned

有关详细信息,请参阅 Set-ExecutionPolicy。

执行“set-ExecutionPolicy RemoteSigned ”:

执行策略更改
执行策略可以防止您执行不信任的脚本。更改执行策略可能会使您面临 about_Execution_Policies
帮助主题中所述的安全风险。是否要更改执行策略?
[Y] 是(Y) [N] 否(N) [S] 挂起(S) [?] 帮助 (默认值为“Y”): y

以上是关于PowerShell 基础ps1 脚本的执行策略和相关渗透思想的主要内容,如果未能解决你的问题,请参考以下文章

如何运行PowerShell的脚本文件

无法加载文件 C:Users***AppDataRoaming pmcnpm.ps1,因为在此系统上禁止运行脚本

PowerShell~执行策略的介绍

路径中的.cmd与.ps1

powershell 无法运行一些脚本的情况

如何在命令行执行 powershell 脚本