数据库代码安全检测――SQL注入-毕业论文.doc

上传人:滴答 文档编号:1273481 上传时间:2019-01-26 格式:DOC 页数:51 大小:959.50KB
下载 相关 举报
数据库代码安全检测――SQL注入-毕业论文.doc_第1页
第1页 / 共51页
数据库代码安全检测――SQL注入-毕业论文.doc_第2页
第2页 / 共51页
数据库代码安全检测――SQL注入-毕业论文.doc_第3页
第3页 / 共51页
数据库代码安全检测――SQL注入-毕业论文.doc_第4页
第4页 / 共51页
数据库代码安全检测――SQL注入-毕业论文.doc_第5页
第5页 / 共51页
点击查看更多>>
资源描述

1、 学校编码: 分类号 密级 学号: UDC 学 位 论 文 数据库代码安全检测 SQL 注入 Database Code Secure Scan SQL Injection 指导教师姓名: 申请学位级别: 专 业 名 称: 论文提交日期: 论文答辩时间: 学位授予单位: 学位授予日期: 答辩委员会主席 : 评 阅 人: 年 月摘要 不少人都看过一些关于 SQL Injection 针对 数据库和 web 应用程序 攻击的文章, 大都是 因为变量过滤不足甚至没有过滤而构造畸形 SQL 语句注入 。 目前常见的漏洞大致分为以下几种 :包含 文件 漏洞 ,脚本命令执行漏洞 ,文件泄露漏洞 ,SQL

2、注入漏洞等几种 。论文从 SQL 注入的现状出发,研究了 SQL 注入技术在数据库 Oracle 和 SQL Server 注入方法和技术,并针对情况提出相应的建 议 ,同时也提到反“过滤”技术的总结 。通过 ASP 和 PHP 语言编写的 Web 应用程序,来学习 SQL 注入在网页方面的应用原理。 SQL 注入漏洞主要通过手工和工具检测,论文中有一章专门对检测工具 AppScan 工作原理和使用的介绍 。 最后通过前面对 SQL 注入的学习和研究,对一网站攻击,并记录下攻击的详细过程。 经过对理论的研究,对没有“过滤” Web 应用程序,能够实现 SQL 注入攻击。随着反“过滤”技术的新起

3、, SQL 注入 很有前景。同时可以用漏洞发掘技术,在数据库方面发掘出新的漏洞。 关键词 : SQL 注入 ; 数据库 ;Web 应用程序 Abstract Any people have read about SQL Injection for databases and web applications attacks on the article, mostly because of inadequate or no variable filter and filter into structural deformities SQL statement. At present commo

4、n loophole is broadly divided into the following types: document contains loopholes, loopholes in the implementation of the script orders, documents leaked loopholes, SQL injection of several loopholes. Papers from the status of SQL injection, on the SQL injection technology in Oracle and SQL Server

5、 database injection methods and techniques for the situation and make a recommendation, also referred to the anti-“filtering“ technology concluded. ASP and PHP language through the preparation of Web applications, to learn SQL injection in the application of principles of the page. SQL injection Flo

6、ws, mainly through hand tools and test papers in a chapter devoted to the detection tool AppScan principle and the use of introduction. Finally, in front of SQL injection of study and research on a Web site attacks, and a record of attacks on the detailed process. After the study of theory, there is

7、 no “filter“ Web applications, SQL injection attacks can be achieved. With the anti-“filtering“ from the new technology, SQL injection promising. At the same time can be used to explore technical flows in the database to explore a new flow. Key Words: SQL Injection ; Database ; Web Application 目录 第一

8、章 绪论 .1 1.1 引言 . 1 1.2 论文的研究背景 . 1 1.2.1 SQL Injection 的发展和现状 . 2 1.3 论文的研究内容 . 3 1.4 论文的组织结构 . 3 第二章 软件安全漏洞与检测 .4 2.1 软件安全漏洞 . 4 2.2 软件安全检测方法 . 7 2.2.1.手工检测 . 7 2.2.2.工具检测 . 8 2.3 本章小结 . 8 第三章 数据库安全 .9 3.1 ORACLE 数据库 . 9 3.1.1 Oracle 数据库架构 . 9 3.1.2 Oracle 数据库 SQL 注入 . 11 3.1.3 Oracle 数据库安全建议 . 17

