【日记】【持续更新】WordPress常见安全风险/漏洞 及处理办法

参宿四今天还好吗 2023-4-9 493 4/9

【日记】【持续更新】WordPress常见安全风险/漏洞 及处理办法

前言

WordPress作为一款十分常见的CMS(内容管理系统),其用户数量之大,应用类型之广,使其成为无数攻击者垂涎的目标。

尤其是WordPress历史已较为“悠久”,且插件数量十分庞大,其中安全漏洞问题更是数不胜数。

本文将持续更新一些比较普遍的WordPress安全风险,帮助您及时处理以应对来自互联网的威胁。

如果您也有相关内容想与大家一同分享,欢迎联系administrator@kawayi.space投稿您的内容,或直接在下方评论区与大家一同交流,我们期待与您一同进步!

后台暴露类

攻击者如何简单确认您是否使用了WP并查询后台——wlwmanifest.xml利用

写于2023.4.9

攻击者或者攻击程序通过构造 https://www.*****.com/wp-includes/wlwmanifest.xml 的URL进行GET,来判断你是否使用了Wordpress程序。以及你的后台登录地址!输入后你会得到这样的反馈。所以修改后台登录地址很重要。

<manifest xmlns="http://schemas.microsoft.com/wlw/manifest/weblog">
<options>
<clientType>WordPress</clientType>
<supportsKeywords>Yes</supportsKeywords>
<supportsGetTags>Yes</supportsGetTags>
</options>
<weblog>
<serviceName>WordPress</serviceName>
<imageUrl>images/wlw/wp-icon.png</imageUrl>
<watermarkImageUrl>images/wlw/wp-watermark.png</watermarkImageUrl>
<homepageLinkText>View site</homepageLinkText>
<adminLinkText>Dashboard</adminLinkText>
<adminUrl>
<![CDATA[ {blog-postapi-url}/../wp-admin/ ]]>
</adminUrl>
<postEditingUrl>
<![CDATA[ {blog-postapi-url}/../wp-admin/post.php?action=edit&post={post-id} ]]>
</postEditingUrl>
</weblog>
<buttons>
<button>
<id>0</id>
<text>Manage Comments</text>
<imageUrl>images/wlw/wp-comments.png</imageUrl>
<clickUrl>
<![CDATA[ {blog-postapi-url}/../wp-admin/edit-comments.php ]]>
</clickUrl>
</button>
</buttons>
</manifest>

解决方法:

1.通过WAF防火墙屏蔽该URL或通过nginx/apache伪静态屏蔽

#nginx伪静态 
location ~ ^/wp-includes/wlwmanifest.xml {
      deny all;
    }

xmlrpc.php利用

写于2023.4.9,转载于WordPress中xmlrpc.php完整指南(功能、安全风险、如何禁用) - WordPress企业主题网 (wpyou.com)

XML-RPC是支持WordPress与其他系统之间通信的规范。它通过使用HTTP作为传输机制和XML作为编码机制来标准化这些通信来实现此目的。但是由于REST API已集成到WordPress核心中,因此xmlrpc.php文件不再用于此通信。

通过XML-RPC Pingbacks进行DDoS攻击

xmlrpc.php启用的功能之一是pingback和Trackbacks。这些是当另一个博客或网站链接到您的内容时在您网站的注释中显示的通知。

XML-RPC规范使这种通信成为可能,但是它已被REST API取代(如我们所见)。

如果在您的站点上启用了XML-RPC,则黑客可能会利用xmlrpc.php在短时间内向您的站点发送大量pingback,从而在您的站点上发起DDoS攻击。这可能会使服务器超载,并使站点无法正常运行。

通过XML-RPC的蛮力攻击

每次xmlrpc.php发出请求时,它都会发送用户名和密码进行身份验证。这带来了重大的安全责任,而REST API却没有做到这一点。实际上,REST API使用OAuth来发送令牌进行身份验证,而不是用户名或密码。

因为xmlrpc.php随每个请求发送身份验证信息,所以黑客可以使用它来尝试访问您的站点。这样的暴力攻击可能使他们可以插入内容,删除代码或破坏数据库。

