利用xmlrpc.php对WordPress进行暴力破解攻击

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插件



相关推荐

  • 生成图片

    from PIL import Image, ImageColor, ImageDraw, ImageFont, ImageFilterdef create_image_with_text(size, color, text, font_path, font_size, text_color, shadow_color, output_path): """ Create a new image of specified size and color with centered text that has a border and shadow. :param size: A tuple con

  • 获取指定目录下的所有图片信息

    1 获取指定目录下的所有图片信息// 获取指定目录下的所有图片信息 public function getImagesInfo($directory) { $images = []; // 创建递归目录迭代器 $iterator = new \RecursiveIteratorIterator( new \RecursiveDirectoryIterator($directory, \RecursiveDirectoryIterator::SKIP_DOTS), \RecursiveIteratorIterator::LEAVES_ONLY ); // 遍历目录中的每个文件 foreach (

  • Thinkphp各版本的PHP要求

    ThinkPHP 8.0:运行环境要求PHP8.0+,兼容PHP8.3ThinkPHP 6.1:运行环境要求PHP7.2+,兼容PHP8.1ThinkPHP 6.0:运行环境要求PHP7.2+,兼容PHP8.1ThinkPHP 5.1:运行环境要求PHP5.6+,兼容PHP8.0ThinkPHP 5.0:运行环境要求PHP5.4+,兼容PHP7.3