9、3.2 SQL SERVER 数据库 . 18 3.2.1 SQL Server 数据库架构 . 19 3.2.2 SQL Server 数据库 SQL 注入 . 21 3.2.3 SQL Server 数据库安全建议 . 24 3.3 本章小结 . 26 第四章 WEB 应用程序安全 .26 4.1 ASP 应用程序 . 26 4.1.1.手工判断能否注入 . 26 4.1.2.判断数据库类型及注入方法 . 27 4.1.3.利用系统表注入 sqlserver 数据库 . 28 4.2 PHP 应用程序 . 29 4.2.1.PHP 注入原理 . 29 4.2.2. 查询字段 . 30 4.

10、2.3.导出文件 . 31 4.3 反过滤技术 . 31 4.4 本章小结 . 32 第五章 安全检测工具 APPSCAN .32 5.1 安全检测工具现状 . 33 5.2 APPSCAN 工作原理 . 33 5.3 APPSCAN 检测过程 . 34 5.4 APPSCAN 检测结果分析 . 36 5.5 本章小 结 . 38 第六章 SQL 注入过程实例 .38 6.1 SQL 注入准备 . 38 6.2 SQL 注入过程 . 39 6.3 本章小结 . 42 第七章 总结与展望 .42 7.1 总结 . 42 7.2 局限性与展望 . 43 致谢 .45 附录 .46 1 第一章 绪论

11、 安全没有绝对的,我们不用杀毒软件来安慰自己,我们系统现在很安全,我们要用技术来保护自己。为 了保护自己,我们更应该知道怎么攻击别人。 1 1.1 引言 随着 B/S 模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得 某些他想得知的数据,这就是所谓的 SQL Injection,即 SQL 注入 。 SQL 注入是从正常的 WWW 端口访问,而且表面看起来跟一般的 W

12、eb 页面访问没什么区别, 所以目前市面的防火墙都不会对 SQL 注入发出警报,如果管理员没查看 IIS 日志的习惯,可能被入侵很长时间都不会发觉。 但是, SQL 注入的手法相当灵活,在注入的时候会碰到很多意外的情况。能不能根据具体情况进行分析,构造巧妙的 SQL 语句,从而成功获取想要的数据 。 正因为越多越多的人都变成 Cracker,一夜之间上千个网站被不同程序的受到攻击也不是神话,我相信最好的保护自己的不受攻击的方式就是学会怎么攻击别人。本文从数据库本身存在 SQL 注入问题学会攻击和防守,同时也从用不同语言编写的 Web 程序出发,挖掘 SQL Injection 技巧和方法。 8

13、 1.2 论文的研究背景 黑客攻击事件数量的不断上升 ,蠕虫在 Intemet 上的泛滥 ,信息安全逐渐成为人们眼中的焦点。信息安全中的一个核心问题就是存在于计算机系统中的软件安全漏洞 ,恶意的攻击者可以利用这些安全漏洞提升权限 ,访问未授权资源 ,甚至破坏敏感数据。 2003 年 1 月 ,全球因特网遭受了过去 18 个月来最严重的攻击。我国互联网出现大面积网络流量异常、访问速度变慢的现象 ,情况严重的网络一度中断无法使用 ,不计其数的网民浏览网页和发送电子邮件出现困难 ,时间长达数小时。澳大利亚、美国、英 国、韩国、泰国、日本、马来西亚、菲律宾、印度等全球范围的互联网络都受到不同程度的攻击

14、。全球估计至少有 2.2 万个网络服务器遭到了病毒攻击 ,美国美洲银行称 1.3 万台自动取款机瘫痪此次攻击是利用 2002 年 7月份公布的微软2 SQ 场 erverZ000 的一个系统漏洞 ,对网络上的 SQL 数据库进行攻击。连接在网络上的被攻击的系统如同癌细胞那样不断蜕变 ,生成新的攻击向网络释放、扩散 ,从而逐步鲸吞、消耗网络资源 ,导致网络访问速度下降 ,甚至瘫痪。 2003 年 8 月 11 日 ,利用 MS03 26 漏洞的“冲击波”蠕虫病毒开始在全世界范围 内爆发 ,造成巨大破坏。在国内 ,两天时间里就使数千个局域网陷于瘫痪状态 ,受害者中既包括几十人的小规模企业 ,也有电

15、信、政府等大型事业单位。而且个人用户 ,尤其是使用宽带网的用户 ,也遭到了此病毒的攻击。在感染此病毒后 ,会造成系统反复重启、不能收发邮件、无法浏览网页等影响 ,导致无法正常工作 ,给企业和个人都造成了巨大的损失。根据 DHS 和 NISTll 对近十年软件安全漏洞进行的数据统计 ,2006 年漏洞数已经超过了 8000 个 ,比 2005 年增长了约百分之六十 ,几乎是 2004 年的两倍。 软件安全漏洞造成的重大损失以及还在不断增 长的漏洞数量使人们已经开始深刻认识到软件安全的重要性。从上世纪 90 年代 ,信息安全学者 ,计算机安全研究人员就开始了对计算机安全漏洞的研究 ,最为人熟知的就

