WordPress网站的渗透测试
已发表: 2020-03-20WordPress 为 Internet 上的许多网站提供支持。 因此,经验丰富的攻击者和“脚本小子”喜欢以 WordPress 网站为目标也就不足为奇了。 无论您是网站管理员还是安全专家,在负责评估 WordPress 网站的安全状况时,了解攻击者通常会利用的常见安全陷阱往往会有所帮助。 使用正确的渗透测试工具也很重要。
在本文中,我将介绍一些常见的安全漏洞、不当行为和攻击者可能在许多 WordPress 安装中滥用的有用信息。 我还将重点介绍一些您可以用来帮助您自动化 WordPress 渗透测试的工具。
注意——仅对属于您或您已获得许可的系统执行安全渗透测试。 了解您被授予的访问权限并保持在这些限制内。
常见的 WordPress 安全问题和不当行为
过时的 WordPress 代码版本
运行包含安全漏洞的旧版本 WordPress 核心可以说是与 WordPress 相关的最常见的安全漏洞之一。 虽然较新版本的 WordPress 可以轻松升级到最新版本,但较旧的 WordPress 网站落后的情况并不少见。
在 Internet 上运行旧版本的 WordPress 是一颗定时炸弹。 许多旧版本的 WordPress 包含安全漏洞。 其中许多安全问题通常被攻击者集体利用。
在审核 WordPress 网站的安全漏洞时,这通常是您首先要检查的事情之一。 对于攻击者来说幸运的是,默认情况下,WordPress 添加了一个 HTML 元标记,其中包含正在使用的 WordPress 版本。
<元名称=“生成器”内容=“WordPress 4.8.11” />
知道 WordPress 安装运行的是旧版本可能使攻击者有机会利用已知漏洞。 使用 CVE 安全漏洞数据库搜索 WordPress 核心中的已知安全问题。
WordPress 主题和插件的过时版本
WordPress 核心非常安全。 数以百万计的用户和恶意黑客都在测试和彻底审查代码。 这意味着在大多数情况下,安全问题会在被攻击者滥用之前被发现并修复。 但是,它不能免受安全漏洞的影响。 不幸的是,这不适用于成千上万的 WordPress 插件和主题。
任何人都可以提交主题或插件,并使其可供任何 WordPress 管理员下载和使用。 当然,这并不意味着每个WordPress 插件都编码不佳且漏洞百出——远非如此。 但是,已知漏洞向 WordPress 暴露了巨大的攻击面,您在进行 WordPress 渗透测试时应该注意这一点。
用于对易受攻击的 WordPress 插件和主题进行指纹识别的最快、可以说是最全面的工具是使用 WPScan。 WPScan 是一个开源的黑盒WordPress 安全扫描程序,经常用于扫描 WordPress 网站以查找核心、插件和主题中的已知漏洞。
在渗透测试期间使用 WPScan 时,请确保您注册并将其配置为使用WPScan Vulnerability Database API 密钥。 WPScan 漏洞数据库是由 WPScan 的作者维护的数据库,其中包含最新的已知漏洞及其各自的版本。
有关 WPScan 以及如何运行不同类型扫描的更多信息,请参阅 WPScan 入门。
旧版本的 PHP 和 Web 服务器
WordPress 是一个 PHP Web 应用程序,因此,所有 PHP 安全最佳实践也适用于 WordPress。 在 WordPress 渗透测试期间,这是首先要寻找的东西之一。 运行旧版本 PHP 或 Web 服务器软件(例如 Nginx、Apache HTTP Server、IIS ……)的 WordPress 安装可能会使网站遭受各种不同的攻击。
很容易找出 WordPress 网站使用的 Web 服务器和 PHP 版本。 在许多情况下,攻击者需要做的只是密切关注从网站返回的 HTTP 响应标头。 您可以使用 curl 自己发送请求:
$ curl -s -D – http://167.71.67.124/ -o /dev/null | grep -i “服务器\|X-Powered-By”
在响应中查找Server和X-Powered-By HTTP 标头:
服务器:Apache/2.4.29 (Ubuntu)
X-Powered-By: PHP/5.5.9
根据网站的版本和配置,攻击者可能能够利用已知漏洞(例如 https://www.cvedetails.com/vendor/74/PHP.html)获取有关目标的其他信息。 此类信息可以帮助升级攻击,甚至可以直接在 Web 服务器上执行命令。
WordPress用户名枚举
除非系统管理员采取措施阻止它,否则默认情况下,WordPress 容易受到用户枚举攻击。 WordPress 用户枚举攻击,寻找 WordPress 如何响应特定请求的细微差别。 根据响应,攻击者可以确定用户是否存在,从而允许攻击者可能将此信息用作更大攻击的一部分。
以下是 WPScan 执行 WordPress 用户名枚举攻击的截图。
Web 服务器配置错误
目录列表和其他 Web 服务器配置错误
除了过时的软件外,还必须始终评估任何潜在的 Web 服务器配置错误。 配置错误的 Web 服务器可能会使 WordPress 网站容易受到攻击。 即使 Web 服务器运行的是最新软件,也可能发生这种情况。 以下是一些典型的 Web 服务器配置错误:
启用目录列表
目录列表是一种非常常见的错误配置。 Apache Web 服务器默认启用此功能,但没有帮助。 当没有索引文件时,目录列表只是在图形界面中列出 Web 服务器上的文件和目录。
虽然这本身并不是特别有害,但它为攻击者提供了浏览 Web 服务器目录内容的可能性。 这可能让他看到您网站上的所有文件,其中大部分不应该公开访问,但可以访问,例如备份、密码和配置文件。
备份文件
备份文件是另一个非常常见的Web 服务器配置错误。 通常这些情况发生在系统管理员手动编辑生产系统上的文件时。
暴露潜在敏感信息的备份文件的一个常见示例可能是 PHP 文件的备份副本。 有时 PHP 文件包含重要的配置数据——例如 WordPress 的 wp-config.php 文件。
采取以下场景 - WordPress 管理员需要对 wp-config.php 进行更改。 他们没有遵循最佳实践并将文件副本保存在 Web 服务器以外的其他位置,而是制作了实时 wp-config.php 的副本,并将备份命名为 wp-config.php.bak。 现在让我们假设系统管理员忘记删除此文件,这比我们想象的更频繁。
攻击者现在可以通过简单地请求http://www.example.com/wp-config.php.bak来读取文件。 攻击者可以读取该文件,因为它的扩展名不再是 .php。 因此 PHP 引擎会忽略它,而 Web 服务器将其作为文本文件提供。 现在攻击者知道了 WordPress 数据库凭据、秘密令牌和您保存在该文件中的任何其他敏感配置信息。
临时文件
与备份文件类似,错误位置的临时文件可能会暴露潜在的敏感数据。 再次以 wp-config.php 为例。 如果系统管理员必须使用文本编辑器编辑此文件,并且由于某种原因程序没有干净地退出,那么编辑器很有可能会留下临时文件。 例如,流行的命令行编辑器 Vim 将带有 *.ext~ 扩展名的备份文件与 *.ext.swp 文件一起存储。 swp 文件用作锁定文件。 它们还包含所有撤消/重做历史,以及 Vim 需要的其他内部信息。
因此,在发生崩溃时,Vim 会留下一个 wp-config.php.ext~ 文件,该文件可以像备份文件一样以纯文本形式访问,因为它不以 *.php 文件扩展名结尾。 这种临时文件并不是 Vim 独有的——Emacs(另一种流行的命令行文本编辑器)也保存类似的临时文件,无数其他工具也这样做。
注意——为您的网站使用文件完整性监控插件,以获取所有文件更改的警报,包括临时文件和备份文件。 如果您不熟悉这项技术,请阅读我们对 WordPress 文件完整性监控的介绍。
暴露的 MySQL
到目前为止,系统管理员可能犯的最严重的错误配置之一就是让他们的 WordPress MySQL 数据库服务器对 Internet 开放。 为什么这听起来很疯狂,它的发生可能比你想象的要多。 以下是互联网连接设备搜索引擎 Shodan 的屏幕截图。
当然,仅仅因为 MySQL 暴露在 Internet 上并不意味着有人可以连接到它并访问 WordPress 数据库。 但是,特别是如果与其他攻击结合使用,例如通过备份 wp-config.php 泄露密码或猜测弱密码,则可能导致灾难场景。
一旦控制了 WordPress 数据库,安装 WordPress 就结束了。 攻击者需要做的就是重置管理员密码。 然后他们几乎完全控制了您的 WordPress 网站,甚至可能通过故意安装恶意插件来控制它运行的服务器。
运行不必要的服务
另一个常见的 Web 服务器配置错误问题是默认配置。 许多管理员运行默认配置并且不禁用他们不需要的服务。 在大多数情况下,默认安装运行了许多不必要的服务,如果不安全,其中大部分会使 Web 服务器受到攻击。
用于 WordPress 渗透测试人员和安全专业人员的渗透测试工具
渗透测试人员使用各种工具来自动化他们的工作和技术。 自动化有助于减少执行安全评估/渗透测试所需的时间。
卡利 Linux
一个人使用的工具千差万别。 这取决于个人喜好和手头的问题。 但是,一个好的起点是预先安装各种工具供您使用。
Kali Linux,以前称为 BackTrack,是首选的开源渗透测试 Linux 发行版。 Kali Linux 捆绑了一整套预安装和预配置的工具。 它对希望快速入门的新手用户以及经验丰富的渗透测试人员都很有用。 Kali Linux 是免费提供的,可以在虚拟机上运行。
地图
这款免费扫描仪是任何 pentester 武器库中最基本和最通用的扫描仪之一。 Nmap 主要是一个端口扫描器。 但是,它可以通过其 NSE 脚本语言进行扩展以进行各种不同类型的扫描。
WP扫描
WPScan(本文前面介绍过)是一个开源的 WordPress 安全扫描器。 它扫描已知的 WordPress 漏洞——包括 WordPress 核心以及 WordPress 插件和主题中的漏洞。
WPScan 可以执行一系列黑盒测试。 也就是说,无需访问源代码。 因此,WPScan 非常适合快速准确地发现低悬的 WordPress 漏洞。
OWASP ZAP
OWASP Zed Attack Proxy (ZAP) 是一个免费的开源 Web 应用程序渗透测试工具。 开放 Web 应用程序安全项目 (OWASP) 维护此工具。 OWASP ZAP 专为测试 Web 应用程序的各种漏洞而设计,例如跨站点脚本 (XSS) 和 SQL 注入 (SQLi)。 ZAP 的核心是代理。 它位于渗透测试者的浏览器和网站之间,用于拦截和检查两者之间发送的请求。
除了充当代理之外,ZAP 还可以自动测试各种漏洞,还可以对各种输入进行fuzz 。 Fuzzing是一种安全测试技术,其中向应用程序提供无效或意外的输入,目的是发现安全漏洞。
WordPress 的渗透测试——评估您网站的安全状况
WordPress 安全性不是一次性修复。 这是一个基于四个原则的持续过程:强化 > 监控 > 测试 > 改进。 通过渗透测试,您可以解决测试原理。 即您检查您的网站的安全状态。 然后,您可以根据您的发现采取必要的措施来改进设置。
因此,频繁的 WordPress 网站渗透测试应该是您安全计划的一部分。 您判断应该多频繁地进行渗透测试。 如果您经常更改您的网站,那么您应该经常进行测试。 但是,如果您的网站很少得到更新,那么季度渗透测试就可以解决问题。