上传 WebShell 几乎总是利用 Web 漏洞后的下一步,但 Cloudflare 等服务和新一代防火墙在阻止攻击者通过 HTTP 或 HTTPS 在目标上执行命令方面做得非常出色。另一方面,文本内容过滤和应用程序白名单策略只需极少的努力即可轻松利用,而 pinky 就是这一点的 PoC。
首先,pinky 会尝试找到哪个函数可用于执行系统命令;在找到最佳的 PHP 函数后,所有通信都会被加密,因此即使防火墙被配置为读取流量,也无法判断该活动是否恶意。此外,pinky 能够通过任何类型的代理进行通信。除此之外,我们还需要发送 Basic Authentication(我知道这完全不安全!),以防止其他人与该 pinky 代理进行通信。
$ git clone [email protected]:davidtavarez/pinky.git
Cloning into 'pinky'...
remote: Counting objects: 223, done.
remote: Compressing objects: 100% (79/79), done.
remote: Total 223 (delta 54), reused 72 (delta 27), pack-reused 103
Receiving objects: 100% (223/223), 385.73 KiB | 73.00 KiB/s, done.
Resolving deltas: 100% (101/101), done.
$ cd pinky
$ php pinky.php
_ _
_ __ (_)_ __ | | ___ _
| '_ \| | '_ \| |/ / | | |
| |_) | | | | | <| |_| |
| .__/|_|_| |_|_|\_\__, |
|_| |___/ v2.0
The PHP Mini RAT.
+ Author: David Tavarez
+ Twitter: @davidtavarez
+ Website: https://davidtavarez.github.io/
+[WARNING]------------------------------------------+
| DEVELOPERS ASSUME NO LIABILITY AND ARE NOT |
| RESPONSIBLE FOR ANY MISUSE OR DAMAGE CAUSED BY |
| THIS PROGRAM ¯\_(ツ)_/¯ |
+---------------------------------------------------+
[-] I need a json file containing the settings.
首先,利用目标上发现的漏洞。
现在,我们可以使用内置生成器生成我们的代理,如下所示:

我使用 Obfuscator-Class(作者 Pierre-Henry Soria)来混淆代理,因为效果非常好。

生成代理后,我们需要将其上传到目标机器,并将 URL 粘贴到之前创建的 JSON 文件中。如果我们想(而且必须)使用 SOCKS5 代理,就需要添加以下设置:
{
"key":"[KEY]",
"url":"[URL]",
"login":{
"username":"[LOGIN]",
"password":"[PASSWORD]"
},
"proxy":{
"ip":"127.0.0.1",
"port":9150,
"type":"SOCKS5"
},
"cookies": "[COOKIES]"
}
最后一步是上传代理,打开终端,然后将 JSON 文件作为参数传入。
$ php pinky.php config.json


如果你想贡献,请 fork 这个项目,从 master 创建一个新分支,然后发送 PR 给我。此外,你也可以为 Wiki 添加更多页面来做出贡献 :)