16、是缓冲区溢出攻击漏洞。但研究的范围主要包括如何监测和防御恶意攻击者利用安全漏洞进行攻击 ,由此开发出来入侵检测系统 (IDS)和入侵防御系统(IPS)等等商业产品 ,以及针对缓冲区溢出的堆和栈 ,不可执行堆栈等等技术。 6 1.2.1 SQL Injection 的发展和现状 从 2008 年 1 月发现 ,这 5 个月里, 有关部门 监控下,发现此次爆发并不是第一起 SQL注入攻击 。在过去的 4 个月中,早已有 3 次大规模攻击: 1 月初,成千上万的网站,包括CA.com, 受到了 SQL 注入攻击 (1,0001,000 页 /天 );3 月中旬,包括 TrendMicro.jp 在内

17、的网站受到了 SQL 注入攻击 (1,0001,000 页 /天 );4 月中旬,包括英国政府,和联合国的网站都受到了 SQL 注入攻击 (1,0001,000 页 /天 )。 13 以下是此类攻击的流程 1. 黑客运用搜索引擎寻找网页上的漏洞,并运用自动化工具攻击网络服务器。 2. 一个 字符串附加到在后台运行的 SQL服务器中 所有的文本或可变长字符串列中。 3.这个脚本与黑客所控制服务器连接。该服务器含有一些常用软件的利用代码,如 Microsoft MS06-014, 第三方软件漏洞,( Real Player, Global Link Lianzong, PPStorm Baofen

18、g, Thunder Xunlei, Baidu Bar)。有的时候还有一些 0day 漏洞,比如 10 天前公布的 GlobalLink Lianzong 0day。 3 4.当终端用户试图用 IE 浏览正常的网站时,由于这些网页都将从 SQL 服务器获取数据,这些数据 同时包含了恶意脚本 。而这些脚本会自动连接到黑客的网站。 5.如果终端用户没有打补丁,或尚未安装 Microsoft 或第三方软件的最新更新,那么他们的电脑就会被感染。 IDG 新闻服务 2008 年 5 月 19 日报道,中国大陆和中国台湾地区数以千计的网站正在遭受大规模的 SQL 注入攻击。该攻击者并没有针对某个特定的漏

19、洞,而是通过 SQL 注入引擎自动搜索使用 SQL 数据库的网站并进行攻击。他首先在目标网站上植入恶意代码,然后再通过浏览器感染浏览该网站的用户。关于这些恶意代码的细节以及相应的浏览器漏洞等相关信息还 有待进一步确认。 大规模的 SQL 注入攻击已经成为网络安全的一大隐患。早在今年一月份,就曾经有好几万的 PC 用户遭受到了这种攻击。不过当时主要针对的是微软的 SQL Server 数据库。 注 : 事实上,在中国每天都有被攻击的网站,他们被感染上恶意代码,使其连向黑客控制的网站。根据我们来自中国 Blackhat 组织的消息,这些攻击者并没有暴露自己的身份。这种攻击的目的是攻击者想要建立一个

20、超大的肉鸡网络,然后将其卖给其他人,从中谋取利益。 SQL 攻击,越来越常见,我们为了保护自己就应该行动起来,学会怎么攻击。只有在原理 掌握了,才能更好的保护自己。 1.3 论文的研究内容 1.4 论文的组织结构 第一章 主要对安全背景介绍,并简单介绍当前 SQL 注入现状,同时对论文的的研究内容和组织结构做了说明。 第二章 主要对 安全漏洞 进行 多方面 分类,并 介绍 通过 使用 手工 方法 和工具 方法检测 漏洞 。 第三章 主要对 Oracle 和 SQLServe 数据库,分别从数据库架构、数据库 SQL 注入攻击、数据库安全建议。 第四章 主要针对 ASP 和 PHP 语言开发的程

21、序, SQL 注入 详细分析和说明,并对反过滤技术进行总结。 第五章 主要对安全检测工具现状作了简要 说明,并对 AppScan 检测工具的工作原理、工作流程、操作步骤等进行详图解说明。 4 第六章 主要演示了通过 AppScan 工具检测出漏洞,然后 演示 对网站进行 SQL 注入的全过程。 第七章 总结与展望 第二章 软件安全漏洞与检测 人们已经开始认识到软件安全的重要性 ,并且已有一些很好的实践。软件开发 者必须关注由于设计不当和实现软件时的不合理而引发的安全漏洞本身 ,综合利用各种手段和技术对软件进行漏洞检测 ,从问题的根源来提高软件安全 ,而不是等投入使用后 ,发现了漏洞再来修补。

