微软 Defender 安全研究团队近期发现了一种隐蔽性更强的攻击手法:攻击者正利用 HTTP cookie 作为 Linux 服务器上 PHP WebShell 的控制通道,以实现远程代码执行。这种方法不再通过传统的 URL 参数或请求体传递指令,而是依赖攻击者设定的 cookie 值来触发恶意代码,显著增加了检测难度。
微软在报告中指出:“这些 WebShell 通过将控制逻辑转移到 cookie 中,使其能够隐匿于正常的 Web 流量中,仅在收到特定指令时才被激活。”
隐蔽性增强的攻击手法
这种攻击的核心原理,是利用 PHP 的 $_COOKIE 超全局变量在运行时直接获取 cookie 值。恶意代码被设计为仅在检测到特定 cookie 值时才会执行其功能,而在正常的应用处理流程中保持“休眠”状态。由于 cookie 是常规 HTTP 请求的一部分,这种控制方式几乎不会在网络层面或常规应用日志中触发告警,使其在安全监控下难以被发现。
微软进一步解释,这种行为的危害可以延伸到 Web 请求处理、系统计划任务以及受信任的后台工作进程等多个层面。
三种典型实现方式
根据微软的分析,基于 cookie 的控制模型主要存在以下几种变体:
- 多层混淆加载器:攻击者部署一个 PHP 加载器,该加载器在执行前会对结构化的 cookie 输入进行多层解码和混淆,并执行运行时检查,最终才加载并执行经过编码的二级恶意载荷。
- 模块化重构脚本:PHP 脚本会解析结构化的 cookie 数据,并利用这些数据在内存中动态重构文件操作、解码函数等组件,随后有选择地将二级有效载荷写入磁盘并执行。
- 单标记触发器:这是最直接的方式,PHP 脚本使用单个 cookie 值作为开关。一旦收到包含该特定标记的请求,便会触发一系列攻击者定义的操作,例如执行任意代码或上传文件。
自修复持久化机制
更值得警惕的是,攻击者结合了“自修复”的持久化机制。在已观测到的案例中,攻击者在通过漏洞或窃取的凭证获得初始访问权限后,会设置一个 cron 计划任务。该任务定期调用一个 shell 例程,用于执行经过混淆的 PHP 加载器。
这意味着,即使系统管理员清理了 Web 目录中的恶意加载器文件,这个 cron 任务也会在下次执行时重新创建它,从而形成一个极为可靠的持久化远程代码执行后门。PHP 加载器部署成功后,在日常流量中完全静默,只有当其收到携带了正确“钥匙”(特定 cookie)的 HTTP 请求时,才会被唤醒并执行攻击指令。
微软对此评价道:“将执行控制权转移到 cookie 中,配合通过 cron 实现的重建能力,使得攻击者的操作噪音大大降低。他们并非依赖复杂的漏洞利用链,而是巧妙地利用了环境中已有的、合法的执行路径——包括 Web 服务器进程、管理面板组件和 cron 基础设施——来部署和维护其恶意代码。”
防御建议
针对这种日益隐蔽的攻击方式,微软提出了以下几点防护建议,系统管理员和运维人员可以参考:
- 强化认证:对所有托管控制面板、SSH 访问和管理界面实施多因素认证 (MFA)。
- 监控异常:持续监控系统是否存在异常的登录活动。
- 限制执行:在非必要的情况下,限制 Web 服务账户对 shell 解释器的执行权限。
- 审计任务:定期审计 Web 服务器及相关用户账户下的 cron 任务和计划作业,排查可疑项。
- 检查文件:留意 Web 目录中是否出现了来源不明或可疑的新文件。
- 功能最小化:尽可能限制托管控制面板(如 cPanel、Plesk)中不必要的 shell 或命令执行功能。
参考来源:
Microsoft Details Cookie-Controlled PHP Web Shells Persisting via Cron on Linux Servers
https://thehackernews.com/2026/04/microsoft-details-cookie-controlled-php.html
想要深入了解此类安全威胁的机理,或与其他开发者交流防御实践?欢迎在云栈社区的相关板块参与讨论。
|