在这么多的网络攻击手段当中,不知大家对SQL注入攻击的印象是怎么样的呢?这个黑客对数据库安全攻击常用的手段的原理和过程时怎么样的呢?在这里,我们就来重点了解一下吧!
SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。
SQL注入是从正常的www 端口访问,而且表菌看起来跟一般的Web 页面访问没什么区别,所以目前市面的防火墙都不会对SQL 注入发出警报,如果管理员没查看IIS 日志的习惯,可能被入侵很长时间都不会发觉。但是, SQL注入的手法相当灵活,在注入的时候会碰到很多意外的情况。
SQL注入的原理
SQL注入攻击的示意图如下图所示,从图中的信息我们可以直观地了解到SQL注入的原理。
SQL注入威胁表现形式可以体现为以下几点:
·绕过认证,获得非法权限
·猜解后台数据库全部的信息
·注入可以借助数据库的存储过程进行提权等操作
SQL注入攻击的过程
SQL 注入攻击的过程主要包含以下几步:
·发现SQL 注入位置:
·判断后台数据库类型:
·确定XP CMDSHELL可执行情况:
·发现WEB虚拟目录:
·上传ASP木马:
·得到管理员权限。
1.发现SQL注入位置
SQL注入漏洞的判断一般来说,SQL注入一般存在于形如HTTP://xxx.xxx.xxxlabc.asp?id=XX 等带有参数的ASP动态网页中,有时一个动态网页中可能只有一个参数,有时可能有N 个参数,有时是整型参数,有时是字符串型参数,不能一概而论。总之只要是带有参数的动态阿页且此网页访问了数据库,那么就有可能存在SQL注入。如果ASP程序员没有安全意识,不进行必要的字符过滤,存在SQL注入的可能性就非常大。
2. 区分数据库服务器类型
一般来说,Access与SQL-SERVER是最常用的数据库服务器,尽管它们都支持T-SQL标准,但还有不同之处,而且不同的数据库有不同的攻击方法,必须要区别对待。
利用数据库服务器的系统变量进行区分SQL-SERVER有user,db_name()等系统变量,利用这些系统值不仅可以如断SQL-SERVER,南且还可以得到大量有用信息。
3. 确定XP一CMDSHELL可执行情况
若当前连接数据的账号具有SA权限,且master.dbo均一cmdshell扩展存储过程(调用此存储过程可以直接使用操作系统的shelD能够正确执行,则整个计算机可以通过某些方法完全控制。
4. 发现Web虚拟目录
只有找到Web虚拟目录,才能确定放置ASP木马的位置,进而得到USER权限。
5. 上传ASP CActiveServerPage) 木马
所谓ASP木马,就是一段有特殊功能的ASP代码,并放入Web虚拟目录的Scripts下,远程客户通过臣就可执行它,进而得到系统的USER 权限,实现对系统的初步控制。一般有两种方式上传ASP木马。第一种,通过sql注入手段,获取管理员权限,通过备份数据库的功能将asp木马写入服务器。第二种,进入后台通过asp程序的上传功能的漏洞,上传木马等等,当然正常情况下,这些可以上传文件的asp程序都是有权限限制的,大多也限制了asp文件的上传。
6. 得到系统的管理员权限
ASP木马只有USER 权限,要想获取对系统的完全控制,还要有系统的管理员权限。提升权限的方法有很多种:上传木马,修改开机自动运行的.ini文件;复制CMD.exe到scripts,人为制造UNICODE漏洞:下载SAM文件,破解并获取OS的所有用户名密码等等,视系统的具体情况而定,可以采取不同的方法。
SQL注入攻击的典型手段
1.判断应用程序是否存在注入漏洞
2.收集信息、并判断数据库类型
3.根据注入参数类型,重构SQL语句的原貌
4.猜解表名、字段名
5.获取账户信息、攻击web或为下一步攻击做准备
SQL注入的简单例子
1.SQL注入漏洞的几种判断方法
①http://www.heetian.com/showtail.asp?id=40'
②http://www.heetian.com/showtail.asp?id=40 and 1=1
③http://www.heetian.com/showtail.asp?id=40 and 1=2
如果执行①后,页面上提示报错或者提示数据库错误的话,说明是存在注入漏洞的。
如果执行②后,页面正常显示,而执行③后,页面报错,那么说明这个页面是存在注入漏洞的。
2.收集信息、判断数据库类型
从其返回的信息中可以判断下数据库的类型,更多可能可以知道部分数据库中的字段以及其他有用信息,为下一步攻击提供铺垫。
3.根据注入参数类型,重构SQL语句的原貌
①ID=40 这类注入的参数是数字型,那么SQL语句的原貌大致是:Select*from 表名 where 字段=40
②name=电影 这类注入的参数是字符型,SQL语句原貌大致是:Select*from 表名 where 字段=‘电影’
③搜索时没有过滤参数的,如keyword=关键字,SQL语句原貌大致是:Select*from 表名 where 字段 like ‘%关键字%’
4.猜解表名、字段名(直接将SQL语句添加到URL后)
①and exists(select*from 表名)
如果页面没有任何变化,说明附加条件成立,那么就是说明猜解的表名正确,反之,就是不存在这个表,接下来就继续猜解,知道正确
②and exists(select 字段 from 表名)
方法原理同上
③猜解字段内容(利用以上猜解出的表名和字段名 方法较古老且麻烦)
·猜解字段内容的长度
(select top 1 len(字段名)from 表名)>0 直至猜解到>n不成立的时候,得出字段的长度为:n+1。
·得到长度后,猜解具体的内容
(select top 1 asc(mid(username,1,1))from 表名)>0直到>m不成立时,就可以猜解出ASCII码值了。
常用注入工具
1.啊d注入工具
啊D注入工具是一种主要用于SQL的注入工具,由彭岸峰开发,使用了多线程技术,能在极短的时间内扫描注入点。使用者不需要经过太多的学习就可以很熟练的操作。并且该软件附带了一些其它的工具,可以为使用者提供极大的方便。[1]
2.明小子
明小子注入工具是跟啊D注入工具功能类似的注入工具,集合了常用上传漏洞的利用,webshell管理,目录查看等功能。
3.Pangolin
Pangolin(中文译名为穿山甲)一款帮助渗透测试人员进行Sql注入测试的安全工具,是深圳宇造诺赛科技有限公司(Nosec)旗下的网站安全测试产品之一。
Pangolin能够通过一系列非常简单的操作,达到最大化的攻击测试效果。它从检测注入开始到最后控制目标系统都给出了测试步骤。Pangolin是目前国内使用率最高的SQL注入测试的安全软件,可以说是网站安全测试人员的必备工具之一。
4.Sqlmap
sqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL的SQL注入漏洞,日前支持的数据库是MS-SQL,,MySQL,Oracle和POSTGRESQL。SQLMAP采用四种独特的SQL注入技术,分别是盲推理SQL注入,UNION查询SQL注入,堆查询和基于时间的SQL盲注入。其广泛的功能和选项包括数据库指纹,枚举,数据库提取,访问目标文件系统,并在获取完全操作权限时实行任意命令。sqlmap的功能强大到让你惊叹,常规注入工具不能绕过的话,终极使用sqlmap会有意想不到的效果。
防御SQL注入攻击的方法
针对SQL注入攻击,可以使用下面的方法进行防御:
①下载SQL通用防注入系统的程序,在需要防范注入的页苗头部用来防止攻击者进行手动注入测试。可是攻击者通过SQL注入分析器就可轻松跳过防注入系统并自动分析其注入点,然后只需几秒钟,管理员账号及密码就会被分析出来。
②对于注入分析器的防范,首先要知道SQL注入分析器是如何工作的。如果分析器并不是针对admin管理员账号,而是针对权限(如flag=l),那么无论管理员账号怎么变都无法逃过检测。
③既然无法逃过检测,那可以建立两个账号,一个是普通的管理员账号,一个是防注入的账号。利用一个权限最大的账号制造假象,吸引软件的检测,而这个账号里的内容是大于千字以上的中文字符,就会迫使软件对这个账号进行分析的时候进入全负荷状态甚至资源耗尽而死机。下面进行数据库的修改。
·对表结构进行修改。将防注入账号字段的数据类型进行修改,文本型改成最大字段255,密码的字段也进行相同的设置。
·对表进行修改。设置防注入账号在IDl,并输入大量中文字符。
·把真正的管理员密码放在ID2 后的任何一个位置。
完成三步对数据库的修改后,还需要限制管理员登录的页面文件中写入字符,如此即使攻击者破解密码也无法登录,而真正的密码则可以不受限制。
SQL注入攻击会导致的数据库刷库、拖库、撞库等安全风险,因此如何防御SQL注入攻击是非常重要的,而通过了解了SQL注入攻击的原理,攻击过程等方面的知识,啊精心大家也定义如何防范SQL注入攻击有一定的想法了。
上一篇:MSTP原理浅析
¥399.00
¥399.00
¥699.00
¥299.00