1 XML-RPC攻击简介
WordPress的XML-RPC攻击是指利用WordPress的XML-RPC接口进行恶意操作或者暴力破解的攻击行为。XML-RPC(XML Remote Procedure Call,XML远程过程调用)是一种远程调用协议,允许客户端通过HTTP协议调用远程服务器上的程序或者服务。在WordPress中,XML-RPC接口允许用户通过远程请求执行诸如发布文章、获取文章列表、编辑内容等操作,这些操作可以通过XML格式的数据进行传输。
2 XML-RPC攻击类型
(1) 暴力破解: 攻击者可以使用自动化脚本通过XML-RPC接口进行暴力破解,尝试猜测有效的用户名和密码组合,以获取管理员权限或者执行其他恶意操作。
(2) DDoS攻击: 攻击者可以利用XML-RPC接口发起大量请求,占用服务器资源,从而导致服务拒绝攻击(DDoS)。
(3) 执行恶意操作: 攻击者可以利用XML-RPC接口发布未经授权的文章、编辑现有文章、更改网站设置等,从而破坏网站的正常运行或者传播恶意内容。
3 XML-RPC攻击阻止
(1) 彻底屏蔽 XML-RPC:只需在当前主题的 functions.php 文件最后,添加下面这行代码就能关闭它
# 彻底屏蔽 XML-RPC
add_filter('xmlrpc_enabled', '__return_false');
# 关闭 Pingbacks 端口
add_filter( 'xmlrpc_methods', 'remove_xmlrpc_pingback_ping' );
function remove_xmlrpc_pingback_ping( $methods ) {
unset( $methods['pingback.ping'] );
return $methods;
}add_filter('xmlrpc_methods', '__return_empty_array');
(2) WPJAM Basic 插件:WPJAM Basic 插件的「优化设置」也有该选项(下图最后一个),直接勾选即可
(3) Apache服务器:在项目的根目录下,新建一个.htaccess 文件,然后在文件中,添加如下的内容:
<Files xmlrpc.php>
Order Allow,Deny
Deny from all
</Files>
(4) Nginx服务器:给站点设置伪静态,伪静态内容如下:
location ~* ^/xmlrpc.php$ {
return 403;
}
(5) wp-config.php:在项目的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;
}
(6) 根据IP地址限制登录尝试:安装WPS Limit Login插件