您的当前位置:首页SQL注入攻击原理和攻击实例

SQL注入攻击原理和攻击实例

2022-10-11 来源:爱问旅游网


简说SQL注入攻击原理和攻击

摘要:

随着网络技术的高速发展,互联网已经渗透到人们生活的方方面面,人们对其依赖程度越来越高,截至2014年6月,我国网民规模达6.32亿,人均周上网时长达25.9小时。大多数的网站的用户注册数量不断增加,攻击网站盗取用户信息的网络犯罪不断增加。其中,SQL注入攻击为主的web脚本攻击作为进入内网的首选,成为黑客渗透测试中重要的技术之一。

关键字:

SQL注入, web应用程序 IIS 防范

一、 什么是SQL注入攻击

程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。攻击者可以提交一段精心构造的数据库查询代码,根据返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。

二、 可能导致SQL注入的隐患

1、 随着B/S(浏览器/服务器)模式应用开发的发展,从事动态网页以及脚本编程的程序员越来越多,经过一段时间的学习,程序员就能编写一个看起来完美的动态网站,

在功能上,很容易就能实现。但是因为程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码时意识不到或看不出漏洞的存在,给攻击者提供便利条件。

2、程序或系统对用户输入的参数不进行检查和过滤,没有对用户输入数据的合法性进行判断,或者程序中本身的变量处理不当,使应用程序存在安全隐患。

3、因为SQL注入是从正常的www端口访问,主要是针对web应用程序提交数据库查询请求的攻击,与正常的用户访问没有什么区别,所以能够轻易的绕过防火墙直接访问数据库,甚至能够获得数据库所在的服务器的访问权限。

三、 SQL注入的主要危害

1、未经授权状况下操作数据库中的数据,比如管理员账号和密码,用户账号和密码等信息;

2、恶意篡改网页内容,宣传虚假信息等;

3、私自添加系统帐号或者是数据库使用者帐号;

4、网页挂广告、木马病毒等;

5、上传webshell,进一步得到系统权限,控制电脑.获得肉鸡。

四、 SQL注入的特点

1、 广泛性:

SQL注入攻击可以跨越Windows、UNIX、Linux等各种操作系统进行攻击,其攻击目标非常广泛。而且当前web应用程序应用广泛,而存在的漏洞也都大体具有相似性。

2、 隐蔽性

SQL注入是从正常的www(80)端口访问,它是为HTTP即超文本传输协议开放的,是万维网传输信息使用最多的协议。通过该端口的数据都是被防火墙所许可的,因此防火墙不会对SQL注入的攻击进行拦截,使得攻击者可以顺利的通过防火墙。如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。

3、攻击时间短

可在短短几秒到几分钟内完成一次数据窃取、一次木马种植、完成对整个数据库或Web服务器的控制。

4、危害大

目前的电子商务等都是基于WEB的服务,交易量巨大,一旦遭到攻击后果不堪设想。另一方面,是关于个人信息的窃取,用之前的12306网站用户资料泄露来说引起了很大的社会反响。

五、 SQL注入攻击实现原理

SQL注入攻击是存在于常见的多连接的应用程序中的一种漏洞,攻击者通过在应用程序预先定义好的查询语句结尾加上额外的SQL语句元素,欺骗数据库服务器执行非授权的

任意查询。这类应用程序一般是Web应用程序,它允许用户输入查询条件,并将查询条件嵌入SQL 语句中,提交到数据库中执行。通过构造畸形SQL语句攻击者能够获取额外的信息数据。

当应用程序使用输入内容来构造动态SQL语句以访问数据库时,会发生SQL注入攻击。如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字 符串来传递,也会发生SQL注入。SQL注入可能导致攻击者使用应用程序登陆在数据库中执行命令。如果应用程序使用特权过高的帐户连接到数据库,这种问题会变得很严重。在某些表单中,用户输入的内容直接用来构造动态SQL命令,或者作为存储过程 的输入参数,这些表单特别容易受到SQL注入的攻击。而许多网站程序在编写时,没有对用户输入的合法性进行判断或者程序中本身的变量处理不当,使应用程序 存在安全隐患。这样,用户就可以提交一段数据库查询的代码,根据程序返回的结果,获得一些敏感的信息或者控制整个服务器,于是SQL注入就发生了。

六、 SQL注入攻击过程

进行SQL注入时一般会用到两种方式,第一是手工注入,第二是工具注入。我了解到的对于猜解管理员的密码方面一般用Pangolin或者NBSI ,找后台一般用明小子,啊D。其总体思路是:

(1)扫描目标网络信息(判断是否存在SQL注入漏洞); (2)判断后台数据库类型; (3)发现WEB虚拟目录

(4)上传ASP木马; (5)得到管理员权限。 详细介绍如下:

1、SQL注入一般存在于形如:http://xxx.xxx.xxx/abc.asp?p=YY的网站中。

2、在http://xxx.xxx.xxx/abc.asp?p=YY 后面追加“and 1=1”,并访问该网址即http://xxx.xxx.xxx/abc.asp?p=YY and 1=1 应该与访问原地址得到的结果相同。

