freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

PolyShell:一款适用于Bash、Batch、PowerShell的polyglot
2020-04-06 15:00:59

工具介绍

PolyShell是一款功能强大的polyglot脚本,它可以同时适用于Bash、Windows Bash和PowerShell。

这种特性使得PolyShell成了一渗透测试中一款非常有用的模板,因为它能够再无需目标特定的Payload的情况下在大多数目标系统中执行。除此之外,PolyShell还可以使用类似USB Rubby DuckyMalDuino这样的设备并通过输入注入来进行传递和发送。

工具下载

广大研究人员可以使用下列命令将该项目的源码克隆至本地:

git clone https://github.com/llamasoft/polyshell.git

如何使用

作为单独脚本使用:

1、拷贝/重命名脚本,配置正确的文件扩展名,例如.sh、.bat或.ps1;

2、以Batch文件或PowerShell文件的运行方式来运行脚本;

使用命令注入的方式使用脚本:

1、在目标设备上打开终端窗口;

2、运行Payload;

3、按下Ctrl-C,然后运行“exit”命令;

以输出注入的方式使用该脚本与脚本直接运行的使用方式有一些不同,当以单独脚本的方式运行时,一旦一种语言已经处理完成,那么Payload将会立即退出执行。如果是通过输入注入的方式运行的话,Payload将会以读取循环的方式运行。如果不以循环方式运行的话,Payload将会关闭当前终端窗口,并在一个未知窗口中继续输入执行。组合键Ctrl-C可以让脚本退出读取循环,并确保在运行的过程中不会产生任何意外情况。

除此之外,如果直接将脚本代码粘贴到终端中运行的话,可能会出现运行失败的情况。当脚本到达读取循环之处,某些终端会将剩下的粘贴文本当作读取循环的输入数据来处理,这就非常好了,但有的终端可能会在读取循环退出时继续执行脚本,这就不合适了。

脚本工作机制

当我们尝试运行指定代码语言的命令时,该工具会尝试对命令进行解析,分析因素包括参数引用、重定向和注释等等。大家可以参考下列这行代码:

echo \" <<'BATCH_SCRIPT' >/dev/null ">NUL "\" \`" <#"

每一种语言都可以识别echo命令,但不同语言会以不同的方式来解析后续的命令。比如说:

echo \" <<'BATCH_SCRIPT' >/dev/null ">NUL "\" \`" <#"

Bash [-----] [---]

Batch [-----------------------------] [-] [---]

PS [-----------------------------] [-]

工具运行截图

项目地址

PolyShell:【GitHub传送门

* 参考来源:llamasoft,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

# PolyShell # polyglot
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者