SQL注入攻击的原理分析报告与防范.docx
- 文档编号:28024837
- 上传时间:2023-07-07
- 格式:DOCX
- 页数:13
- 大小:579.44KB
SQL注入攻击的原理分析报告与防范.docx
《SQL注入攻击的原理分析报告与防范.docx》由会员分享,可在线阅读,更多相关《SQL注入攻击的原理分析报告与防范.docx(13页珍藏版)》请在冰豆网上搜索。
SQL注入攻击的原理分析报告与防范
电力学院
计算机安全技术大作业
题目:
SQL注入攻击的原理与防
学号:
2009学生:
院系:
计算机与信息工程学院
专业:
软件工程
班级:
2009XXX
2012年6月 2 日
SQL注入攻击的原理及防
引言:
随着网络技术的迅猛发展,计算机网络已经成为人们工作生活中的重要组成部分,在各个领域迅速普及,整个社会对其的依赖程度越来越大。
因此网络安全的工作刻不容缓。
本文对SQL注入技术注入攻击的方法、原理以及攻击实施过程进行了阐述和总结,并给出了常见的一些SQL注入攻击防方法。
摘要:
随着网路安全意识的增强,单一方法的渗透测试已经不能满足远程渗透的需要。
更为有效的远程渗透测试采用的是渐进式的综合攻击技术,突破网提取目标主机的权限,以最终获取资料。
因此SQL注入攻击为主的web脚本攻击作为进入网的首选,成为黑客渗透测试中重要的技术之一。
关键字:
SQL注入,web应用程序IIS防
一、什么是SQL注入攻击
SQL注入(StructuredQueryLanguageInjection)技术在国外最早出现在1999年,我国在2002年后开始大量出现,目前没有对SQL注入技术的标准定义,微软中国技术中心从2个方面进行了描述:
(1)脚本注入式的攻击
(2)恶意用户输入用来影响被执行的SQL脚本
我理解的SQL注入,就是攻击者通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到让后台数据库执行恶意的SQL命令的目的,并根据程序返回的结果,获得某些攻击者想得知的数据。
二、可能导致SQL注入的隐患
1、随着B/S(浏览器/服务器)模式应用开发的发展,从事动态网页以及脚本编程的程序员越来越多,在一段不长的时间里,新手往往就已经能够编出看来比较完美的动态,在功能上,很容易就能实现。
但是因为程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候存在漏洞,给攻击者提供便利条件。
2、系统对用户输入的参数不进行检查和过滤,没有对用户输入数据的合法性进行判断,或者程序中本身的变量处理不当,使应用程序存在安全隐患。
3、因为SQL注入主要是针对web应用程序提交数据库查询请求的攻击,与正常的用户访问没有什么区别,所以能够轻易的绕过防火墙直接访问数据库,甚至能够获得数据库所在的服务器的访问权限。
三、SQL注入的主要危害
1、XX状况下操作数据库中的数据,比如管理员密码,用户密码等信息;
2、恶意篡改网页容,宣传虚假信息等;
3、私自添加系统或者是数据库使用者;
4、网页挂广告、木马病毒等;
5、上传webshell,进一步得到系统权限,控制电脑.获得肉鸡。
6、……
四、SQL注入实现原理
SQL注入攻击技术就其本质而言,它利用的工具是SQL的语法,针对的是应用程序开发者编程中的漏洞,当攻击者能操作数据,向应用程序中插入一些SQL语句时,SQL注入攻击就发生了。
攻击者直接将代码插入与SQL命令串联并执行的用户输入变量中,间接的将恶意代码注入要在表中存储或作为元数据存储的字符串,在存储的字符串随后串连到一个动态SQL命令中时,执行该恶意代码。
SQL注入攻击是存在于常见的多连接的应用程序中的一种漏洞,攻击者通过在应用程序预先定义好的查询语句结尾加上额外的SQL语句元素,欺骗数据库服务器执行非授权的任意查询。
这类应用程序一般是Web应用程序,它允许用户输入查询条件,并将查询条件嵌入SQL语句中,提交到数据库中执行。
通过构造畸形SQL语句攻击者能够获取额外的信息数据。
五、SQL注入的特点
1、广泛性:
SQL注入攻击可以跨越Windows、UNIX、Linux等各种操作系统进行攻击,其攻击目标非常广泛。
而且当前web应用程序应用广泛,而存在的漏洞也都大体具有相似性。
2、隐蔽性
SQL注入是从正常的www(80)端口访问,它是为HTTP即超文本传输协议开放的,是万维网传输信息使用最多的协议。
通过该端口的数据都是被防火墙所许可的,因此防火墙不会对SQL注入的攻击进行拦截,使得攻击者可以顺利的通过防火墙。
如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。
3、攻击时间短
可在短短几秒到几分钟完成一次数据窃取、一次木马种植、完成对整个数据库或Web服务器的控制。
4、危害大
目前的电子商务等都是基于WEB的服务,交易量巨大,一旦遭到攻击后果不堪设想。
另一方面,是关于个人信息的窃取,用之前的CSDN用户资料泄露来说引起了很大的社会反响。
六、SQL注入攻击过程
进行SQL注入时一般会用到两种方式,第一是手工注入,第二是工具注入。
我了解到的对于猜解管理员的密码方面一般用Pangolin或者NBSI,找后台一般用明小子,啊D。
其总体思路是:
(1)扫描目标网络信息(判断是否存在SQL注入漏洞);
(2)判断后台数据库类型;
(3)发现WEB虚拟目录
(4)上传ASP木马;
(5)得到管理员权限。
详细介绍如下:
1、SQL注入一般存在于形如:
xxx.xxx.xxx/abc.asp?
p=YY的中。
2、在xxx.xxx.xxx/abc.asp?
p=YY后面追加“and1=1”,并访问该网址即xxx.xxx.xxx/abc.asp?
p=YYand1=1应该与访问原地址得到的结果相同。
3、在xxx.xxx.xxx/abc.asp?
p=YY后面追加“and1=2”,并访问该网址即xxx.xxx.xxx/abc.asp?
p=YYand1=2应该与访问原地址得到的结果不同,并提示数据库错误。
(2,3同时满足则此必定存在SQL漏洞,可以进行sql注入攻击。
)
4、访问xxx.xxx.xxx/abc.asp?
p=YYandexists(select*from数据库常用表段名)
数据库常用表段名:
adminusersadministrator等,如果进入的网页像步骤二一样,是正常网页,证明存在该表段名。
找寻该SQL数据库使用的表名,进而寻找的管理员名、密码等信息。
5、访问xxx.xxx.xxx/abc.asp?
p=YYandexists(select[数据库常用字段名]from第4步找到的可入侵表名)
数据库常用字段名:
adminpasswordusername等,如果进入的网页像步骤2一样,是正常网页,证明存在该字段名。
找寻该SQL数据库使用的字段名,进而寻找的管理员名、密码等信息。
6、访问xxx.xxx.xxx/abc.asp?
p=YYandexists(select*from第4步找到的可入侵表名where第5步找到的可入侵字段名like'_‘)
7、访问xxx.xxx.xxx/可入侵后门字段名,找到后门。
8、利用从数据库中查到的敏感数据进入后门。
七、SQL注入实例演示
利用Pangolin工具实现针对MSSQL环境的SQL注入攻击。
1.在本地主机上通过InternetExplorer等Web浏览器访问目标Web服务器(即WindowsServerA,IP地址为192.168.1.103)的主页。
点击其中的某一新闻后即访问显示出具体的某一新闻容。
比如192.168.1.103/news.aspx?
id=1
2.在访问的网页URL地址后加上一个单引号(')继续访问,
即192.168.1.103/news.aspx?
id=1',如下图所示:
从图中可以看到数据库连接出错消息中可以看到如下错误消息“字符串''之前有未闭合的引号。
”,也就是单引号没有闭合的意思。
3.继续手动测试SQL注入是否存在:
访问如下网页URL地址:
192.168.1.103/news.aspx?
id=1and1=1
以及
192.168.1.103/news.aspx?
id=1and1=2
其中访问第一个网页地址的情况与正常情况相同,而访问第二个网页地址则一片空白,即新闻文档不存在的意思。
4.进入实验工具目录,双击运行Pangolin程序(pangolin.exe),在注入地址“URL”输入框中输入192.168.1.103/news.aspx?
id=1
然后点击工具栏中的开始按钮开始自动检测SQL注入漏洞情况。
从检测结果中可以看到,该的SQL注入类型为“Integer(字符型)”,后台数据库类型为“MSSQLwithError”。
5.在主界面中的“Information”选项卡中,点击“SelectAll”按钮选择所有信息类型,包括下面所列举的“Version”、“DbName”、“ServerName”等,然后点击“Go”按钮开始探测目标服务器的基本信息。
6.在主界面中选择“Data”选项卡,点击左下方的“Tables”按钮来枚举目标当前数据库中存在的所有数据表的名称。
7.点击选择数据库中的“admin”表,然后点击下方的“Columns”按钮来枚举该数据表中所有的数据列名。
展开“admin”表前面的“+”号可以查看详细的列名信息。
8.勾选感兴趣的数据表以及其中的数据列,如admin表中的id、username以及password列,然后点击右侧的“Datas”按钮则可以枚举该表中的所有数据项容。
在这里,我们还可以通过自定义查询条件来自定义查询所感兴趣的数据容,默认为“1=1”表示所有的数据容。
9.在主界面中选择“Command”选项卡,然后在“Command”输入框中输入要在目标服务器上执行的系统命令,比如“ipconfig”等;在“Type”下拉框中选择执行命令的技术方法,默认为“xp_cmdshell”,其他可选的主要方法有“sp_oa***”等。
最后点击右侧的“Execute”按钮执行命令,可在下方的黑色文本框中看到执行结果。
10.选择“type”为“sp_oa***”,尝试执行添加用户的命令操作。
11.在主界面中选择“DirTree”选项卡,然后点击“Drivers”按钮列举目标服务器上的所有驱动器。
双击“C:
\”节点可以进一步展开获得C:
\根目录下的所有子目录和文件,依次可以获得磁盘上的目录结构。
12.双击某一文件,可以在右侧的文本框中显示文件的详细容。
13.仔细查看“C:
\inetpub\wwwroot”目录中的文件,获得连接后台MSSQL数据库的账号和密码。
八、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注入防系统的流程图:
3、web应用部署前使用预防工具进行严格的安全性测试,如Pangolin。
Pangolin(中文译名为穿山甲)一款帮助渗透测试人员进行Sql注入测试的安全工具,是宇造诺赛科技(Nosec)旗下的安全测试产品之一。
Pangolin能够通过一系列非常简单的操作,达到最大化的攻击测试效果。
它从检测注入开始到最后控制目标系统都给出了测试步骤。
Pangolin是目前国使用率最高的SQL注入测试的安全软件,可以说是安全测试人员的必备工具之一。
结论:
本文结合自己的认识和网络信息的查询,对SQL注入攻击的方法、原理以及攻击实施过程进行了研究和总结,并给出了常用的一些SQL注入攻击防方法。
通过本课题的研究自己对SQL注入有了新层次的认识,希望在今后的学习中能够结合实际运用起来,加深对SQL注入技术的研究。
参考文献:
《SQL注入攻击与防御》——(美)JustinClarke等著黄晓磊,化译
《黑客Web脚本攻击与防御技术核心剖析》——郝永清著
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 注入 攻击 原理 分析 报告 防范