Chrome Dev Summit 2018 is happening now and streaming live on YouTube. Watch now.

找出漏洞

由于您的网站可能遭到了多种独立的黑客攻击,因此即使您能够找到并修复一个漏洞,仍有必要继续查找是否有其他漏洞。请参阅垃圾内容发布者最常用的网站入侵方法以开始调查问题。

您需要:

  • 拥有您网站服务器(网络、数据库、文件)的外壳/终端管理员访问权限
  • 关于外壳/终端命令的知识
  • 懂代码(如 PHP 或 JavaScript)
  • 能够运行两种防病毒扫描程序

后续操作:

我们将介绍黑客入侵网站的几种常见方式。希望其中能涵盖您的网站存在的漏洞,或有助于您发现其他可能的漏洞。

请注意,漏洞扫描程序防病毒扫描程序不同。漏洞扫描程序的侵入程度更深,更有可能给您的网站带来意外损失。因此,在运行漏洞扫描程序之前,请先按所有说明操作(例如,备份您的网站)。

需要调查的潜在漏洞包括:

1. 感染病毒的管理员计算机

在感染病毒的管理员计算机上,黑客可能安装了间谍软件来记录网站管理员的按键动作。

  • 检查管理员的系统中是否存在病毒。我们建议在管理员用来登录网站的每台计算机上都运行多款口碑不错的防病毒扫描程序。新的恶意软件感染方式层出不穷,避开扫描程序的能力也在不断提升,因此这种方法并不是万无一失的病毒检测方法。鉴于防病毒扫描程序可能会误报,因此运行多款扫描程序能够提供更多数据点来确定是否存在漏洞。此外,为了安全起见,我们还建议您扫描自己的网络服务器以及用于更新网站或向网站发布内容的所有设备。
    • 如果防病毒扫描程序检测到间谍软件、病毒、特洛伊木马或任何可疑程序,请调查网站的服务器日志,检查计算机受感染的管理员是否进行了任何活动。
    • 日志文件可能已经被黑客修改过了。如果日志文件没有被黑客修改过,那么将管理员的用户名与日志文件中的可疑命令关联起来,即可进一步证实是不是管理员的系统中存在的病毒导致网站出现漏洞。

2. 安全系数较低或重复使用的密码

对于黑客而言,破解安全系数较低的密码是一件轻而易举的事情,破解之后他们就能直接访问您的服务器了。强度系数较高的密码是字母、数字和标点符号的组合,不能是可在字典中找到的字词或俚语。一个密码应该只用于一个应用,请不要在整个网络上重复使用密码。如果重复使用密码,那么黑客只要破解了一个应用,就能找到登录信息和密码,然后尝试再次使用它们登录其他应用。

  • 在服务器日志中,检查是否存在可疑活动,例如某个管理员多次尝试登录或执行不应该执行的命令。请记下可疑活动发生的时间,因为知道首次入侵的时间有助于确定哪个版本的备份是干净的。

3. 软件不是最新版本

检查您的服务器安装的操作系统、内容管理系统、博客平台、应用、插件等是否为最新版本。

  • 对已安装的所有软件进行调查(可通过网络搜索),确定您安装的版本是否有安全建议。如果有,很有可能是过期软件导致您的网站存在漏洞。
  • 无论目前是否有过期软件导致了漏洞问题,最佳做法都是始终确保您服务器上的软件为最新版本。

4. 权限较宽松的编码实践,例如开放式重定向和 SQL 注入

  • 开放式重定向
  • 采用开放式重定向是为了创建一种允许添加其他网址的网址结构,以便用户访问网站上的实用文件或网页。例如:

    http://example.com/page.php?url=http://example.com/good-file.pdf
    黑客可能会将垃圾内容网页或恶意软件网页添加到网站的开放式重定向中,从而滥用开放式重定向,例如:
    http://example.com/page.php?url=<malware-attack-site>

    • 如果您的网站存在开放式重定向滥用情况,您可能会在 Search Console 中看到相关消息,其中提供的示例网址包含指向可疑目标的开放式重定向。
    • 为了防止日后出现开放式重定向滥用情况,请检查您的软件中是否默认启用了“允许开放式重定向”、您的代码能否禁止离域重定向,或者您能否对重定向添加签名(以便只有网址经过适当哈希处理的网页或具有加密签名的网页才能进行重定向)。
  • SQL 注入
  • SQL 注入是指黑客向用户输入字段中添加由您的数据库执行的恶意命令。SQL 注入会将您数据库中的记录更新为网络垃圾或恶意软件内容,或者将有价值的数据转储到输出文件中以便黑客获取。如果您的网站使用了数据库(尤其是在感染了 SQL 注入类型的恶意软件时),就有可能遭到了 SQL 注入攻击。

    • 请登录数据库服务器并查看数据库中是否有可疑内容,例如本应是常规文本字段,现在却显示 iframe 或脚本。
    • 对于可疑的值,请检查用户输入的内容是否已经过验证和适当转义,或是以安全方式输入的,无法作为代码执行。如果在系统处理数据库之前没有检查用户输入的内容,SQL 注入可能就是您的网站存在漏洞的根本原因。

后续步骤

流程中的下一步是清理并维护网站