# Drupal
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
* 你在**网络安全公司**工作吗?想要在HackTricks中**宣传你的公司**吗?或者你想要**获取PEASS的最新版本或下载HackTricks的PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
## 发现
* 检查**meta**
```bash
curl https://www.drupal.org/ | grep 'content="Drupal'
```
* **节点**: Drupal使用**节点来索引其内容**。一个节点可以**包含任何内容**,比如博客文章、投票、文章等。页面的URI通常采用`/node/`的形式。
```bash
curl drupal-site.com/node/1
```
## 枚举
Drupal默认支持**三种类型的用户**:
1. **`管理员`**:该用户对Drupal网站拥有完全控制权。
2. **`已认证用户`**:这些用户可以登录网站,并根据其权限执行添加和编辑文章等操作。
3. **`匿名用户`**:所有访问网站的用户都被指定为匿名用户。默认情况下,这些用户只能阅读文章。
### 版本
* 检查`/CHANGELOG.txt`文件
```bash
curl -s http://drupal-site.local/CHANGELOG.txt | grep -m2 ""
Drupal 7.57, 2018-02-21
```
{% hint style="info" %}
新版本的Drupal默认阻止访问`CHANGELOG.txt`和`README.txt`文件。
{% endhint %}
### 用户名枚举
#### 注册
在_/user/register_中尝试创建一个用户名,如果该名称已被使用,将会收到通知:
![](<../../.gitbook/assets/image (254).png>)
#### 请求新密码
如果您为现有用户名请求新密码:
![](<../../.gitbook/assets/image (255).png>)
如果您为不存在的用户名请求新密码:
![](<../../.gitbook/assets/image (256).png>)
### 获取用户数量
访问_/user/\_,您可以看到现有用户的数量,例如在这种情况下是2,因为_/users/3_返回一个未找到错误:
![](<../../.gitbook/assets/image (257).png>)
![](<../../.gitbook/assets/image (227) (1) (1).png>)
### 隐藏页面
**模糊搜索`/node/$`,其中`$`是一个数字**(例如从1到500)。\
您可能会发现未被搜索引擎引用的**隐藏页面**(测试、开发)。
#### 安装的模块信息
```bash
#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](https://github.com/droope/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](https://github.com/droope/droopescan)是一个用于扫描Drupal安装的流行工具。它可以识别正在使用的Drupal版本并检查已知的漏洞。Droopescan还可以对Drupal用户账户进行密码暴力破解攻击。
#### Drupalgeddon
[Drupalgeddon](https://github.com/dreadlocked/Drupalgeddon2) 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](https://github.com/dreadlocked/Drupalgeddon2)是一个专门设计用于利用Drupalgeddon漏洞(CVE-2018-7600)的工具。该漏洞允许在Drupal 7.x和8.x版本上进行远程代码执行。该工具自动化了利用过程,使渗透测试人员更容易测试此漏洞。
#### Drupal Security Scanner
[Drupal Security Scanner](https://github.com/immunIT/drupwn) 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](https://github.com/immunIT/drupwn)是一个Python工具,可以扫描Drupal网站的安全漏洞。它可以识别过时的模块、配置错误和其他安全问题。该工具还提供有关Drupal版本和已安装模块的信息。
#### CMSmap
[CMSmap](https://github.com/Dionach/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](https://github.com/Dionach/CMSmap)是一个多功能工具,可用于扫描各种内容管理系统,包括Drupal。它可以识别正在使用的Drupal版本并检查常见漏洞。CMSmap还可以对Drupal用户账户进行暴力破解攻击。
```bash
droopescan scan drupal -u http://drupal-site.local
```
## RCE(远程代码执行)
### 使用PHP过滤器模块
{% hint style="warning" %}
在旧版本的Drupal(8版本之前),可以登录为管理员并启用`PHP过滤器`模块,该模块"允许评估嵌入的PHP代码/片段"。
{% endhint %}
您需要安装**php插件**(访问_/modules/php_并返回**403**,则**已安装**;如果**未找到**,则**未安装php插件**)。
转到_模块_ -> (检查)_PHP过滤器_ -> _保存配置_
![](<../../.gitbook/assets/image (247) (1).png>)
然后点击_添加内容_ -> 选择_基本页面_或_文章_ -> 在_正文_中编写_php shellcode_ -> 在_文本格式_中选择_PHP代码_ -> 选择_预览_
![](<../../.gitbook/assets/image (253) (1).png>)
最后只需访问新创建的节点:
```bash
curl http://drupal-site.local/node/3
```
### 安装 PHP Filter 模块
从版本 **8 开始,**[**PHP Filter**](https://www.drupal.org/project/php/releases/8.x-1.1) **模块不再默认安装**。要使用此功能,我们需要**自己安装模块**。
1. 从 Drupal 网站下载最新版本的模块。
1. wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
2. 下载完成后,进入 **`Administration`** > **`Reports`** > **`Available updates`**。
3. 点击 **`Browse`**,选择从下载目录中下载的文件,然后点击 **`Install`**。
4. 安装完成后,我们可以点击 **`Content`** 并**创建一个新的基本页面**,与在 Drupal 7 示例中所做的方式类似。再次确保从 **`Text format` 下拉菜单中选择 `PHP code`**。
### 后门模块
可以通过**向现有模块添加一个 shell**来创建后门模块。可以在 drupal.org 网站上找到模块。让我们选择一个模块,比如 [CAPTCHA](https://www.drupal.org/project/captcha)。向下滚动并复制 tar.gz [archive](https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz) 的链接。
* 下载存档并提取其内容。
```
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
```
* 接下来,我们需要创建一个 **`.htaccess`** 文件来让我们访问该文件夹。这是必要的,因为Drupal拒绝直接访问 **`/modules`** 文件夹。
```html
RewriteEngine On
RewriteBase /
```
* 上述配置将在请求/modules文件夹中的文件时应用规则。将这两个文件都复制到captcha文件夹中并创建一个存档。
```bash
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:
```sql
SELECT name, mail FROM users;
```
This query will fetch the usernames and email addresses of all the users in the Drupal database.
4. 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'
```
## 参考资料
* [https://academy.hackthebox.com/module/113/section/1209](https://academy.hackthebox.com/module/113/section/1209)
☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 YouTube 🎥
* 你在一家**网络安全公司**工作吗?想要在HackTricks中**宣传你的公司**吗?或者你想要**获取PEASS的最新版本或下载HackTricks的PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品——[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**