在要求输入邮箱的文本域,请填写真实的邮件地址。非真实邮件地址,将收不到回复信息。

WordPress禁用xmlrpc.php接口

PHP 清风 1209℃ 0评论

最近遇到了大规模的针对wordpress后台暴力破解,验证码好像也没有什么用。经过了解发现是WordPressXMLRPC的接口问题。

XML-RPCWordPress 用于第三方客户端(如 WordPress iPhone 和安卓客户端,Windows Live Writer 等)的 API 接口,还可以用于 pingbacks trackbacks 端口,作为站点之间的通讯桥梁。

攻击方式

这种利用xmlrpc.php的攻击可以绕过限制。攻击的方式直接POST以下数据到xmlrpc.php


<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
  <methodName>wp.getUsersBlogs</methodName>
  <params>
   <param><value>帐户名</value></param>
   <param><value>密码</value></param>
  </params>
</methodCall>

关于getUsersBlogs接口的更多信息可以参考官方的指南。 账户/密码错误返回为403.

关闭XML-RPC (pingback) 的功能

只需要在当前主题functions文件中添加以下代码即可关闭XML-RPC功能即可。


add_filter('xmlrpc_enabled', '__return_false');

禁用之后再进行调用将返回如下信息:

WordPress禁用xmlrpc.php接口-第0张图片

如果仅仅想关闭XML-RPCpingback端口,而不影响第三方离线发表功能,在当前主题functions文件中添加以下代码:


/**
 * WordPress 关闭 XML-RPC 的 pingback 端口
 */
add_filter( 'xmlrpc_methods', 'remove_xmlrpc_pingback_ping' );
function remove_xmlrpc_pingback_ping( $methods ) {
	unset( $methods['pingback.ping'] );
	return $methods;
}

Apache服务器

使用 .htaccess屏蔽xmlrpc.php


# protect xmlrpc
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>

如果需要考虑authz_core_module模块的使用,可以使用以下规则。


<Files xmlrpc.php>
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order deny,allow
Deny from all
</IfModule>
</Files>

Nginx服务器


location ~* /xmlrpc.php { 
     deny all; 
}

其他解决方法

  • 安装Login Security Solution
  • 删除xmlrpc.php文件



转载请注明:清风亦平凡 » WordPress禁用xmlrpc.php接口

喜欢 (4)or分享 (0)
支付宝扫码打赏 支付宝扫码打赏 微信打赏 微信打赏
头像
发表我的评论
取消评论

CAPTCHA Image
Reload Image
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址