Skip to content
Kurisu
Go back

PHP WebShell 免杀:查杀引擎原理与绕过手法

WAF 绕过笔记写过雷池侧对抗,这篇讲主机侧查杀引擎(安全狗/D 盒/HIDS)的免杀。

0x01 先懂检测:两类引擎的分工

静态引擎:不运行代码,匹配特征——完整高危函数名(eval/system/assert)、样本哈希、正则规则。对抗:让特征不完整。

动态引擎:沙箱里跑一遍,污点追踪用户可控数据($_GET['x'])流向危险函数(eval/system)的路径,流动即报警。对抗:切断污点链。

0x02 中断污点追踪的两种方式

  1. 语法报错(最彻底):在污点传播路径插一个致命语法错误(把 eval 拼成 evm),引擎执行到此处直接终止。难点是代码要过引擎侧语法检查、只在追踪侧报错;
  2. 过滤函数”洗白”:污点源与危险函数间插一层处理(自定义过滤/编码转换),让追踪器以为数据已净化(污点可能仍被标记)。

配套技巧是全局变量多层递归:污点数据在 global 引用链上循环,追踪力度随深度衰减,几轮后跟丢。

0x03 沙箱与环境差异:检测端的天然裂缝

HIDS/沙箱精简运行环境,真实环境完整——差异即绕过点:

另有”高级接口盲区”:引擎不检查的功能(自定义 Session Handler 回调、生僻 SPL 接口)——“找它不看的地方下手更有效”。

0x04 具体手法清单

静态层绕过

动态层绕过

落点选择

0x05 一条原则收尾

免杀是对检测原理的理解竞赛——每个绕过先答三问:检测什么数据(静态特征/数据流)?在哪检测(传输/落盘/执行)?引擎与真实环境差在哪?

相关旧文


Share this post:

Previous Post
PHP 8.4+ 绕过 disable_functions
Next Post
雷池旧版本绕过与一次云告警攻防观察