启用WP External Links后WordPress Rest API被注入钓鱼HTML,求排查方法
WordPress REST API 被注入钓鱼HTML的排查方案
调用
example.com/wp-json接口时,返回内容会先出现一段隐藏的钓鱼HTML代码,之后才是正常的REST API响应体:<html><body><div style="position:absolute;left:-12882px;width:1000px;"><p>phishing content <a href="phisihin external link" data-wpel-link="external">phishing</a> phisging content </p></div> </body></html>该问题仅在启用WP External Links插件时触发,且插件会自动给钓鱼链接添加
data-wpel-link="external"属性;但其他使用该插件的WordPress站点未出现此问题,目前所有REST API请求都被注入这段代码。
以下是具体排查步骤:
排查WP External Links插件本身问题
- 对比正常站点配置:检查当前站点插件的「外部链接处理范围」「内容过滤规则」,确认是否误开启了对REST API响应的过滤,或者设置了异常规则。
- 重装插件:卸载当前插件,从官方源重新下载安装,排查是否是插件核心文件被恶意篡改。
- 检查插件钩子:用调试工具(如Query Monitor)查看插件绑定的
rest_api_init、send_headers等REST API相关钩子,确认是否有异常回调函数提前输出内容。
排查插件与主题/其他插件的冲突
- 切换默认主题:临时切换到Twenty系列官方主题,测试API是否还会被注入,排除主题自定义钩子干扰插件逻辑。
- 逐个禁用其他插件:除WP External Links外,逐个禁用其他插件并测试API,定位是否是某插件与WP External Links的钩子触发顺序冲突,导致恶意内容被输出。
排查服务器层面的注入
- 检查服务器配置:查看Nginx/Apache的配置文件,确认是否存在异常的输出过滤规则或恶意添加的模块,导致响应前插入HTML。
- 检查PHP全局配置:查看php.ini中的
auto_prepend_file、auto_append_file参数,确认是否被绑定了异常文件,导致全局输出注入。 - 扫描网站目录文件:检查网站根目录、wp-content/uploads等目录,排查是否存在陌生PHP文件,或被篡改的
wp-config.php、functions.php文件。
排查数据库中的恶意内容
- 搜索钓鱼关键词:用phpMyAdmin或WP-CLI在数据库中搜索
phishing content、data-wpel-link="external"等关键词,确认是否是恶意内容被写入到选项表或内容表中,被插件过滤时误输出。 - 检查用户权限:查看站点管理员账户列表,排查是否存在陌生账户,防止恶意用户篡改配置或插入代码。
- 搜索钓鱼关键词:用phpMyAdmin或WP-CLI在数据库中搜索
内容的提问来源于stack exchange,提问作者Preprocezzor
相关产品推荐
相关产品推荐

