您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 自动注入攻击工具的研发
西南科技大学本科生毕业论文1第1章绪论1.1项目背景及意义SQL注入攻击是一种非常有效且破坏性很大的渗透手段。它是针对于数据库的一种攻击手段,通过利用数据库的外部接口把恶意代码插入到SQL语言中使数据库服务器解析并执行,以达到入侵目标数据库及至整个操作系统的目的。了解和熟悉SQL注入原理,掌握防御SQL注入攻击的原理和技巧就变得至关重要。SQL注入攻击的普遍性、难捉摸性、简易性等特点让其成为了网络中黑客主流攻击方式之一。因为SQL注入是从正常的Web平台入口进行请求访问,和请求正常的Web页面没有什么区别,所以目前市面上除了专门的Web防御防火墙外,大部分防火墙都不会对这类SQL注入攻击进行监控和发出警报,若网站管理员没有经常查看IIS日志的经验和习惯,有可能被入侵很长一段时间后都没有任何发觉。由于现在广泛流行的恶意攻击工具,SQL注入在近年来呈现一种增长的趋势。据OWASP(开放式web应用程序安全项目)每隔三年更新一次的“十大安全隐患列表”,在近几次公布的总结Web应用程序最可能、最常见、最危险的十大安全隐患中,SQL注入攻击一直排列靠前。OWASPTOP102010中列出的最严重的Web应用程序的漏洞中,注入(Injection)风险位居第一。Web应用的发展越来越成熟,应用的各项技术发展得也越来越复杂。它们涵盖了从外部动态展示INTERNET和内部工作网络到以WEB协议方式传递数据的企业工作应用(如文档管理系统等)。这些系统的实用性及其数据存储、处理内容的机密性和敏感性对于企业的主要业务而言都非常重要。当前市面的注入攻击检测工具只能对单个网页或者单个URL进行检测和注入,无法对整个网站的漏洞进行检测。而漏洞扫描工具可以对整个网站漏洞进行扫描却无法进行进一步的注入攻击检测。很大程度上不能满足开发人员和管理人员对网站SQL注入漏洞全面了解的要求。本研究的最终目的是分析SQL注入攻击的类型、关键技术和原理,并研究SQL注入在实际应用中的操作方法,在此基础之上,设计并开发了一套自动注入工具。因为恶意攻击者不仅可以通过SQL注入攻击对Web应用数据进行盗取、篡改信息,还可以进一步对于服务器进行恶意操作,并且植入木马或者后门程序,甚至控制整个服西南科技大学本科生毕业论文2务器,这就严重影响了应用的正常运行以及对于应用的信息安全带来严重后果。所以,对于功能齐备的SQL注入攻击扫描与检测工具的研究与开发具,具有非常重要的现实意义。应用程序开发者或网站管理人员使用此工具对自已的网站进行安全检测,以达到减小SQL注入的可能性。同时,在渗透测试工作中,对于安全测试也具有很大的帮助。1.2研究内容1.2.1自动注入攻击工具的研发本研究首先理解Web应用的工作原理,首先简要概述Web应用系统通用的架构模式,理解了构建模式后能更清晰的了解SQL注入的产生过程,然后从Web应用的代码层来分析介绍是什么引起了通用的SQL注入,然后研究介绍SQL注入漏洞的利用过程。从框架到利用逐步分析SQL注入的过程和利用,然后根据分析的内容构建SQL注入的自动化检测及注入攻击利用框架。1.2.2SQL注入原理SQL注入的原理,是将SQL代码插入或者非正常时添加到应用的参数当中,并且进行了一定的拼接传入到了后台的数据库服务器,最终使服务器执行了该拼接的恶意SQL命令。所有的是通过SQL语句执行的应用过程均存在被攻击的威胁,因为SQL的多样多变性语言结构特征使得攻击者可以拼接构建丰富的代码编码手段等来拼接语句来欺骗服务器。SQL注入攻击的主要方式就是直接将命令插入到应用服务的表单参数中传入到后台数据库查询字符串中,这些参数就会被带入到后台数据库服务器进行执行解析,攻击者便可以构造恶意命令来达到攻击目的。1.2.3SQL注入检测技术检测发现SQL注入漏洞有一条简单的规则:SQL注入是通过发送特殊数据来触发异常操作。该规则包括如下含义:检测Web应用上所有的输入数据;集合SQL语法,归类所有可能触发异常的数据类型;检测数据库服务器应用响应中的异常。首先需要清楚Web浏览器向Web服务器发送请求的过程。不同的服务应用会有不同西南科技大学本科生毕业论文3的体现方式,它们均处在基于Web的环境中,所以基本原理是相同的。识别和检测应用接受的所有数据,攻击一般都会修改这些数据,所以需要识别并分析服务器对它们的响应。有时响应中会直接包含来自数据库的SQL错误,有时需要不断的方式来检测和确定响应中细微的差别。1.3章节安排本论文章节安排如下:第一章绪论:综述此研究设计的背景意义以及研究内容。第二章SQL注入技术研究:主要对SQL注入攻击方式过程和攻击特点进行归类、识别,首先理解Web应用的工作原理,概述Web应用通用的构建方式,为理解SQL注入的产生过程提供一些背景知识,接下来从Web应用的代码层介绍引发SQL注入的因素以及哪些开发实践和行为会引发SQL注入。分析SQL注入过程和利用,并架构如何将SQL注入的发现过程自动化以提高检测简单SQL注入的框架。第三章SQL注入攻击技术研究:根据SQL注入技术,研究利用数据库中的功能来攻击系统端口的技术。数数据库大多均带有丰富的数据库编程功能,可以利用SQL注入漏洞来访问文件系统以执行有效的任务,可以在基础操作上执行各种命令,扩大范围攻击的利用技术细节。当发现SQL注入漏洞以及初步的利用获取数据后,可以利用SQL注入漏洞来访问文件系统来扩大渗透范围。还可以在操作系统上执行各种命令,攻击可以使用它们扩展数据库的可达区域并在更大的范围内发动攻击。第四章注入高级技巧研究:Web应用通常会使用过滤应用,设计这些过滤的目的就是防御SQL注入在内的常见攻击。这些过滤方式可以是位于web应用的代码层中,也可以通过第三方的外部实现,如Web应用防火墙(WAF)或入侵防御系统(IPS)。当注入攻击碰到这些防御应用,若想进一步利用漏洞,则需要寻找一种能避开过滤器防护的高级方法以便恶意输入传递给易受攻击的代码。第五章自动注入工具框架设计:根据项目的设计需求,以及Python编程语言的特点,对自动注入攻击工具整体框架进行分析和设计。并且分析功能模块中的重点和关键技术。第六章SQL注入测试:自动注入攻击实例测试。西南科技大学本科生毕业论文4第2章SQL注入技术2.1Web应用工作原理和架构简析不论是用何种脚本语言开发的Web应用,都有一个共同点:具有交互性并且大多是数据库驱动的。基于数据库驱动的Web应用一般都包含三层:apresentationtier(表示层,Web浏览器或呈现引擎)、alogictier(逻辑层,如C#、ASP、.NET、PHP、JSP等编程语言)和astoragetier(存储层,如MicrosoftSQLServer、MySQL、Oracle等数据库)。Web浏览器(表示层,如InternetExplorer、Safari、Firefox等)向中间层(逻辑层)发送请求,中间层通过查询、解析数据库(存储层)来响应该请求。图2-1简单的三层架构Web三层架构解决方案没有扩展性,研究人员不断地对Web三层架构进行改进优化,在可维护性和可扩展性的基础上建立了一种新概念:n层应用开发模式。其中有一种就是Web四层架构解决方案,该方案在Web服务器和数据库之间使用了一层中间件服务器(通常称为应用服务器)。下图2-2中,Web浏览器(表示层)向中间层(逻辑层)发送请求,后者一次调用由位于应用层的应用服务器所提供的API,应用层通过查询、更新数据库(存储层)来响应该请求。西南科技大学本科生毕业论文5图2-2四层架构2.2识别SQL注入SQL注入就是程序员对程序中动态的SQL语句没有作严格的过滤或检测,导致黑客能在注入点提交非法的SQL语句,导致程序和服务器的信息被泄漏。由于SQL注入的入门门槛低,隐蔽性好,破坏性大,杀毒软件无法查杀,是当前最主流的入侵手段。SQL注入攻击的本质,就是服务器将用户传入的数据在数据库中当成了SQL代码执行。这里便有两个关键因素:第一个是用户有权限输入数据;第二个是服务器应用数据执行了用户传入的数据。2.2.1识别数据输入Web环境是一种C/S(客户端/服务器)架构。客户端使用浏览器向Web服务器发送请求并等待响应。Web服务器接收到请求后,通过查询、解析数据库,将响应发送回客户端。很明显,双方便必须使用一种协议作为双方的约定,这种传输协议就是HTTP。首先,必须识别远程Web应用所接收的所有数据输入。HTTP协议定义了可以发送给服务器的操作方式,这里只关注研究与SQL注入攻击相关的两种方法:GET和POST。GET请求:GET是向服务器发索取数据的一种请求,是一种请求服务器的HTTP方法。使用GET请求时,信息是显示在URL中的。GET请求对用户是透明的,如下例,WEB服务器的GET请求如下所示:GET/general/vote/show/webst/list.php?VOTE_ID=131HTTP/1.1User-Agent:Opera/9.80(WindowsNT6.1;U;EditionIBIS;zh-cn)Presto/2.10.229Version/11.62西南科技大学本科生毕业论文6Host:**.swust.edu.cnAccept:text/html,application/xml;q=0.9,application/xhtml+xml,image/png,image/webp,image/jpeg,image/gif,image/x-xbitmap,*/*;q=0.1Accept-Language:zh-CN,zh;q=0.9,en;q=0.8Accept-Encoding:gzip,deflateCookie:SID_4143=82b90aee;SID_99=bfb67d86;UI_COOKIE=0;LWr7_2132_ulastactivity=85ebvMTfOWVLvxgzzzV4uv0PkMG14SL7yUg9SVBP%2BzMNhDtpaSVL;PHPSESSID=073edfe7894acb322ba1061678e82090;lzstat_uv=10735291292559574567|2879946Proxy-Connection:Keep-Alive该请求中与数据查询相关的参数在URL中,格式如下所示:list.php?VOTE_ID=131上述示例中包含一个参数:VOTE_ID。服务器应用将会把参数值带入数据库中解析执行,然后将响应结果返回给客户端。POST请求:POST请求是作为HTTP消息的实际内容发送给web服务器的HTTP方法。在浏览器中填写表单并点击Submit按钮时通常使用该方法。下面的例子是浏览器发送给远程WEB服务器的内容,请求如下所示:POST/general/vote/show/webst/pl_write.php?ITEM_ID=345HTTP/1.1User-Agent:Opera/9.80(WindowsNT6.1;U;EditionIBIS;zh-cn)Presto/2.10.229Version/11.62Host:**.swust.edu.cnAccept:text/html,application/xml;q=0.9,application/xhtml+xml,image/png,image/webp,image/jpeg,image/gif,image/x-xbitmap,*/*;q=0.1Accept-Language:zh-CN,zh;q=0.9,en;q=0.8Accept-Encoding:gzip,deflateReferer:http://**.swust.edu.cn/general/vote/show/webst/pl_write.php?ITEM_ID=345Cookie:SID_4143=82b90aee;SID_99=bfb67d86;UI_COOKIE=0;LWr7_2132_ulastactivity=85
本文标题:自动注入攻击工具的研发
链接地址:https://www.777doc.com/doc-745607 .html