WordPress有一个xmlrpc.php文件,只需要后台的账号和密码,就可以发布文章了。所以暴力破解这个文件,也等于暴力破解了wp-admin.php

xmlrpc.php创建目录示例(python3执行)

#coding:utf-8
from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc import WordPressTerm
from wordpress_xmlrpc.methods import taxonomies
 
wp = Client('https://ensky.tech/xmlrpc.php', 'username', 'password')
 
#新建分类
cat = WordPressTerm()
cat.taxonomy = 'category'
cat.name = '目录01'
cat.slug = '111111'
cat.id = wp.call(taxonomies.NewTerm(cat)) #新建分类返回的id
 
print(cat.id)

只需要将上面的username和password修改为自己的,即可在后台自动创建一个目录。

没有任何预防措施的时候,这段代码会正常返回,从而创建一个目录。

方法01:重定向xmlrpc.php到其余网站

宝塔后台——网站——设置

在Nginx管理中点击一下“重载配置”

(找到Nginx,点击设置,点击服务,点击重载配置)

这个时候,再使用xmlrpc.php创建目录的时候会报错如下:

raise ServerConnectionError(repr(e))
wordpress_xmlrpc.exceptions.ServerConnectionError: ProtocolError for ensky.tech/xmlrpc.php: 302 Found

因为我们设置了302重定向,所以请求xmlrpc的时候会返回302

方法02: 访问xmlrpc.php的时候返回403错误

设置:

location = /xmlrpc.php {
return 403;
}

在Nginx管理中点击一下“重载配置”

(找到Nginx,点击设置,点击服务,点击重载配置)

访问xmlrpc.php的时候,会报错如下:
raise ServerConnectionError(repr(e))
wordpress_xmlrpc.exceptions.ServerConnectionError: ProtocolError for ensky.tech/xmlrpc.php: 403 Forbidden

方法03:宝塔面板添加一个重定向

这个方法与上面伪静态中修改是一样的效果,这个是301重定向。

修改完以后,重载一下Nginx配置。

访问xmlrpc.php会报错如下:

raise ServerConnectionError(repr(e))
wordpress_xmlrpc.exceptions.ServerConnectionError: ProtocolError for ensky.tech/xmlrpc.php: 301 Moved Permanently