3、在http://xxx.xxx.xxx/abc.asp?p=YY 后面追加“and 1=2”,并访问该网址即http://xxx.xxx.xxx/abc.asp?p=YY and 1=2应该与访问原地址得到的结果不同,并提示数据库错误。

(2,3同时满足则此网站必定存在SQL漏洞,可以进行sql注入攻击。)

4、访问http://xxx.xxx.xxx/abc.asp?p=YY and exists (select * from 网站数据库常用表段名)

网站数据库常用表段名:admin users administrator 等,如果进入的网页像步骤二一样,是正常网页,证明存在该表段名。找寻该SQL数据库使用的表名,进而寻找网站的管理员名、密码等信息。

5、访问http://xxx.xxx.xxx/abc.asp?p=YY and exists (select [网站数据库常用字段

名] from 第4步找到的可入侵表名)

网站数据库常用字段名:admin password username 等,如果进入的网页像步骤2一样,是正常网页,证明存在该字段名。找寻该SQL数据库使用的字段名,进而寻找网站的管理员名、密码等信息。

6、访问http://xxx.xxx.xxx/abc.asp?p=YY and exists (select *from第4步找到的可入侵表名where第5步找到的可入侵字段名like '_ ‘)

7、访问http://xxx.xxx.xxx/可入侵后门字段名,找到网站后门。

8、利用从数据库中查到的敏感数据进入网站后门。

七、 SQL注入实例演示

目前的Web应用中,绝大多数都会向用户提供一个接口,用来进行权限验证、搜索、

查询信息等功能。这很容易被利用进行SQL注入。

假设一个网站,用户必须输入产品ID才可以查看该产品的详细信息,用户仅仅能够查

看知道ID的产品。假设产品信息都存放在一个叫做products的表中。

格式

Select * from 表名where 字段=xx

所使用的语句

Select * from products where product_id

= ‘+ 用户输入的ID +’

正常情况下:

Select * from products where product_id

= ‘325’

异常情况

输入ID为‘ or ‘1’ = ‘1

Select * from products where product_id

= ‘ ‘ or ‘1’ = ‘1’

条件永远为真,相当于Select * from

Products

SQL注入实例

假设这么一个情景,一个网页的后台入口处需要验证用户名和密码,验证程序的

SQL语句是这样写:

Select * from admin where

user=‘TxtBox1.txt’ and pass=‘TxtBox2.txt’

如果用户填

写的用户名和密码都是: ‘abc’ or ‘1’=‘1’

那么将导致SQL语句是:

Select * from admin where user=‘abc’ or

‘1’=‘1’ and pass=‘abc’ or ‘1’=‘1’

这条语句是永真式,那么攻击者就成功登陆了后台。这就是最简单的SQL注入方

式。

八、 SQL注入攻击的防范

1、SQL注入攻击防范方法:

(1)程序员加强自身技术水平,使用固定开发的标准;

(2)在提交服务端处理之前对数据的合法性进行检查;

(3)封装客户端提交信息;

(4)替换或删除敏感字符、字符串;

(5)错误信息不返回给用户;

(6)数据敏感信息非常规加密,防止信息外泄。

(7)加强数据库检查(表结构是否出现异常、是否有多余数据等)、IIS日志检查(SQL注入攻击往往会大量访问某一个存在漏洞的网页,日志文件会急剧增加,通过查看日志文件的大小以及日志文件中的内容。);

(8)不用字串连接建立SQL查询,而使用SQL变量,因为变量不是可以执行的脚本;

(9)使用SQL注入防范系统。

2、SQL注入攻击防范系统:

防范系统对访问网页提交的关键字(包括Get、Post方式以及cookie)进行过滤,一旦发现违法的关键字的时候(如‘、;、and、exec、select、insert等)就提示非法访问,并将该IP地址存入服务器黑名单数据库,使得该IP不能再访问该网址。

SQL注入防范系统的流程图:

开始用户提交的数据服务器端检测服务器端的黑名单中是否存在该IP地址是禁止访问所请求的url地址将该IP存至服务器的黑名单否服务器端检测用户提交数据否检测是否合法是正常访问网站结束 3、 web应用部署前使用预防工具进行严格的安全性测试,如Pangolin Pangolin(中文译名为穿山甲)一款帮助渗透测试人员进行Sql注入测试的安全工具,是深圳宇造诺赛科技有限公司(Nosec)旗下的网站安全测试产品之一。

Pangolin能够通过一系列非常简单的操作,达到最大化的攻击测试效果。它从检测注

入开始到最后控制目标系统都给出了测试步骤。Pangolin是目前国内使用率最高的SQL注入测试的安全软件,可以说是网站安全测试人员的必备工具之一。

结论:

本文简单叙述了SQL注入攻击的方法、原理以及攻击进行了研究和总结,并给出了常用的一些SQL注入攻击防范方法。

因篇幅问题不能全部显示,请点此查看更多更全内容