【缺陷周话】第21期:数据库访问控制

栏目: 数据库 · 发布时间: 7年前

内容简介:数据库访问控制是指程序未进行恰当的访问控制,执行了一个包含用户控制主键的SQL语句,由于服务器端对客户提出的数据操作请求过分信任,忽略了对该用户操作权限的判定,导致修改相关参数就可以拥有了其他账户的增、删、查、改功能。如果在一个应用中,用户能够访问他本身无权访问的功能或者资源,就说明该应用存在访问控制缺陷,也就存在越权漏洞。本篇文章以JAVA语言源代码为例,分析数据库访问控制漏洞产生的原因以及修复方法。详见CWE ID566: Authorization Bypass Through User-Contro

【缺陷周话】第21期:数据库访问控制

1、数据库访问控制

数据库访问控制是指程序未进行恰当的访问控制,执行了一个包含用户控制主键的 SQL 语句,由于服务器端对客户提出的数据操作请求过分信任,忽略了对该用户操作权限的判定,导致修改相关参数就可以拥有了其他账户的增、删、查、改功能。如果在一个应用中,用户能够访问他本身无权访问的功能或者资源,就说明该应用存在访问控制缺陷,也就存在越权漏洞。本篇文章以 JAVA 语言源代码为例,分析数据库访问控制漏洞产生的原因以及修复方法。详见CWE ID566: Authorization Bypass Through User-Controlled SQL Primary Key (http://cwe.mitre.org/data/definitions/566.html)。

2、 数据库访问控制的危害

数据库访问控制是利用用户引入的参数生成由用户控制主键的 SQL 语句,令攻击者可以访问到同级别用户的资源或者访问更高级别用户的资源,会导致任意用户敏感信息泄露、用户信息被恶意修改或删除。数据库访问控制类似于数据库越权。例如某一页面服务器端响应中返回登录名、登录密码、手机号、身份证等敏感信息,如果存在数据库访问控制,通过对用户 ID 的遍历,就可以查看所有用户的敏感信息,这也是一种变相的脱库,而且很难被防火墙发现,因为这和正常的访问请求没有什么区别,也不会包含特殊字符,具有十足的隐秘性。

3、示例代码

本章节中使用的示例代码来源于 Samate Juliet Test Suite for Java v1.3  (https://samate.nist.gov/SARD/testsuite.php), 源文件名:CWE566_Authorization_Bypass_Through_SQL_Primary__Servlet_01.java。

3.1缺陷代码

【缺陷周话】第21期:数据库访问控制

上述示例代码31-56行,程序获取用户输入的参数 id,并将传入参数转成 int 类型,然后创建数据库查询,查询 uid 为传入参数 id 的清单数据。显然,程序中未对传入参数做校验及过滤,用户可随意获得任何用户的清单数据。

使用360代码卫士对上述示例代码进行检测,可以检出“数据库访问控制”缺陷,显示等级为中。从跟踪路径中可以分析出数据的污染源以及数据流向,在代码行第53行报出缺陷,如图1所示:

【缺陷周话】第21期:数据库访问控制

图1:数据库访问控制的检测示例

3.2 修复代码

【缺陷周话】第21期:数据库访问控制

在上述修复代码中,在第34行从  session 中直接获取到 id 的值构造查询语句,获得当前用户的清单数据,避免用户操控SQL语句的主键值。

使用360代码卫士对修复后的代码进行检测,可以看到已不存在“数据库访问控制”缺陷。

【缺陷周话】第21期:数据库访问控制

图2:修复后检测结果

4 、如何避免数据库访问控制

要避免数据库访问控制,需要注意以下几点:

(1)完善用户权限体系。要知道哪些数据对应哪些用户,哪些数据不应该由哪些用户操作。

(2)服务端对请求的数据和当前用户身份做校验,例如使用权限参数判断用户是否拥有执行操作的权限。

(3)对于可控参数进行严格的检查与过滤。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据挖掘十大算法

数据挖掘十大算法

(美)吴信东(Xindong Wu)、(美),库玛尔 ,(Vipin Kumar) / 李文波、吴素研 / 清华大学出版社 / 2013-5 / 39.00元

《世界著名计算机教材精选:数据挖掘十大算法》详细介绍了在实际中用途最广、影响最大的十种数据挖掘算法,这十种算法是数据挖掘领域的顶级专家进行投票筛选的,覆盖了分类、聚类、统计学习、关联分析和链接分析等重要的数据挖掘研究和发展主题。《世界著名计算机教材精选:数据挖掘十大算法》对每一种算法都进行了多个角度的深入剖析,包括算法历史、算法过程、算法特性、软件实现、前沿发展等,此外,在每章最后还给出了丰富的习......一起来看看 《数据挖掘十大算法》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具