搭建一个Drupal Core RCE(CVE-2019–6340 )漏洞的蜜罐
字数 1277 2025-08-18 11:38:41
Drupal Core RCE (CVE-2019-6340) 蜜罐搭建教学文档
一、漏洞概述
CVE-2019-6340是Drupal核心中的一个远程代码执行(RCE)漏洞,影响Drupal 8.6.x系列版本。该漏洞允许攻击者在未授权的情况下通过REST API执行任意PHP代码,可能导致服务器完全被控制。
二、蜜罐框架介绍
使用webhoneypot-framework框架搭建Drupal蜜罐,主要特点:
- 基于Python 3开发
- 依赖Docker和docker-compose
- 支持JSON配置文件定义蜜罐行为
- 提供攻击检测和快照功能
三、环境准备
1. 系统要求
- Linux操作系统
- Docker和docker-compose已安装
- Python 3环境
2. 下载框架和配置
# 下载蜜罐框架
git clone https://gitlab.com/SecurityBender/webhoneypot-framework.git
cd webhoneypot-framework
# 下载Drupal蜜罐配置
git clone https://gitlab.com/SecurityBender/webhoneypot-drupal.git
cd webhoneypot-drupal
四、Drupal蜜罐配置详解
1. 目录结构
webhoneypot-drupal/
├── apache/ # Apache容器配置
│ ├── Dockerfile
│ └── html/ # Drupal代码存放位置
├── nginx/ # Nginx容器配置
│ ├── config/
│ │ └── default.conf # Nginx配置文件
│ └── Dockerfile
├── config/ # 配置文件目录
├── docker-compose.yml # 容器编排文件
├── drupal.json # 蜜罐主配置文件
└── drupal.sh # 初始化脚本
2. docker-compose.yml解析
version: '2'
services:
apache:
build: apache/
volumes:
- ./apache/html:/var/www/html # 挂载Drupal代码
- ./apache/tmp:/tmp # 挂载临时目录
networks:
- webhoneypot
nginx:
build: nginx/
volumes:
- ./nginx/config/default.conf:/etc/nginx/conf.d/default.conf:ro
- ./nginx/logs:/var/log/nginx # 挂载日志目录
ports:
- "80:80" # 暴露80端口
networks:
- webhoneypot
depends_on:
- apache
networks:
webhoneypot:
driver: bridge
3. drupal.json配置解析
{
"docker_compose_file": "docker-compose.yml",
"pre_start": "drupal.sh",
"snapshots": [
{
"type": "folder_snapshot",
"folder_path": "./apache/html"
},
{
"type": "folder_snapshot",
"folder_path": "./apache/tmp"
},
{
"type": "folder_snapshot",
"folder_path": "./nginx/logs"
}
],
"detection": [
{
"type": "folder_changed",
"folder_path": "./apache/html",
"ignore": [
"sites/default/files/php/twig/"
]
},
{
"type": "folder_changed",
"folder_path": "./apache/tmp"
},
{
"type": "file_contains",
"file_path": "./nginx/logs/access.log",
"pattern": "node/1\\?_format=hal_json"
}
]
}
关键配置项说明:
docker_compose_file: 指定docker-compose文件路径pre_start: 容器启动前执行的脚本snapshots: 定义需要创建快照的目录detection: 攻击检测配置folder_changed: 检测目录变化file_contains: 检测文件内容匹配特定模式
五、搭建步骤
1. 准备Drupal代码
# 下载易受攻击的Drupal版本(8.6.9)
wget -q https://ftp.drupal.org/files/projects/drupal-8.6.9.zip
unzip drupal-8.6.9.zip -d ./apache/
mv ./apache/drupal-8.6.9 ./apache/html
2. 初始化蜜罐
cd webhoneypot-framework
./webhoneypot.py -c ../webhoneypot-drupal/drupal.json init
初始化过程会:
- 构建并启动Docker容器
- 等待用户完成Drupal配置
- 创建初始快照
3. 蜜罐管理命令
| 命令 | 功能 |
|---|---|
start |
启动蜜罐容器 |
stop |
停止蜜罐容器 |
init |
初始化蜜罐并创建初始快照 |
update |
更新蜜罐并创建新的初始快照 |
reset |
检测更改并恢复初始快照 |
六、攻击检测机制
1. 目录变化检测
监控./apache/html和./apache/tmp目录,忽略Drupal生成的Twig缓存文件。
2. 日志模式检测
在Nginx访问日志中检测典型的攻击模式:
node/1?_format=hal_json
3. 快照恢复
检测到攻击后,框架会自动:
- 创建当前状态快照
- 停止容器
- 恢复初始快照
- 重新启动容器
七、安全注意事项
-
定期重置:设置cronjob每15-30分钟自动重置蜜罐
*/20 * * * * /path/to/webhoneypot.py -c /path/to/drupal.json reset -
资源限制:在docker-compose中限制容器资源
apache: cpus: 0.5 mem_limit: 512m -
网络限制:使用防火墙限制出站连接
iptables -A OUTPUT -p tcp --dport 25 -j DROP # 阻止SMTP iptables -A OUTPUT -p tcp --dport 3333 -j DROP # 阻止矿池端口 -
日志监控:实时监控Nginx日志中的可疑活动
八、攻击验证
使用公开的PoC验证蜜罐有效性:
python3 poc.py http://<蜜罐IP>/ "id"
成功执行后会返回:
uid=33(www-data) gid=33(www-data) groups=33(www-data)
九、扩展功能
-
MySQL快照:可配置MySQL数据库快照
{ "type": "mysql_snapshot", "mysql_restore_path": "/docker-entrypoint-initdb.d" } -
自定义检测规则:根据攻击特征添加更多检测模式
-
告警集成:将检测到的攻击通知安全团队