搭建一个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

初始化过程会:

  1. 构建并启动Docker容器
  2. 等待用户完成Drupal配置
  3. 创建初始快照

3. 蜜罐管理命令

命令 功能
start 启动蜜罐容器
stop 停止蜜罐容器
init 初始化蜜罐并创建初始快照
update 更新蜜罐并创建新的初始快照
reset 检测更改并恢复初始快照

六、攻击检测机制

1. 目录变化检测

监控./apache/html./apache/tmp目录,忽略Drupal生成的Twig缓存文件。

2. 日志模式检测

在Nginx访问日志中检测典型的攻击模式:

node/1?_format=hal_json

3. 快照恢复

检测到攻击后,框架会自动:

  1. 创建当前状态快照
  2. 停止容器
  3. 恢复初始快照
  4. 重新启动容器

七、安全注意事项

  1. 定期重置:设置cronjob每15-30分钟自动重置蜜罐

    */20 * * * * /path/to/webhoneypot.py -c /path/to/drupal.json reset
    
  2. 资源限制:在docker-compose中限制容器资源

    apache:
      cpus: 0.5
      mem_limit: 512m
    
  3. 网络限制:使用防火墙限制出站连接

    iptables -A OUTPUT -p tcp --dport 25 -j DROP  # 阻止SMTP
    iptables -A OUTPUT -p tcp --dport 3333 -j DROP # 阻止矿池端口
    
  4. 日志监控:实时监控Nginx日志中的可疑活动

八、攻击验证

使用公开的PoC验证蜜罐有效性:

python3 poc.py http://<蜜罐IP>/ "id"

成功执行后会返回:

uid=33(www-data) gid=33(www-data) groups=33(www-data)

九、扩展功能

  1. MySQL快照:可配置MySQL数据库快照

    {
      "type": "mysql_snapshot",
      "mysql_restore_path": "/docker-entrypoint-initdb.d"
    }
    
  2. 自定义检测规则:根据攻击特征添加更多检测模式

  3. 告警集成:将检测到的攻击通知安全团队

十、参考资源

  1. webhoneypot-framework GitLab仓库
  2. Drupal安全公告SA-CORE-2019-003
  3. CVE-2019-6340技术分析
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. 下载框架和配置 四、Drupal蜜罐配置详解 1. 目录结构 2. docker-compose.yml解析 3. drupal.json配置解析 关键配置项说明: docker_compose_file : 指定docker-compose文件路径 pre_start : 容器启动前执行的脚本 snapshots : 定义需要创建快照的目录 detection : 攻击检测配置 folder_changed : 检测目录变化 file_contains : 检测文件内容匹配特定模式 五、搭建步骤 1. 准备Drupal代码 2. 初始化蜜罐 初始化过程会: 构建并启动Docker容器 等待用户完成Drupal配置 创建初始快照 3. 蜜罐管理命令 | 命令 | 功能 | |------|------| | start | 启动蜜罐容器 | | stop | 停止蜜罐容器 | | init | 初始化蜜罐并创建初始快照 | | update | 更新蜜罐并创建新的初始快照 | | reset | 检测更改并恢复初始快照 | 六、攻击检测机制 1. 目录变化检测 监控 ./apache/html 和 ./apache/tmp 目录,忽略Drupal生成的Twig缓存文件。 2. 日志模式检测 在Nginx访问日志中检测典型的攻击模式: 3. 快照恢复 检测到攻击后,框架会自动: 创建当前状态快照 停止容器 恢复初始快照 重新启动容器 七、安全注意事项 定期重置 :设置cronjob每15-30分钟自动重置蜜罐 资源限制 :在docker-compose中限制容器资源 网络限制 :使用防火墙限制出站连接 日志监控 :实时监控Nginx日志中的可疑活动 八、攻击验证 使用公开的PoC验证蜜罐有效性: 成功执行后会返回: 九、扩展功能 MySQL快照 :可配置MySQL数据库快照 自定义检测规则 :根据攻击特征添加更多检测模式 告警集成 :将检测到的攻击通知安全团队 十、参考资源 webhoneypot-framework GitLab仓库 Drupal安全公告SA-CORE-2019-003 CVE-2019-6340技术分析