远程代码执行:WordPress 用户指南

已发表: 2021-04-28

如果您认真对待网站的安全性,那么是时候了解远程代码执行漏洞的危险性以及如何应对它们了。

远程代码执行 (RCE) 一词指的是几种不同的黑客技术和网络攻击,但它们都有一个主要的共同点。 RCE,有时也称为代码注入,是黑客入侵各种网站(包括运行 WordPress 作为其内容管理系统的网站)的一种越来越常见的方式。

在本指南中,我们将详细解释远程代码执行攻击是什么样的,以及避免这种攻击所需采取的确切步骤。 让我们来看看。

在本指南中

    什么是远程代码执行 (RCE) 攻击?

    远程代码执行 (RCE) 是一种漏洞,它使黑客能够访问和更改其他人拥有的计算机或数据库。 在 RCE 攻击期间,黑客通过使用恶意软件(任意恶意软件)来超越服务器或计算机。

    远程代码执行攻击是在没有硬件所有者授权的情况下进行的,并且数据存储在世界的哪个地方都没有关系。

    RCE 攻击解释

    考虑像白蚁感染这样的远程代码执行攻击可能会有所帮助:

    • 一只白蚁在房子下面挖洞。
    • 房主不知道,如果他们知道他们打算造成的损害,肯定不会邀请白蚁进来。
    • 白蚁吃掉房子的地基,直到房子不再站立。

    虽然这个比喻与 RCE 攻击的工作原理并不完全相同,但 RCE 攻击实际上更糟。 与必须在您家(或屋内)的白蚁不同,黑客可以从任何地方访问您的网站。

    事实是,RCE 攻击非常危险,因为黑客可以在易受攻击的服务器上执行任何类型的恶意代码。 如果熟练的 RCE 黑客可以访问您的 WordPress 网站,那么他们对您的 WordPress 网站造成的损害真的没有限制。

    远程代码执行示例

    2018 年,微软披露了在软件程序 Excel 中发现的远程代码执行漏洞。 攻击者可以利用该漏洞在当前用户的上下文中运行任意代码。

    如果当前用户使用管理用户权限登录,攻击者就可以控制受影响的系统。 然后攻击者可以安装程序; 查看、更改或删除数据; 或创建具有完全用户权限的新帐户。 与使用管理用户权限操作的用户相比,帐户配置为在系统上拥有较少用户权限的用户受到的影响较小。

    远程代码执行

    远程代码执行有哪些不同类型?

    为了更好地理解 RCE hack,您需要了解不同类型的远程代码执行:

    SQL 注入

    您的 WordPress 网站使用 MySQL 数据库进行操作。 当攻击者访问您的 WordPress 数据库和您的所有网站数据时,就会发生 SQL 注入。

    通过 SQL 注入,攻击者可能能够创建一个新的管理员级用户帐户,然后可以使用该帐户登录并获得对 WordPress 网站的完全访问权限。 SQL 注入还可用于将新数据插入到您的数据库中,包括指向恶意或垃圾邮件网站的链接。

    许多 RCE 漏洞攻击 WordPress SQL 语句的构造方式。 例如,如果应用程序需要读取数据库用户名,开发人员可能会错误地使用如下代码进行用户名搜索:

     SELECT * FROM users WHERE name = 'username'

    但是这样的查询与 RCE 相关有什么问题呢? 任何访问您的 WordPress 网站的访问者,甚至是恶意的黑客,都可以输入用户名。 例如,黑客可能会输入 '1”1'= –, OR ' 这将导致这样的 SQL 语句:

     SELECT * FROM users WHERE name = '1'='1' --' OR ''

    假设应用程序继续在整个数据库中搜索站点用户名,然后选择每个有空白名称的字段,当 1 等于 1 时,后者始终为真。 最终发生的事情是,为黑客提供了 SQL 数据库中的每个用户名。

    然而,像这样的数据泄漏并不是 SQL 注入的唯一危险。 攻击者还可以向 SQL 数据库发送大量命令,这可能会覆盖或删除重要的 WordPress 站点数据。

    跨站脚本

    跨站点脚本是另一个 RCE 漏洞。 它直接影响站点访问者,而不是您的服务器。 跨站点脚本 (XSS) 是一种恶意软件攻击,它通过利用任何 WordPress 站点上的跨站点漏洞来执行。 事实上,这是 WordPress 网站被黑客入侵的最常见方式,因为有太多 WordPress 插件存在 XSS 漏洞。

    在每个网页中,代码和内容都以相同的方式呈现。 但是,Web 浏览器能够将代码与内容区分开来,因为它始终包含在脚本标记中。 这意味着,如果没有适当的过滤器,攻击者就能够将恶意代码填充到网页上允许输入文本的任何位置。 如果没有适当的过滤器,攻击者就能够将恶意代码填充到网页上允许输入文本的任何位置。 你受到保护吗?

    这包括易受攻击的字段,例如搜索栏(通常在 WordPress 网站的每个页面上)、评论部分,甚至显示名称。

    执行此攻击时,运行您网站的浏览器将运行恶意代码。

    如果跨站点脚本仅在攻击者的浏览器上执行,它就不会成为一个大的安全问题。 但是,当恶意代码对公众可见时,例如在您博客文章的评论部分,它也会影响查看内容的任何访问者。

    凭借这种远程执行任何代码的危险能力,攻击者可以轻松窃取密码并伪装成合法用户。

    他们还可能查看该用户的个人信息,例如信用卡详细信息或 PayPal 帐户信息。

    警告:黑客入侵可能会传染给您的用户。 正确的安全性不仅是为了您的保护,也是为了他们的保护。

    目录遍历

    此攻击不针对应用程序或您的 WordPress 站点访问者。 相反,主要目标是您的实际网站。

    RCE 漏洞利用站点文件如何存储在您网站服务器的文件系统中。

    通常,数据存储在标准目录中,例如 /home/user/public_html。 目录中的脚本使用相对路径访问文件,例如 wp-admin/index.php 直接引用 /home/user/public_html/wp-admin/index.php。

    当脚本被配置为访问当前目录之外的文件时,它只需包含一个“../”即可完成此操作。 这是指比当前目录高一级的目录。

    例如,目录模式 /home/user/public_html/../ 被定向到 /home/user/。

    如果允许脚本从任何自定义文件名读取或上传,攻击者将引导应用程序遍历目录,名称如 ../../../../../../../ ../../etc/passwd.

    如果您还没有实现重要的安全功能,例如输入过滤,黑客就可以直接访问您服务器的核心文件,这对您的站点安全来说是个坏消息。

    您可以采取哪些措施来防止远程代码执行 (RCE) 攻击?

    本指南中提供的详细信息无意恐吓您或使您感到恐惧。 相反,它旨在强调始终运行最强大的 WordPress 站点安全措施的重要性日益增加。

    它还提醒您随时更新您的插件,以确保它们不会受到新的 RCE 漏洞的影响。

    绝大多数 RCE 攻击可以通过随时了解它们并在它们发生之前做好准备来缓解或完全停止。 作为 WordPress 网站所有者,重要的是要预测和了解我们的网站服务器如何处理用户提供的信息。

    如何防止远程代码执行 (RCE) 攻击:5 个步骤

    确保您的站点免受 RCE 漏洞影响的第一种方法是采用多方面的防御系统。 换句话说,即使一道防线使您失败,您仍然可以免受潜在攻击。

    话虽如此,让我们来看看您应该采取的一些最重要的步骤,以防止这些恶意且通常是危险的攻击。 有几个因素会使您的 WordPress 网站更容易受到成功攻击。

    1. 下载并安装 iThemes Security Pro 插件

    要开始保护您的站点,请下载并安装 iThemes Security Pro 插件。

    立即获取 iThemes Security Pro

    2. 激活版本管理以保持 WordPress 核心、插件和主题更新

    简而言之:如果您在网站上运行过时版本的 WordPress、插件和主题,您将面临遭受攻击的风险。 版本更新通常包括针对代码中安全问题的补丁,包括远程代码执行 (RCE) 漏洞,因此始终运行 WordPress 网站上安装的所有软件的最新版本非常重要。

    更新一旦可用,就会出现在您的 WordPress 仪表板中。 练习运行备份,然后在每次登录 WordPress 站点时运行所有可用更新。 虽然运行更新的任务可能看起来不方便或令人厌烦,但这是一项重要的 WordPress 安全最佳实践。

    wordpress 插件更新

    很难跟踪每个已披露的 WordPress 漏洞——我们会在我们的 WordPress 漏洞综述中跟踪并分享它们——并将该列表与您在网站上安装的插件和主题的版本进行比较。 但是,这并不能阻止 WordPress 黑客针对具有已知漏洞的插件和主题。 在您的网站上安装具有已知漏洞的软件可为黑客提供接管您网站所需的蓝图。

    iThemes Security Pro 插件中的版本管理功能允许您自动更新 WordPress、插件和主题。 除此之外,当您运行过时的软件并扫描旧网站时,版本管理还可以选择加强您的网站。

    要开始使用版本管理,请在安全设置的主页上启用该模块。

    现在单击配置设置按钮仔细查看设置,所有这些设置都是为了保护您的站点。

    • WordPress 更新– 自动安装最新的 WordPress 版本。
    • 插件更新- 自动安装最新的插件更新。 启用此设置将禁用 WordPress 自动更新插件功能以防止冲突。
    • 主题更新- 自动安装最新的主题更新。 启用此设置将禁用 WordPress 自动更新主题功能以防止冲突。
    • 运行过时软件时加强站点 - 当一个月未安装可用更新时,自动为站点添加额外保护。
    • 扫描旧的 WordPress 站点– 每天对旧的 WordPress 站点的托管帐户进行扫描,这可能允许攻击者破坏服务器。 一个存在漏洞的过时 WordPress 站点可能允许攻击者破坏同一托管帐户上的所有其他站点。
    • 修复漏洞时自动更新- 此选项与 iThemes Security Pro 站点扫描协同工作,以检查您的网站是否存在已知的 WordPress、插件和主题漏洞,并在可用时应用补丁。

    插件和主题更新

    现在让我们仔细看看配置插件和主题更新。 在我们开始之前,快速提醒一下,启用插件和主题更新设置将禁用 WordPress 自动更新功能以防止冲突。

    插件和主题更新设置都有三个选择。

    1. 空白/无– 将设置留空将允许 WordPress 管理插件和主题更新。
    2. 自定义- 自定义选项允许您根据自己的喜好精确地自定义更新。 我们将在稍后详细介绍这一点。
    3. 全部- 一旦有可用更新,全部将更新您的所有插件或主题。

    现在让我们仔细看看自定义选项。

    选择自定义选项可为您的插件和主题更新提供三种不同的选择。 正如我们所见,自定义自动更新设置比 WordPress 的开启或关闭自动更新选项提供了更多的灵活性。

    3. 扫描您的站点以查找易受攻击的插件和主题

    iThemes Security Pro Site Scanner 是另一种保护您的 WordPress 网站免受所有软件黑客攻击的首要原因的方法:过时的插件和具有已知漏洞的主题。 站点扫描程序会检查您的站点是否存在已知漏洞,并在可用时自动应用补丁。

    检查的 3 种类型的漏洞

    1. WordPress 漏洞
    2. 插件漏洞
    3. 主题漏洞

    要在新安装时启用站点扫描,请导航到 iThemes Security Pro 设置并单击站点扫描设置模块上的启用按钮。

    要触发手动站点扫描,请单击位于安全设置右侧栏的站点扫描小部件上的立即扫描按钮。

    站点扫描结果将显示在小部件中。

    如果站点扫描检测到漏洞,请单击漏洞链接以查看详细信息页面。

    在站点扫描漏洞页面上,您将看到是否有针对该漏洞的修复程序。 如果有可用的补丁,您可以单击“更新插件”按钮在您的网站上应用此修复程序。

    在补丁可用和 iThemes 安全漏洞数据库更新以反映修复之间可能存在延迟。 在这种情况下,您可以将通知静音,以便不再收到与漏洞相关的任何警报。

    重要提示:在您确认当前版本包含安全修复程序或漏洞不会影响您的站点之前,您不应忽略漏洞通知。

    4. 防止会话劫持

    您应该为 WordPress 网站上的管理员和编辑设置会话劫持保护,以保护自己免受远程代码执行漏洞的影响。

    iThemes Security Pro 可信设备功能使会话劫持成为过去。 如果用户的设备在会话期间发生变化,iThemes Security 将自动将用户注销,以防止用户帐户上发生任何未经授权的活动,例如更改用户的电子邮件地址或上传恶意插件。

    iThemes Security Pro 中的受信任设备功能可用于识别您和其他用户用于登录您的 WordPress 站点的设备。 识别出您的设备后,我们可以阻止会话劫持者和其他不良行为者对您的网站造成任何损害。

    当用户登录到无法识别的设备时,受信任的设备可以限制其管理员级别的功能。 这意味着,如果攻击者能够闯入您的 WordPress 网站的后端,他们将无法对您的网站进行任何恶意更改。

    要开始使用可信设备,请在安全设置的主页上启用它们,然后单击配置设置按钮。

    在 Trusted Devices 设置中,决定您要使用该功能的用户,然后启用Restrict CapabilitiesSession Hijacking Protection功能。

    启用新的受信任设备设置后,用户将在 WordPress 管理栏中收到有关待处理的无法识别设备的通知。 如果您当前的设备尚未添加到受信任设备列表中,请单击“确认此设备”链接以发送授权电子邮件。

    单击无法识别的登录电子邮件中的确认设备按钮,将您当前的设备添加到受信任设备列表。

    启用可信设备后,用户可以从他们的 WordPress 用户配置文件页面管理设备。 在此屏幕中,您可以批准或拒绝可信设备列表中的设备。

    此外,您可以选择注册一些第三方 API 以提高可信设备识别的准确性,并使用静态图像地图来显示无法识别的登录的大致位置。 查看受信任的设备设置以查看可用的集成,

    5. 为所有管理员用户开启两步验证

    双因素身份验证是通过需要两种不同的验证方法来验证个人身份的过程。 谷歌在其博客上分享说,使用双因素身份验证可以阻止 100% 的自动机器人攻击。 赔率不差!

    iThemes Security 插件允许您为 WordPress 站点激活双因素身份验证,因此用户必须输入辅助代码才能登录。

    iThemes Security Pro 提供的三种两因素身份验证方法包括:

    1. 移动应用程序– 移动应用程序方法是 iThemes Security Pro 提供的最安全的两因素身份验证方法。 此方法要求您使用免费的双因素移动应用程序,例如 Authy 或 Google Authenticator。
    2. 电子邮件- 双因素的电子邮件方法会将时间敏感代码发送到您用户的电子邮件地址。
    3. 备用代码– 一组一次性使用代码,可用于在主要两因素方法丢失时登录。

    要开始在您的网站上使用双因素身份验证,请在 iThemes Security Pro 设置的主页上启用该功能。

    按照此处的步骤继续为您的 WordPress 站点设置双因素身份验证。 如果您遵循了我们的建议并为特权用户启用了强制要求,那么接下来您将看到输入双因素令牌的位置。

    两步验证

    RCE 预防:其他提示

    1. 只使用完善的软件应用程序和插件

    “逃避”的过程非常适合作为您抵御 RCE 漏洞的第一道防线。 但是,除了脚本标签之外,还有一些其他方式可以让服务器和浏览器解释代码。

    如果您的目标是自己跟踪每一个,那将非常复杂,需要大量的时间和资源。

    幸运的是,应用程序开发人员对 RCE 漏洞问题进行了大量思考。

    最好使用像 WordPress 这样值得信赖且信誉良好的 CMS(内容管理系统),因为平台内置了解决方案以及您在其上运行的主题和插件。

    当新版本发布时,让所有软件应用程序和插件保持最新始终是必不可少的。 当漏洞被发现时,软件开发人员将全天候工作,以领先于他们发现的弱点。

    对于插件和主题作者来说都是如此。

    如果您使用的是自定义 CMS 而不是 WordPress,您可以通过使用参数化查询来保护您的站点免受潜在 SQL 注入的影响。 此查询类型将提前通知应用程序您将要运行的确切查询类型。 然后它会识别并删除黑客可能试图插入的添加命令。 它将发送原始查询并排除添加的字符串,而不是成功插入。

    在上面的示例中,参数化查询如下所示:

     $query="SELECT * FROM users WHERE name = ?"
    $results=$query.execute(“'OR'1'='1'--”)

    在这种情况下,您的数据库正在以正确的方式处理 ' OR '1'='1' 。 它将此查询视为仅包含文本的字符串,并了解没有与所提供名称相关联的用户。

    2. 验证用户的输入

    开始防止 RCE 漏洞的最佳位置是您的站点用户与您的应用程序交互的位置。

    最简单的方法是删除和过滤掉任何不需要的字符。

    另一种选择是通过转义来保留内容。

    如果您不熟悉转义的含义,那么在此过程中您会指示您的计算机查看一些似乎是作为常规文本的代码。 例如,您可以将脚本标记替换为“<script>”。

    通过这样做,Web 浏览器理解在指定位置显示小于“< 和大于”符号。 但它不会将整个文本字符串视为代码。

    对于用户来说,结果是不可见的。

    3. 最小特权原则

    在极少数情况下可能会出现零日 RCE 漏洞。 这意味着您、CMS 和应用程序开发人员都不知道特定的新型攻击。

    即使在这种情况下,我们仍然能够通过设置一些关于应用程序能够做什么的简单规则来限制攻击者可以造成的损害。

    例如,假设您正在设计一个从数据库读取的应用程序。 确实没有必要为新应用程序提供删除或写入数据库记录的能力或权限。

    在这种情况下,即使攻击者试图破坏脚本,他们也会遇到错误并失败。

    最小权限原则也很有用,因为它与 PHP 函数有关。

    PHP 函数是各种在线攻击者的标准目标。 应该禁用您的应用程序可能不需要的强大功能,例如 ini_set()(这允许您从脚本中更新 PHP 设置)或 exec()(运行作为文本传递的代码)。

    这可以防止黑客和攻击者将它们用于恶意目的。

    这个特殊的想法适用于保护您网站面向公众的区域以及服务器端代码。

    4. 内容安全策略

    Content-Security-Policy 是大多数现代 Web 浏览器在 HTTP 中使用的标头。 它决定了浏览器应该在您的网站上加载什么类型的内容。 当您从应用程序或 Web 服务器发送标头时,您将能够指定允许运行的脚本类型和位置。

    使用该策略有助于防止黑客注入他们的恶意脚本。

    5. 阻止脚本读取 Cookie

    另一种选择是防止脚本读取 cookie。 这会阻止请求被发送到其他站点。

    这是通过使用 SameSite=Strict 或 HttpOnly 属性设置它们来完成的。 即使在黑客的代码在您的 WordPress 站点上运行的情况下,您也将阻止他们访问您站点用户的身份验证 cookie。

    这将显着减少 WordPress 远程代码执行攻击期间的潜在损害。

    总结:WordPress 远程代码执行

    当您发现正在寻找您的 WordPress 网站的所有潜在安全威胁时,如果您感到有点不知所措,请不要担心。 事实是,威胁很多,但解决方案可能很简单。

    我们希望本指南能帮助您了解 WordPress 网站上 RCE 攻击的风险。 通过实施一些 WordPress 安全最佳实践以及上述 5 个步骤,您将拥有更好的防线。

    将每周 WordPress 漏洞报告发送到您的收件箱
    注册报告

    远程代码执行