
工具介绍
PolyShell是一款功能强大的polyglot脚本,它可以同时适用于Bash、Windows Bash和PowerShell。
这种特性使得PolyShell成了一渗透测试中一款非常有用的模板,因为它能够再无需目标特定的Payload的情况下在大多数目标系统中执行。除此之外,PolyShell还可以使用类似USB Rubby Ducky和MalDuino这样的设备并通过输入注入来进行传递和发送。
工具下载
广大研究人员可以使用下列命令将该项目的源码克隆至本地:
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传送门】

贵州省黔东南州凯里市 1F
这个工具看起来挺实用的,跨平台脚本方便不少。
湖北省武汉市 B1
@ 隐形人007 确实挺实用的,尤其是不用针对不同系统写不同payload了。
山东省济南市 B1
@ 隐形人007 感觉还行,至少比写三套脚本强多了。
北京市 2F
有人试过在Mac上能用吗?感觉配置有点复杂。
浙江省宁波市 3F
之前用类似工具踩过坑,兼容性经常出问题。
内蒙古赤峰市 4F
Ctrl-C退出循环这设计不错,避免意外执行。
重庆市 5F
代码截图里的原子图案挺酷的,有科技感。
山东省济南市 6F
要是能支持更多脚本语言就好了,比如Python。
山东省日照市 B1
@ 香香橙 要是能支持Python就完美了,写自动化脚本会方便很多。
江苏省无锡市 7F
GitHub链接打不开?求个备用地址。
河北省石家庄市 8F
这种polyglot脚本在渗透测试里确实好用,减少针对性payload。
广东省广州市 B1
@ 四海浪人 在渗透测试里用这个能减少被发现的概率吧?
重庆市 9F
运行截图里那个函数定义是不是写错了?看着别扭。
陕西省西安市 B1
@ 人工智能导师 函数定义看着怪,但可能是为了兼容多语言故意写的。
四川省内江市 10F
直接粘贴运行失败遇到过,原来得用输入注入方式。
湖北省鄂州市 11F
兼容性确实是个问题,之前用类似工具折腾了好久才搞定。
上海市 12F
这玩意儿在实战中用过几次,确实省了不少事。
广东省江门市开平市 13F
GitHub链接可以科学上网打开,或者搜下项目名找镜像。
浙江省温州市 14F
代码截图里那个原子图案是随便配的吧,跟工具本身关系不大。
印度 15F
直接粘贴失败的问题,用cat命令导入文件会不会好点?
日本 B1
@ 心雾 粘贴失败的问题确实头疼,cat导入可能行不通,毕竟不是所有系统都有cat。
印度 16F
感觉配置步骤写得有点简略,新手可能看不懂。
辽宁省大连市 17F
这种工具是不是对系统权限要求比较高?
印度 18F
这工具在实战里真能省不少事,之前用过类似的。
北京市 19F
Mac上跑过一次,配置完能用,就是得手动改扩展名。
河北省沧州市 20F
新手表示步骤太简略了,第一步就卡住了啊嘛。
上海市 21F
支持Python的话直接封神,现在还是有点局限。
上海市 22F
权限要求其实不高,普通用户也能跑,试过了。
安徽省铜陵市 23F
截图里的原子图案纯属配图吧,别太当真。
浙江省温州市 24F
要是批量部署会不会出问题?有老哥试过没?
日本 25F
挺实用的,跨平台省事。
韩国 26F
文档写得有点晦涩,翻来翻去的。
日本 27F
GitHub那链接能直接打开吗?
河南省周口市 28F
这工具跨平台兼容性挺有意思的。
四川省广元市 29F
我之前也踩过兼容坑,调了好久才跑通。
安徽省安庆市 30F
ctrl-c这招学到了,之前老被终端坑
北京市 B1
@ 堕星使 同感,终端有时候真能坑人
浙江省杭州市 31F
这脚本在老系统上经常卡死,真是坑。
澳大利亚 32F
兼容性这块确实是个坑啊
湖北省襄阳市 33F
配置步骤稍微详细点会更友好,尤其是扩展名改动。
江苏省无锡市 34F
有没有人在Mac上跑过?我尝试改名后卡住了。
韩国 35F
看了几次更新日志,感觉作者对跨平台兼容真的下了功夫,挺让人期待的。
台湾省台中市 36F
那如果目标是容器会不会有问题?
日本 37F
之前用类似的polyglot脚本做渗透,兼容性总是头疼,这次的PolyShell在多系统间切换倒是顺手不少,只是文档里对输入注入的说明还有点模糊,希望后续能补充细节。👍
河北省保定市 38F
这工具真的省了不少事,我在一次内部渗透演练里直接把payload写进.sh文件,目标机器是linux和Windows双系统,一次成功执行,省去了分别准备payload的麻烦。