如果攻击者向您的站点发送了足够多的请求,每个请求使用不同的用户名和密码对,则他们最终有可能会命中正确的请求,从而使他们可以访问您的站点。

因此,如果您正在运行WordPress的最新版本(使用REST API与外部系统通信),则应禁用xmlrpc.php。不需要它,这可能会使您的网站易受攻击。

解决方法:

1.使用插件禁用xmlrpc.php

安装插件以禁用xmlrpc.php是最简单的方法。实现这些禁用XML-RPC插件将完全禁用它。相关插件如下:

Disable XML-RPC此插件可在运行3.5或更高版本的WordPress网站上运行。 在版本3.5或更高版本上运行的WordPress网站,默认情况下启用xmlrpc。 此外,删除了启用和禁用xmlrpc的选项。 所有者可能有许多原因要禁用该功能。 使用此插件,可以轻松完成。

Remove & Disable XML-RPC Pingback 禁用带有插件的XML-RPC Pingbacks;您不必成为pingback拒绝服务攻击的受害者。 激活插件后,将自动禁用xml-rpc。 这个插件最好的地方是,您无需进行任何配置。 禁用xmlrpc pingback时,将可以减少服务器CPU使用率。

REST XML-RPC Data Checker使用该插件配置XML-RPC和REST API激活

如果要对站点上的xmlrpc.php和REST API的配置方式进行更细粒度的控制,可以安装REST XML-RPC Data Checker插件

安装并激活此插件后,转到“设置”>“ REST XML-RPC数据检查器”,然后单击“ XML-RPC”选项卡。

这使您可以准确配置xmlrpc.php的哪些方面在您的站点上处于活动状态。另外,您也可以将其完全关闭。并且,如果您还想控制REST API,则该插件会为您提供另一个选项卡。

 

2.屏蔽请求,nginx/apache伪静态,WAF阻止

#nginx伪静态
location = /xmlrpc.php {
          deny all;
          access_log off;
          log_not_found off;
}
#或者
location ~* ^/xmlrpc.php$ {
return 403;
}

3.直接删除根目录下xmlrpc.php文件(推荐)

用户名暴露类

REST API /wp-json/wp/v2/users/暴露站点用户名

写于2023.4.8

1.攻击者可通过 www.*****.com/wp-json/wp/v2/users/ 来访问您站点的API以列出您站点的所有用户名称,这可能导致您的管理员用户名暴露并被用于暴力破解

2.攻击者可以通过HTTP 参数rest_route绕过对上一项的封锁

https://www.*****.com/blog/wp-json/wp/v2/users 已屏蔽
https://www.*****.com/blog/?rest_route=/wp/v2/users 绕过

3.攻击者还可以通过?search=参数对用户名进行爆破

https://www.*****.com/wp-json/wp/v2/users  已屏蔽
https://www.*****.com/wp-json/wp/v2/users?search=r@initech.com
https://www.*****.com/wp-json/wp/v2/users?search=er@initech.com
https://www.*****.com/wp-json/wp/v2/users?search=ter@initech.com
https://www.*****.com/wp-json/wp/v2/users?search=eter@initech.com
https://www.*****.com/wp-json/wp/v2/users?search=peter@initech.com  绕过

解决方法:

1.过滤包含 /wp/v2/users参数值的请求

2..通过WAF防火墙屏蔽该目录访问(推荐),或对/wp-json目录设置参数校验(可能造成一些插件需要修改后才能正常使用),列如blog.*****.com/wp-json?key+密钥

3.您可以通过nginx/apache伪静态屏蔽相关目录(注意大小写敏感性检查)

#nginx伪静态 
location ~ ^/wp-json/wp/v2/users {
      deny all;
    }
注意目录屏蔽的完整
https://www.*****.com/wp-json/wp/v2/users  已屏蔽
https://www.*****.com/wp-json/wp/v2/users/1  绕过
注意敏感性检查
https://www.*****.com/section/news?rest_route=/wp/v2/users  已屏蔽
https://www.*****.com/section/news?rest_route=/wp/v2/usErs  绕

 

 

 

- THE END -

参宿四今天还好吗

4月09日22:05

最后修改:2023年4月9日
1

本文为原创内容,转载请联系administrator@kawayi.space获取授权!

共有 0 条评论