WordPress 最大安全隐患,防止 xmlrpc.php 被扫描!

WordPress 最大安全隐患,防止 xmlrpc.php 被扫描!

 

在服务器的访问记录里面看到 WordPress 的 xmlrpc.php 被大量请求,比如下图:

WordPress 最大安全隐患,防止 xmlrpc.php 被扫描!

我甚至碰到过更加过分的情况,有客户的 WordPress 站点因为 xmlrpc.php 文件被扫描得过多,造成了服务器负载过多,进入后台和访问页面都变得非常缓慢,并且我们查了好久才知道是这个文件被扫描过多造成的,费事费心费力!

这是因为什么?为什么 xmlrpc.php 文件会被扫描?对于这个问题怎么处理更好。

 

什么是 XML-RPC

要理解为什么 xmlrpc.php 文件会被扫描,首先要明白什么是 XML-RPC,它的全称是 XML Remote Procedure Call,即 XML 远程过程调用,它是一套允许运行在不同操作系统、不同环境的程序实现基于网络过程调用的规范和一系列的实现。

简单说 RPC 就是通过像本地服务一样远程调用另外一台服务器上的服务来完成需求,XML-RPC 就是使用 XML 作为编码格式的 RPC。

XML-RPC 使用 http 作为传输协议,XML 作为传送信息的编码格式,一个 XML-RPC 消息就是一个请求体为 XML 的 http-post 请求,被调用的方法在服务器端执行并将执行结果以 XML 格式编码后返回。

 

一个 XML-RPC 协议包括两部分:

RPC client,用来向 RPC 服务端调用方法,并接收方法的返回数据。

RPC server,用于响应 RPC 客户端的请求,执行方法,并回送方法执行结果。

 

WordPress 源代码( xmlrpc.php 文件)中已经包含了完整的 RPC 服务端代码,它支持对文章,媒体,评论,分类,选项等等各方面数据的管理。

换句话说,只要懂 XML-RPC 协议,就可以使用 XML-RPC 对 WordPress 博客的各个方面进行操作,也就是说可以使用 XML-RPC 做 WordPress 的客户端。

 

XML-RPC 安全隐患

 

XML-RPC 那么好用,也造成了一定的安全隐患,主要是给攻击者提供了便利,所以攻击者的一项工作就是扫描 xmlrpc.php 文件,以便可以实现:

1. XML-RPC pingbacks 攻击,攻击者可以利用 XML-RPC 的 pingbacks 方法对 WordPress 实行 DDoS (分布式拒绝服务)攻击,如果你使用了 CDN 服务商的 DNS 保护服务,攻击者还可以使用 pingbacks 方法获取站点的真实 IP,剩下不用我说了吧。😂

2. 即使 WordPress 设置了登录次数限制,但是使用 XML-RPC 暴力破解 WordPress 的账号密码却逃过了限制,并且 XML-RPC 一次请求就可以执行上百次密码的暴力破解。😓

 

彻底屏蔽 XML-RPC

既然存在这些问题,那么最好关闭 WordPress 的 XML-RPC 服务,群里面有些小伙伴建议直接删除 xmlrpc.php 文件就好了,但是删除了,下次 WordPress 升级之后又会出现,不太建议这么做。

最快的方法,只需在当前主题的 functions.php 文件添加下面这行代码就能关闭它:

add_filter('xmlrpc_enabled', '__return_false');

 

使用 PHP 代码或者插件方式关闭,xmlrpc.php 文件被扫描的时候,整个 WordPress 代码还是会被加载,所以如果浪费服务器资源在这上面,可以使用下面方式屏蔽服务器上 xmlrpc.php 文件的请求:

 

1. Apache 可以通过在 .htaccess 文件前面添加以下代码:

<Files xmlrpc.php>

Order Allow,Deny

Deny from all

</Files>

 

这时候访问 xmlrpc.php,页面显示:

WordPress 最大安全隐患,防止 xmlrpc.php 被扫描!

 

2. nginx 服务器可以添加下面的规则:

location ~* ^/xmlrpc.php$ {

return 403;

}

 

3. 如果以上两个方式都不好用,还可以在 WordPress 的 wp-config.php 文件最开始的地方添加:

if(strpos($_SERVER['REQUEST_URI'], 'xmlrpc.php') !== false){

$protocol = $_SERVER['SERVER_PROTOCOL'] ?? '';


if(!in_array($protocol, ['HTTP/1.1', 'HTTP/2', 'HTTP/2.0', 'HTTP/3'], true)){

$protocol = 'HTTP/1.0';

}


header("$protocol 403 Forbidden", true, 403);

die;

}

 

这时候访问 xmlrpc.php,页面显示:

WordPress 最大安全隐患,防止 xmlrpc.php 被扫描!

 

 

免责说明

本站资源部分来自网友投稿,如有侵犯你的权益请联系管理员或给邮箱发送邮件PubwinSoft@foxmail.com 我们会第一时间进行审核删除。
站内资源为网友个人学习或测试研究使用,未经原版权作者许可,禁止用于任何商业途径!请在下载24小时内删除!


如果遇到评论下载的文章,评论后刷新页面点击对应的蓝字按钮即可跳转到下载页面
本站资源少部分采用7z压缩,为防止有人压缩软件不支持7z格式,7z解压,建议下载7-zip,zip、rar解压,建议下载WinRAR

给TA打赏
共{{data.count}}人
人已打赏
WordPress教程

WordPress 7B2主题教程:页眉下方添加顶部通栏广告

2023-5-14 14:36:14

WordPress教程

最全的WordPress网站链接新窗口打开方法

2023-5-15 11:41:52

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
有新私信 私信列表
搜索