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



相关推荐

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

    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

  • Thinkphp5.1路径常量

    1 配置文件位置根目录/config/template.php2 配置文件内容&lt;?php// +----------------------------------------------------------------------// | ThinkPHP [ WE CAN DO IT JUST THINK ]// +----------------------------------------------------------------------// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reser

  • Thinkphp5.0路径常量

    1 配置文件位置根目录/application/模块名/config.php2 配置文件内容&lt;?php//配置文件return [ // 后台视图输出字符串内容替换 'view_replace_str' =&gt; [ '__PUBLIC__' =&gt; '/', '__STATIC__' =&gt; '/static', '__CONSOLE__' =&gt; '/static/console', '__CONSOLE_CSS__' =&gt; '/static/console/css', '__CONSOLE_IMAGES__' =&gt; '/static/console/ima

  • wp站点防止别人进行DDOS攻击

    1 简介wp站点防止别人进行DDOS攻击。2 配置位置位置:根目录/wp-config.php3 配置内容在【根目录/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'; } hea

  • 只读属性

    1 只读属性简介只读属性的声明方式类似于普通属性,但需要使用 readonly 关键字。2 只读属性例子class Point { public readonly float $x; public readonly float $y; public function __construct(float $x, float $y) { $this-&gt;x = $x; $this-&gt;y = $y; }}$point = new Point(3.5, 2.8);echo $point-&gt;x; // 输出: 3.5echo $point-&gt;y; // 输出: 2.8// 下面的尝