0


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


一、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


本文转载自: https://blog.csdn.net/qq_40506723/article/details/124231018
版权归原作者 白白净净吃了没病 所有, 如有侵权,请联系我们删除。

“PowerShell 基础、ps1 脚本的执行策略和相关渗透思想(一)”的评论:

还没有评论