欢迎来到天天文库
浏览记录
ID:34772546
大小:211.66 KB
页数:6页
时间:2019-03-10
《数据库sql注入分类及防护思路数据库sql注入分类及防护思路》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、数据库SQL注入分类及防护思路作者:安华金和思成一.背景数据库凭借其强大的数据存储能力和卓越的数据处理性能,在各行各业的信息化建设中发挥着关键的作用。随着数据库在各行业的大规模应用,数据泄露事件也频繁发生,这就使数据库安全问题也日益凸显,逐渐变成用户越来越担心的问题。虽然数据库厂商已经做了许多有效的措施来尽量解决数据库存在的安全问题,但至今为止数据库的安全漏洞仍然不断增加。下图为近5年数据库漏洞数量图。在数据库漏洞中最为常见的漏洞类型是SQL注入漏洞。安华金和数据库攻防实验室结合多年的实践结果总结出了数据库注入的分类分享给大家,以便大家对SQL
2、注入型漏洞有一个更加全面的了解。SQL注入漏洞不仅出现在WEB端,也出现在数据库的自定义或标准库的存储过程、函数、触发器中。数据库自身的SQL注入漏洞比WEB端的注入漏洞对数据库的威胁性更大。本文对SQL注入的分类是从数据库的角度来划分,不考虑WEB端的角度,这两者在分类上有着不同的角度。首先在解释不同的数据库SQL注入漏洞之前先简要说明一下数据库攻击者能够进行SQL注入的主要原理:SQL注入漏洞是用户在输入中混入了程序命令。最直接的例子就是-6-©2017安华金和www.dbsec.cn攻击者在正常的Web页面中把自己的SQL代码通过用户输入
3、传输到相应的应用程序中,从而执行一些非授权的SQL代码,以达到修改、窃取或者破坏数据库信息的目的。SQL注入攻击甚至可以帮组攻击者绕过用户认证机制,使其可以完全的操控远程服务器上的数据库。如果应用程序使用一些用户输入的数据来构造动态的SQL语句去访问数据库,将可能遭受到SQL注入攻击。同样的如果在代码中使用了存储过程,并且这些存储过程缺乏对用户输入的合理限制也很容易发生SQL注入。一.SQL注入分类1.1注入途径分类SQL注入漏洞按照注入的物理途径可以分成两大类:通过WEB端对数据库进行注入攻击和直接访问数据库进行注入攻击。直接访问数据库进行注
4、入攻击是以数据库用户的身份直接连接数据库进行SQL注入攻击。在这种攻击方式中,攻击者可以通过SQL注入来执行SQL语句从而提高用户权限或者越权执行。而那些在PL/SQL程序中在给用户授权的时候没有使用authidcurrent_user进行定义的存储过程、函数、触发器、程序块将更容易受到SQL注入攻击。通过WEB应用程序的用户对数据库进行连接并进行SQL注入攻击。在这种类型的SQL注入攻击中,攻击者多采用拼接语句的方法来改变查询的内容。获取该账号权限下的全部信息。-6-©2017安华金和www.dbsec.cn一些高级的攻击手段往往结合这两种方
5、式,先利用WEB应用程序上的SQL注入漏洞获取数据库和数据库所在服务器的基本信息。再利用数据库自身SQL注入漏洞对获取的数据库账号进行提权、越权等操作已达到对数据库进行破坏或者获取敏感信息的目的。1.1注入方式分类根据入侵方式,针对数据库的SQL注入攻击可以分为四种类型,分别是SQLManipulation、CodeInjection、FunctionCallInjection以及BufferOverflows。前两种SQL注入攻击较为常见,多出现在WEB端的SQL注入上,而后两种攻击类型是直接针对数据库自身的攻击方式,所以对数据库的安全威胁更
6、加致命。1.针对SQL操作的注入攻击(SQLmanipulation)是在所有的SQL注入攻击类型中最常见的一种类型。这种攻击的原理在于攻击者会试图在已经存在的SQL语句中通过集合运算符(SETOperator)比如UNION、INTERSECT或者MINUS来添加一些内容在WHERE子句中使其功能产生变化。当然还有可能会有其他的很多变化存在。最经典的SQLmanipulation攻击就存在于登录验证过程中。一个简单的Web应用程序就可以通过执行以下的SQL语句来检查用户认证是否有返回值:SELECT*FROMusersWHEREusernam
7、e='admin'andPASSWORD='guess'而攻击者就可以尝试修改SQL语句使其变为:SELECT*FROMusersWHEREusername='admin'andPASSWORD='xxxx'or'a'='a'通过以上对于WHERE子句的修改操作可以使用户登录的判定恒为真,这样攻击者便绕过了用户验证获得了进入后台的权利。集合运算符UNION也常常被用在SQL注入攻击中,其最主要的目的就是通过操作SQL语句来从另外一个表中返回某些行。一个WEB窗体可以执行以下SQL语句从一个存在的product表中返回一个需要的表单:SELECT
8、product_nameFROMall_productsWHEREproduct_namelike'%ddd%'而攻击者可以修改SQL语句使其变为:-
此文档下载收益归作者所有