Drupal 7.31 SQL注射分析POC
此漏洞昨日爆发 ,我们有时间去看看今天的代码。
于Drupal于,跑sql声明使用PDO型号,这是一般能够避免大部分的注射,由于使用占位符的sql语法语句是限制。
但是,这并不意味着绝对安全,。
在Drupal的user模块中,找到user.module:
$account = db_query("SELECT * FROM {users} WHERE name = :name AND status = 1", array(':name' => $form_state['values']['name']))->fetchObject();
这里的:name就是占位符,它的内容来源于后面的$form_state。
跟进这个db_query函数。看看是怎样处理表单数据的。
折腾完,找到了expandArguments函数,这个函数的作用就是用前面db_query的參数进行终于查询语句的获取,正是因为这个函数对$key值的处理不当导致了漏洞的产生。
POC:
name[0%20;update users set name%3d'owned',pass%3d'$S$DkIkdKLIvRK0iVHm99X7B/M8QC17E1Tp/kMOd1Ie8V/PgWjtAZld' where uid %3d 1;%23%20%20]=admin&name[0]=111111&pass=shit2&test2=test&form_build_id=&form_id=user_login_block&op=Log+in
POC中的name数组就是传到函数中的Array。然后使用expandArguments函数对其进行处理。
在处理的过程中。以这样的方式得到新的数组:
$new_keys[$key . '_' . $i] = $value;
最后获取query语句的时候。会用到这个$new_keys。
$query = preg_replace('#' . $key . '\b#', implode(', ', array_keys($new_keys)), $query);
那么问题就来了。假设能够控制这个$key,那么我们就能够构造出语句进行运行(注意:PDO模型能够多条运行语句)。
分析POC,对函数进行分析调试:
能够看到,expandArguments函数就是把传递进来的name一层一层分离。最后将key带入终于的sql语句生成过程。上图最后的query就是终于要运行的SQL语句,问题是PDO能够多条运行,所以update语句就会运行成功了。
归结于一句话:Drupal使用:name进行SQL语句拼接,expandArgument函数将:name变为:name0中,使用:name_$key0的方式完毕,这个$key是可控的,所以导致漏洞产生。
运行结果例如以下:
把我之前的admin用户给覆盖了。
POC中的密码是使用了drupal内置的一个生成脚本进行生成的,即scripts中的password-hash.sh。
这个漏洞威力也非常大,由于你控制了对方的数据库。如此灵活的条件。势必会引发很多其它花样的攻击手段。
这个漏洞给我的感受就是:“没有绝对的安全”。
【转载请注明出处】
版权声明:本文博主原创文章,博客,未经同意不得转载。
Drupal 7.31 SQL注射分析POC的更多相关文章
- [CVE-2014-3704]Drupal 7.31 SQL注入漏洞分析与复现
记录下自己的复现思路 漏洞影响: Drupal 7.31 Drupal是一个开源内容管理平台,为数百万个网站和应用程序提供支持. 0x01漏洞复现 复现环境: 1) Apache2.4 2) Php ...
- DRUPAL-PSA-CORE-2014-005 && CVE-2014-3704 Drupal 7.31 SQL Injection Vulnerability /includes/database/database.inc Analysis
目录 . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 Use Drupal to build everything from perso ...
- Drupal 7.31 SQL注入漏洞利用具体解释及EXP
有意迟几天放出来这篇文章以及程序,只是看样子Drupal的这个洞没有引起多少重视,所以我也没有必要按着不发了,只是说实话这个洞威力挺大的.当然.这也是Drupal本身没有意料到的. 0x00 首 ...
- Drupal 7.31 SQL Injection Exp
#-*- coding:utf-8 -*- import urllib2,sys import hashlib # Calculate a non-truncated Drupal 7 compa ...
- Drupal 7.31版本爆严重SQL注入漏洞
今早有国外安全研究人员在Twitter上曝出了Drupal 7.31版本的最新SQL注入漏洞,并给出了利用测试的EXP代码. 在本地搭建Drupal7.31的环境,经过测试,发现该利用代码可成功执行并 ...
- Zabbix的前台SQL注射漏洞利用
今年8月份Map在wooyun上发了个Zabbix某前台SQL注射漏洞 ,11月份才公开. 漏洞详情大约是这样的: 在zabbix前端存在一个SQL注射漏洞,由于zabbix前台可以在zabbix的s ...
- Mybatis解析动态sql原理分析
前言 废话不多说,直接进入文章. 我们在使用mybatis的时候,会在xml中编写sql语句. 比如这段动态sql代码: <update id="update" parame ...
- Spark SQL 源代码分析之 In-Memory Columnar Storage 之 in-memory query
/** Spark SQL源代码分析系列文章*/ 前面讲到了Spark SQL In-Memory Columnar Storage的存储结构是基于列存储的. 那么基于以上存储结构,我们查询cache ...
- Red Gate系列之七 SQL Search 1.1.6.1 Edition SQL查询分析工具使用教程
原文:Red Gate系列之七 SQL Search 1.1.6.1 Edition SQL查询分析工具使用教程 Red Gate系列之七 SQL Search 1.1.6.1 Edition SQL ...
随机推荐
- FileUpload类别FileUpload1.FileName和FileUpload1.PostedFile.FileName差异
FileUpload1.FileName 用来获取client上使用 FileUpload 控件上载的文件的名称.此属性返回的文件名称不包括此文件在client上的路径. FileUpload1.Po ...
- Source Insight 光标变粗设置NotePad++光标设置
为了更好的查看文档和代码,避免半天都找不到光标的情况,故做此说明 Source Insight 光标变粗 菜单中 Options --->Preferences --->Typing -- ...
- Makefile学习(一)[第二版]
简单介绍 1)make:利用 make 工具能够自己主动完毕编译工作.这些工作包含:假设仅改动了某几个源文件,则仅仅又一次编译这几个源文件[make通过比对对应的.c文件与.o文件的时间];假设某个头 ...
- TRIZ系列-创新原理-22-变害为利原理
变害为利原理的详细表述例如以下:1)利用有害的因素(特别是环境中的)获得积极的效果: 有害无害不过相对的(时间,空间,人),将有害的因素通过一定的处理和转化,能够变有害为实用,比方废品回收, ...
- Java线程Dump分析工具--jstack(转)
jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项"-J-d64",Windows的jstack使 ...
- Windows10微软在线账户与本地账户的切换方法
Win10里面存在着两个账户,除了本地账户外,还有着一个微软在线账户,这个账户可以同步设置.日历等数据.不过对于大部分用户来说,本地账户已经足够我们使用了,那么这两个账户之间该如何切换呢? Win10 ...
- Android - 用Fragments实现动态UI - 和其他Fragments通信
为了重用Fragment UI组件,应该把每个都设计为它自有的模块组件并且有自己的布局和行为.一旦定义了这些可重用的Fragment,你可以把它们和一个activity关联然后和程序的逻辑一起实现上层 ...
- Android - 支持不同的设备
世界上有各种不一样形状和大小的Android设备.由于有各种不同类型的设备,你的app可能在各种设备上运行.为了在Android上尽可能的成功,你的app需要使配各种不同的设备.最重要的几点需要考虑的 ...
- 最少拦截系统(杭电1257)(DP)+(贪心)
最少拦截系统 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- 解决因特网和xshell考虑到问题
首先需要解释.我们学校的网络是免费的.无论是实验室或宿舍.因此,互联网是基于Mac地址分配IP的,所以我VirtualBox安装了centos之后,话.就须要将VirtualBox的mac地址改成和我 ...