22、2.1 软件安全 漏洞 网络安全的核心目标是保障 业务系统的可持续性和数据的安全性,而这两点的主要威胁来自于蠕虫的暴发、黑客的攻击、拒绝服务攻击、木马。蠕虫、黑客攻击问题都和漏洞紧密联系在一起,一旦有重大安全漏洞出现,整个互联网就会面临一次重大挑战。虽然传统木马和安全漏洞关系不大,但最近很多木马都巧妙的利用了 IE 的漏洞,让你在浏览网页时不知不觉的就中了招。 安全漏洞的定义已经有很多了,我这里给出一个通俗的说法就是:能够被利用来干 原本以为 不能干的事,并且和安全相关的缺陷。这个缺陷可以是设计上的问题、程序代码实现上的问题。 对一个特定程序的安全漏洞可以从多 方面进行分类。 4 1. 从用户

23、群体分类: 大众类软件的漏洞。如 Windows 的漏洞、 IE 的漏洞等等。 专用软件的漏洞。如 Oracle 漏洞、 Apache 漏洞等等。 2.从数据角度看分为: 能读按理不能读的数据,包括内存中的数据、文件中的数据、用户输入的数据、数据库中的数据、网络上传输的数据等等。 能把指定的内容写入指定的地方(这个地方包括文件、内存、数据库等) 输入的数据能被执行(包括按机器码执行、按 Shell代码执行、按 SQL 代码执行等等) 5 3.从作用范围角度看分为: 远程漏洞, 攻击者可以利用并直接通过网络发起攻击的漏洞。这类漏洞危害极大,攻击者能随心所欲的通过此漏洞操作他人的电脑。并且此类漏洞

24、很容易导致蠕虫攻击,在Windows。 本地漏洞,攻击者必须在本机拥有访问权限前提下才能发起攻击的漏洞。比较典型的是本地权限提升漏洞,这类漏洞在 Unix 系统中广泛存在,能让普通用户获得最高管理员权 4.从触发条件上看可以分为: 主动触发漏洞,攻击者可以主动利用该漏洞进行攻击,如直接访问他人计算机。 被动触发漏洞,必须要计算机的操作人员配合才能进行攻击利用的漏洞。比如攻击者给 管 理员发一封邮件,带了一个特殊的 jpg 图片文件,如果管理员打开图片文件就会导致看图 软件的某个漏洞被触发,从而系统被攻击,但如果管理员不看这个图片则不会受攻击。 5.从操作角度看可分为: 文件操作类型,主要为操作

25、的目标文件路径可被控制(如通过参数、配置文件、环境变 量、符号链接灯),这样就可能导致下面两个问题: 写入内容可被控制,从而可伪造文件内容,导致权限提升或直接修改重要数据(如修改 存贷数据),这类漏洞有很多,如历史上 Oracle TNS LOG 文件可指定漏洞,可导 致任何 人可控制运行 Oracle 服务的计算机; 内容信息可被输出,包含内容被打印到屏幕、记录到可读的日志文件、产生可被用户读 的 core 文件等等,这类漏洞在历史上 Unix 系统中的 crontab 子系统中出现过很多次,普 通用户能读受保护的 shadow 文件; 内存覆盖,主要为内存单元可指定,写入内容可指定,这样就

26、能执行攻击者想执行的代 码(缓冲区溢出、格式串漏洞、 PTrace 漏洞、历史上 Windows2000 的硬件调试寄存器用 户可写漏洞)或直接修改内存中的机密数据。 逻辑错误,这类漏洞广泛存 在,但很少有范式,所以难以查觉,可细分为: 条件竞争漏洞(通常为设计问题,典型的有 Ptrace 漏洞、广泛存在的文件操作时序竞争) 策略错误,通常为设计问题,如历史上 FreeBSD 的 Smart IO 漏洞。 算法问题(通常为设计问题或代码实现问题),如历史上微软的 Windows 95/98 的共享 口令可轻易获取漏洞。 设计的不完善,如 TCP/IP 协议中的 3 步握手导致了 SYN FLOOD 拒绝服务攻击。 实现中的错误(通常为设计没有问题,但编码人员出现了逻辑错误,如历史 上博彩系统

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。