在日常的网络安全工作中,我们经常会对目标系统进行信息收集和漏洞评估。你是否遇到过基于 Drupal 构建的网站?作为全球流行的内容管理系统(CMS),Drupal 被用于构建许多高流量的网站。然而,随着时间的推移,如果这些网站没有及时更新,它们可能会成为黑客攻击的目标。为了帮助我们更高效地识别这些潜在风险,我们需要掌握一些自动化工具。在今天的文章中,我们将深入探讨一款名为 Drupwn 的强大工具。这是一款专门为 Drupal CMS 设计的枚举工具和安全扫描器,它能够帮助我们快速发现系统中的薄弱环节。
我们将一起学习如何在 Kali Linux 上安装和配置 Drupwn,并通过实际的代码示例来掌握它的两种核心工作模式:枚举和利用。无论你是一名刚入门的安全爱好者,还是经验丰富的渗透测试人员,这篇文章都将为你提供实用的见解和技巧,帮助你更好地保护或测试 Drupal 系统。
目录
Drupwn 工具核心功能解析
Drupwn 是一款完全开源的工具,由 Python 语言编写。这意味着它具有很好的跨平台性,并且在 Kali Linux 这样的渗透测试专用系统上运行得尤为流畅。它的设计初衷是帮助安全研究人员自动化地对 Drupal 网站进行信息收集和漏洞测试。
为什么我们需要专门针对 Drupal 的工具?虽然通用的扫描器(如 Nikto 或 Nessus)也能发现问题,但 Drupwn 能够深入 Drupal 的架构,识别特定的模块、主题、用户节点以及与特定 Drupal 版本相关的 CVE(通用漏洞披露)。它的核心功能主要分为两个部分:
1. 枚举模式
枚举是攻击链中的第一步。在使用 Drupwn 时,我们可以通过该模式获取目标系统的大量情报。这不仅仅是简单的端口扫描,而是深入应用层的侦察。该模式包含以下强大的功能:
- 用户枚举:识别网站上注册的用户名。这在后续的暴力破解攻击中非常有用。
- 节点枚举:列出内容节点,帮助我们了解网站的结构和内容类型。
- 默认文件枚举:检查常见的敏感文件,如 INLINECODE5c8029a7、INLINECODE4014f8db 等,这些文件通常会泄露版本信息。
- 模块枚举:检测已安装的第三方模块。未更新的模块往往是漏洞的温床。
- 主题枚举:识别当前启用的主题及其配置文件。
- 高级功能:支持 Cookie 处理(用于保持会话)、自定义 User-Agent(模拟浏览器或隐藏身份)、基本身份认证(针对受保护的测试环境)以及请求延迟设置(防止触发 WAF)。它还支持详细的日志记录,方便我们在测试后进行分析。
2. 利用模式
一旦我们完成了信息收集,确认了目标 Drupal 的版本和存在的组件,就可以切换到利用模式。这是 Drupwn 的“进攻”部分,但也常用于验证漏洞是否修复。
- 漏洞检查器:自动比对目标版本与其内置的 CVE 数据库。
- CVE 漏洞利用:如果目标存在已知漏洞(例如著名的 CVE-2018-7600 或 CVE-2019-7600),Drupwn 可以尝试利用这些漏洞获取系统权限或执行远程代码。
注意:在开始之前,请确保你的 Kali Linux 系统中已经安装了 Python 3 环境。由于 Drupwn 是基于 Python 开发的,缺少解释器将无法运行。通常 Kali 默认已包含,但你可以通过输入 python3 --version 来确认。
在 Kali Linux 上安装 Drupwn 的详细步骤
安装过程非常直接,让我们一步步来完成配置。我们将从 GitHub 上克隆源代码,并处理依赖关系。
步骤 1:获取源代码
首先,打开你的终端。我们需要使用 git 命令将 Drupwn 的仓库克隆到本地。请确保你的网络能够正常访问 GitHub。
git clone https://github.com/immunIT/drupwn
执行这条命令后,你的当前目录下会出现一个名为 drupwn 的文件夹。这里面包含了工具的所有核心代码和配置文件。
步骤 2:进入工具目录
为了运行工具并进行后续的安装操作,我们必须进入该目录。
cd drupwn
步骤 3:安装依赖项
Python 项目通常依赖于第三方库。在 Drupwn 的目录中,开发者提供了一个 INLINECODE31456faa 文件,其中列出了所有必需的包(例如 INLINECODEaa4233ad, INLINECODEf33657be 等)。我们需要使用 INLINECODEe907d157 来安装它们。
sudo pip3 install -r requirements.txt
为什么要使用 sudo? 因为在 Kali Linux 上,系统级的 Python 包安装通常需要管理员权限。这一步会自动下载并配置好 Drupwn 运行所需的所有环境。
步骤 4:完成工具安装
仅仅安装依赖是不够的,我们需要将 Drupwn 本身安装到系统中,以便我们可以在任何目录下调用它。这通常通过运行 setup.py 脚本来完成。
sudo python3 setup.py install
这个过程会将 Drupwn 的可执行文件写入 INLINECODE1f5fdc57 或类似的系统路径中。安装完成后,你不需要每次都输入 INLINECODEb7ac1164,直接输入 drupwn 即可。
步骤 5:验证安装
为了确保一切正常,我们可以查看帮助信息。这是检查工具是否安装成功的最简单方法。
drupwn -h
如果终端输出了参数列表和使用说明,那么恭喜你,Drupwn 已经准备就绪!
实战演练:使用 Drupwn 进行枚举
现在让我们进入最有趣的部分——实际操作。假设我们在本地搭建了一个测试环境(或者是经过授权的渗透测试目标),IP 地址为 INLINECODE80f7ccc3,Drupal 安装在 INLINECODEe19ec747 路径下。
示例 1:全面的信息收集
我们将使用枚举模式。Drupwn 允许我们一次性触发多种枚举类型。在终端中输入以下命令:
# 使用枚举模式,指定目标 URL,并指定枚举类型
# 这里我们使用 ‘all‘ 来执行所有可能的枚举检查
python3 ./drupwn --mode enum --target http://192.168.206.133/drupal --enumerate all
工作原理解析:
当我们运行这个命令时,Drupwn 首先会尝试访问目标站点。它通过分析 HTML 源代码、HTTP 头部以及特定路径的响应状态码来判断 Drupal 的版本。
- 版本识别:工具可能会请求
/CHANGELOG.txt文件。这是 Drupal 的标准日志文件,里面通常包含明确的版本号(例如 "Drupal 7.57")。这是最直接的识别方式。 - 模块检测:接着,工具会根据其内置的字典,向
/sites/all/modules/下的常见路径发送请求。如果某个路径返回 200 OK 状态,说明该模块存在。 - 用户发现:Drupal 在用户登录页面(通常是
/user/login)对已注册用户和未注册用户有不同的响应。Drupwn 利用这一机制,通过提交用户名列表并分析响应差异,来确认哪些用户是存在的。
在结果输出中,你可能会看到类似的信息:
-
[+] Detected version: Drupal 7.57 -
[+] Found module: views -
[+] Found theme: bartik
示例 2:针对性枚举(节省时间)
有时候我们不需要扫描所有内容,只想检查某个特定的方面,比如“用户”。我们可以这样做:
# 仅枚举用户,使用内置的用户名字典
python3 ./drupwn --mode enum --target http://192.168.206.133/drupal --enumerate users
这种方法通常被称为“低噪声”扫描,因为它产生的网络流量更少,不容易被入侵检测系统(IDS)发现。
实战演练:使用 Drupwn 进行漏洞利用
收集完信息后,如果我们发现目标版本较老(例如 Drupal 7,且版本低于某些关键补丁),我们就可以尝试进行漏洞利用。
示例 3:CVE 扫描与利用
我们将切换到 exploit 模式。假设我们根据枚举结果,怀疑目标可能存在 CVE-2019-7600(这是一个针对 Drupal 的远程代码执行漏洞,通常与反序列化有关)。
# 使用利用模式,并指定目标
python3 ./drupwn --mode exploit --target http://192.168.206.133/drupal
利用过程详解:
- 自动匹配:在利用模式下,Drupwn 首先会根据已探测到的版本,在其数据库中查找可用的 CVE。例如,它可能会列出 CVE-2018-7600 (Drupalgeddon 2) 或 CVE-2019-7600。
- Payload 注入:如果我们要手动指定某个漏洞进行测试(假设工具支持参数化),或者使用交互式 shell,Drupwn 会构造特定的 HTTP 请求包。对于 CVE-2019-7600,它可能向特定的 URL 端点发送恶意的序列化数据。
- 建立 Shell:如果目标存在漏洞且利用成功,Drupwn 通常会尝试反弹一个 Shell 或提供一个交互式命令行接口。
一旦我们获得了 Shell,输入的命令将在目标服务器上执行。
例如,我们输入:
ls -l
如果成功,我们将看到服务器当前目录下的文件列表。这证明我们已经取得了 Web 服务器的用户权限(通常是 INLINECODEcb217a5d 或 INLINECODE4ed30539)。接着,我们可以输入 INLINECODEe0dac286 或 INLINECODEaab3287c 来查看当前的权限级别。
whoami
# 输出:www-data
这标志着渗透测试取得了关键性的突破。
高级技巧与最佳实践
为了让你在使用 Drupwn 时更加得心应手,这里分享一些实战中的经验。
处理受保护的应用
有时候,目标网站可能处于维护模式,或者仅允许特定 IP 访问。虽然 Drupwn 是枚举工具,但在某些情况下,你可能需要它模拟一个已登录的用户。此时,你可以使用 Cookie。
# 使用 --cookies 参数传入有效的会话 Cookie
python3 ./drupwn --mode enum --target http://target.com --cookies "session_id=xyz123"
避免触发防护机制
WAF(Web 应用防火墙)通常会拦截扫描请求。为了避免被封锁,我们可以设置请求延迟。
# 添加 200毫秒 的延迟,模拟人类操作速度
python3 ./drupwn --mode enum --target http://target.com --delay 200
常见错误与解决方案
在安装或运行过程中,你可能会遇到一些问题。
- ImportError: No module named xxx:这通常意味着 INLINECODEc5650b2a 中的某个包没有安装成功。请尝试单独安装该包:INLINECODEc079e5bf。
- Connection Refused:检查目标 URL 是否正确,目标服务器是否在线,以及你的网络连接是否稳定。
- Permission Denied:如果在使用 INLINECODE301aa474 时遇到权限问题,请确保使用了 INLINECODE0809c296。
结语与后续步骤
通过这篇文章,我们不仅学习了如何在 Kali Linux 上安装和配置 Drupwn,更重要的是,我们深入理解了如何从“枚举”走向“利用”。我们学会了如何识别 Drupal 版本,如何发现敏感文件和模块,以及如何针对已知漏洞进行验证性测试。
对于下一步,我建议你:
- 搭建实验环境:不要直接在生产环境上测试。使用 Docker 或本地搭建一个旧版本的 Drupal(例如 Drupal 7.x),亲手尝试 Drupwn 的各项功能。
- 阅读源码:既然 Drupwn 是开源的,试着阅读一下它的 Python 源码,看看它是如何编写 Payload 和处理 HTTP 响应的。这将极大地提升你的编程能力。
- 结合其他工具:尝试将 Drupwn 与 Nmap 或 SQLMap 结合使用。例如,先用 Nmap 扫描开放端口,发现 80 端口运行 Drupal 后,再用 Drupwn 进行深入分析。
安全测试是一个持续学习的过程,希望 Drupwn 能成为你工具箱中的利器。祝你探索愉快,并在合法合规的范围内精进技术!