基于php的web系统漏洞攻击靶场设计与实践_第1页
基于php的web系统漏洞攻击靶场设计与实践_第2页
基于php的web系统漏洞攻击靶场设计与实践_第3页
基于php的web系统漏洞攻击靶场设计与实践_第4页
基于php的web系统漏洞攻击靶场设计与实践_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、web系统漏洞攻击靶场摘 要互联网极速发展的同时,也会带来一些安全性的风险,一些不为人知的安全问题也逐渐暴露出来。近年来,媒体不断披露了许多网络安全事故,许多网络应用程序被黑客攻击,导致内部数据外泄,人们开始认识到网络安全越来越重要。现在的人普遍对网络攻击和攻击危害这方面的知识了解较少,为了让更多人了解网络攻击的危害性、学习网站漏洞攻击的知识和学习如何找出网站的漏洞,于是建立了一个可供用户了解和学习web攻击类型和方法的漏洞攻击靶场系统。web系统漏洞攻击靶场是一个让用户学习如何去攻击一个存在漏洞的系统,为一些开发人员去检测自己的开发技术和提供一个可合法测试的环境,在这个网站中,就存在着一些流

2、行的web漏洞,目的就是为了让用户看到被攻击成果的效果。 web系统漏洞攻击靶场是一个基于PHP+MySQL所开发的Web应用系统,而这个系统主要是建立一个可供攻击的靶场,采用如今比较多的攻击方式。用户可自行选择模块进行模拟攻击,还设有不同等级,随着等级的提高防护机制也将提高,用户需要找到防护机制的漏洞,采用不同的攻击方式去达到攻击网站的目的。关键字:web漏洞;攻击方法;防护机制;Web System vulnerability attacking rangeAbstractThe fast development of the Web also brings some security q

3、uestions, hidden behind the security problems are gradually exposed. In recent years, many network security incidents have been continuously disclosed by the media, and a large number of Web applications have been attacked by hackers, resulting in data leakage, and people are starting to notice the

4、growing importance of cyber security. People are generally of network attack and attack damage this knowledge to understand less. For people to know the dangers of web attacks, learning website of vulnerability of knowledge and learn how to identify a loophole in the site, and has set up a available

5、 for users to understand and learn attack types and methods of website.The web system vulnerability attack range is a system that allows users to learn how to attack a vulnerability, providing a legitimate environment for security professionals to test their expertise and tools. In this website itse

6、lf, There are some popular web vulnerabilities, the purpose is to let the user see the results of the attack effect. The system vulnerability attacking range is such a website. The web system vulnerability attack target is a web application system developed based on PHP+MySQL, and this system is mai

7、nly to establish a target range for attack, using more attack methods.Users can choose their own module to simulate attacks, there are also different levels, with the level of protection mechanism will be improved, users need to find the protection mechanism vulnerability, use different ways to atta

8、ck the purpose of the site.Keywords: web loopholes; attack methods; protective mechanism;目 录1 绪论11.1 本设计的目的和意义11.2系统概述21.3系统功能结构21.4开发技术介绍32 系统需求分析42.1 用户需求42.2 功能性需求42.3 可行性分析42.3.1 技术可行性42.3.2 经济可行性42.3.3 操作可行性53 数据库设计和构建63.1 创建数据库63.2 创建数据表64系统的设计与实现84.1 整体的设计与实现84.1.1 整体的设计84.1.2 整体的实现84.2 用户登录的

9、设计与实现94.2.1 用户登录的设计94.2.2 用户登录的实现104.3蛮力攻击的设计与实现114.3.1 蛮力攻击的原理及危害114.3.2 蛮力攻击的设计114.3.3 蛮力攻击的实现124.4 命令注入攻击的设计与实现144.4.1 命令注入攻击的原理144.4.2 命令注入攻击的设计144.4.3 命令注入攻击的实现144.5 File Upload攻击的设计与实现174.5.1 File Upload攻击的原理及危害174.5.2 File Upload攻击的设计174.5.3 File Upload攻击的实现184.6 CSRF攻击的设计与实现194.6.1 CSRF攻击的原理

10、194.6.2 CSRF攻击的设计204.6.3 CSRF攻击的实现214.7 SQL注入攻击的设计与实现214.7.1 SQL注入攻击的原理及危害214.7.2 SQL注入攻击的设计224.7.3 SQL注入攻击的实现224.8 XSS攻击的设计与实现244.8.1 XSS攻击的原理及危害244.8.2 XSS(Reflected)攻击的设计254.8.3 XSS(Reflected)攻击的实现264.8.4 XSS(Stored)攻击的设计284.8.5 XSS(Stored)攻击的实现284.9安全等级设置的设计与实现304.9.1 安全等级设置的设计304.9.2 安全等级设置的实现3

11、05结论32参考文献33谢辞34附录351 绪论Web系统漏洞攻击靶场(Web System Vulnerability attacking Range)是一个让用户学习如何去攻击一个存在漏洞的系统,该系统本身存在各种漏洞,目的就是让用户看到被攻击成果的效果。而在这个系统去设计一些简单易用的界面,从而展示一些最为流行的Web漏洞,并且每个模块代码有四种安全级别:低,中,高,不可能。通过难度等级从低到高的逐渐变化测试和去参考不同难度代码中的不同,可以帮助我们学习者更好地去理解漏洞存在的原理,随着等级的提高防护机制也将提高,用户需要找到防护机制的漏洞,用不同的攻击方式去实现攻击。用户可以在这个系统

12、中学习一些web安全漏洞的原理,让用户在以后的开发过程中尽量能自我发现一些漏洞的破绽,提高对自身安全开发的意识。1.1 本设计的目的和意义随着互联网的飞速发展,越来越多的基于网络的应用程序被开发出来,企业信息化过程中,在Web平台上建立了更多的应用。与此同时,Web服务不仅在信息化过程中发展越来越快,也吸引了大量黑客们的目光,其中最为突出的风险之一,就是web网络安全威胁。黑客可以通过Web系统里的漏洞,去获取到服务器的控制权限,轻易修改网页里的内容,甚至盗取内部的重要信息数据。更有甚者会植入恶意代码,使得用户自身也可能中毒。这使用户不得不开始去关注web的安全问题,对于Web应用的如何安全开

13、发也逐渐得到人们的重视。因此,为了让更多的开发者对自己的web网站能够进行安全鉴定,也为了能让更多人学会找到网站的漏洞和了解各种漏洞的原理与危害,所以建设一个系统漏洞攻击靶场供大家学习交流显得尤为重要。而web系统漏洞攻击靶场就是这样的一个系统,它本身存在各种各样的漏洞,立志于让更多的人了解其脆弱性,让用户模拟黑客去攻击网站。系统中采用了如今主流的互联网攻击方式,例如有命令注入攻击、蛮力攻击、CSPF攻击等,最大程度的模拟真实web系统中遇到的攻击。本设计希望通过用户自身操作的方式来去了解黑客们是如何攻击网站,从而提高对自身安全开发的防范意识。在以后的web系统的开发过程中,要学会反思和审视自

14、己写出的代码质量,看是否会存在被非法者攻击的可能 ,从而去创造一个完善的Web攻击防御手段来阻挡攻击。1.2系统概述本系统采用的开发模式为PHP+MYSQL+HTML。整个系统设有蛮力攻击、命令注入攻击、CSRF攻击、文件上传、SQL数据库注入攻击、XSS攻击的反射型和存储型等多种功能模块,还设有不同等级,随着等级的提高防护机制也将提高,用户需要找到防护机制的漏洞,采用不同的攻击方式去达到攻击网站的目的。1.3系统功能结构本设计的主要功能是通过数个功能模块去完成需求。具体的功能结构如下:(1)系统登录。 (2)攻击方式功能模块包括以下:蛮力攻击。命令注入攻击。CSRF攻击。文件上传。SQL注入

15、攻击。XSS攻击(反射型)。XSS(存储型)。(3)主页显示内容:介绍本系统的主体功能特点和意义。(4)设置防御等级:设置了四种等级:低、中等、高、不可能的,随着等级的提高防护机制也将提高。通过对系统功能的结构分析,web系统漏洞攻击靶场系统功能结构图如图1.3.1所示。图1.3.1 web系统漏洞攻击靶场系统功能结构图1.4开发技术介绍本设计所涉及的开发技术介绍及功能说明如下:该设计是在Windows 10 操作系统平台上运行,Web服务器为Apache,数据库服务器选择了MySQL,选择WampServer集成工具(可集成apache,php,数据库等)把各个环境统一集成。开发工具采用的是

16、PhpStorm,开发语言为PHP,页面显示主要采用HTML、CSS,结合JS,使用到VS Code等开发软件。表1.4.1开发语言和环境介绍开发语言PHP语言,HTML+CSS+JS前端集成工具WampServer系统环境Windows 10 64位操作系统开发工具PhpStorm 、VS Code、Navicat for MySQL2 系统需求分析本系统主要是针对于有需求对web安全的了解,对象一般为开发者。对于本设计的系统需求分析主要在用户需求分析、功能性需求分析、可行性分析三大方面进行分析,最终得出本设计的整体功能结构。2.1 用户需求为了让更多的开发者对自己的web网站进行安全鉴定和

17、提高自身的安全开发保护意识,也为了能让更多人了解各种漏洞的原理与危害,本设计主要让人们能够亲身体验到攻击一个存在漏洞的系统的过程。用户需要使用不同的攻击方式去实现攻击,找到防护机制的漏洞,从而到达攻击的目的。2.2 功能性需求根据开发者最常见的攻击方式等需求,本设计各模块将要实现的功能如下:(1)系统登录:用户管理者需要通过输入正确的用户名和密码,才能成功进入到系统内。(2)攻击方式:用户通过界面选择要实现的攻击方式,共有蛮力攻击、命令注入攻击、CSRF攻击、文件上传、SQL数据库注入攻击、XSS攻击的反射型和存储型七种不同的攻击模式,然后去寻找此模式下的漏洞。(3)主页显示内容模块:介绍本系

18、统的主体功能特点和意义。(4)设置防御等级模块:设置四个等级:低,中,高,不可能的,随着等级的提高防护机制也将提高。(5)帮助模块:提供一些系统的相关介绍和一些基本的操作方式的说明。2.3 可行性分析可行性分析就是对所设计的系统进行是否可行的研究,对整个系统项目起着十分重要的作用。这次可行性分析主要从经济可行性、技术可行性、操作可行性等方面进行分析,确定一些可能出现的问题,避免一些开发所带来的风险。2.3.1 技术可行性本设计选择PHP进行web开发 ,php语言无须编译,可在服务器端直接执行且可以稳定运行。而采用WampServer集成工具(集成apache,php,数据库等)进行开发,节省

19、配置环境过程中浪费的时间,从而提高开发的效率。因此技术方面上是可以实行的。2.3.2 经济可行性开发本系统所用的开发工具和集成工具基本都是互联网上开源的工具。本设计主要采用个人的 PC 作为系统服务器和自身的网络条件等,所需要的硬件资源基本上可以满足。而且本系统会在未来的时间内稳定地发挥重要作用,在经济上是完全可行的。2.3.3 操作可行性该系统是在 windows 下面使用 phpstorm进行php开发,目前这个软件可以使用学生免费的优惠,有着良好的开发环境,可以提高编码效率。更好地去系统地开发一个简洁可用的用户界面,有良好的指向设置,帮助用户可以快速掌握此系统的操作方法,所以操作方面上是

20、它可行的。3数据库设计和构建3.1 创建数据库数据库是一个存储数据的地方,本设计采用MySQL作为此次的数据库。通过对本设计的系统功能结构进行分析,可以设计出系统中使用的数据库dvwa,其中包含2张表:留言表和用户表,数据库和数据表的信息及系统ER图如下图所示。图3.1.1 web系统漏洞攻击靶场系统数据库与数据表图3.1.2 系统ER图3.2 创建数据表通过对数据库dvwa的功能结构特点分析,创建各个数据表,下面看一下各个表的结构和说明。Gusetbook表用于SQL攻击(存储型)中的留言版,其中comment_id为主键且自动增值,comment为留言注释,name为留言标题,其结构如图3

21、.2.1所示。图3.2.1 guestbook数据表user表用于后台登录验证,其中use_id为主键且自动增值,其他属性的功能介绍如表3.2所示,其结构如图2.2所示。表3.2.1 user表各属性的功能说明字段名称说明字段类型是否为空user_id主键且自动编号int(6)否frist_name用户的姓varchar(15)是last_name用户的名字varchar(15)是user账号varchar(15)是password密码varchar(32)是avatar上传varchar(70)是last_login上次登录时间timestamp是failed_login失败登录次数int(

22、3)是图3.2.2 user数据表4系统的设计与实现4.1 整体的设计与实现4.1.1 整体的设计本设计整体共分为系统登录、主页、攻击方式模块、设置防御等级四大功能模块,用户需经过系统登录后方可对系统其他模块操作,而主页显示系统的主体功能特点。整个系统最为重要的二个模块为攻击方式模块和设置防御等级,其中攻击方式分为7大模块:蛮力攻击、命令注入攻击、CSRF攻击、文件上传、SQL注入攻击、XSS攻击(反射型)、XSS攻击(存储型),其中蛮力攻击、CSRF攻击、文件上传只设置了两个等级:low和medium。SQL攻击只设置了三个等级,而剩下的攻击方式都分别设有低、中等、高、不可能的四个防御等级。

23、而在攻击方式模块里每个页面都设有一些提示的小功能,帮助一些不熟悉操作的用户了解如何使用。图 整体设计效果图4.1.2 整体的实现系统页面整体的前端显示效果主要通过html+css+js等前端技术来实现的,在用户登录界面设计了表单用于登录系统,登录系统后可看到整体设计风格由黑色、白色、绿色三种颜色搭配组成。左侧为总体功能导航栏,包含主页、各种攻击方式模块、安全等级信息、php信息、退出登录等,左下角显示当前用户名和安全等级,在每一个功能模块的界面的右下角还会设有查看帮助,帮助用户更好的了解操作,具体实现效果可见图所示。图 系统整体显示效果图4.2 用户

24、登录的设计与实现4.2.1用户登录的设计用户登录的界面设计原则保持简洁,不用过于繁琐,设计了一个登录表单用于登录系统,用户需要输入正确的信息。为了可以成功进入到系统,需要保证所输入的信息都正确才可以登录系统。图 系统登录界面图图 系统登录流程图4.2.2用户登录的实现可以看到,在登录的代码中对user表进行查询,查询填写的信息是否正确,如果正确则跳转到index.php页面;如果不符合,则返回信息:登录失败,而且将失败登录的次数存入数据库。图 用户登录核心代码4.3 蛮力攻击的设计与实现4.3.1蛮力攻击的原理及危害蛮力攻击,也被称为暴力破解攻击。蛮力

25、攻击的原理就是基于攻击者自己的用户名和密码字典,逐一来猜测解用户密码,尝试登录。因为理论上来讲,在没有去做相关的验证核查机制,只要有足够大的字典,最后还是可以枚举成功。蛮力攻击往往会导致用户密码被重置,从而泄漏系统内部的重要数据。4.3.2蛮力攻击的设计蛮力攻击模块在本系统设计了两个难度等级,不同的等级需要找到该等级的漏洞进行攻击。设计了一个登录界面供用户实现暴力破解,用户可在这个界面不断输入用户名和密码字典,直至找到可以登录的语句,实现攻击。图蛮力攻击效果图4.3.3蛮力攻击的实现(1)low等级:在此等级中if( isset( $_GET Login ) ),isset函数会

26、返回true/false值,只能验证了参数Login是否存在,而不能做其他的防御过滤。第二,对输入的密码进行md5加密,因此不能做注入攻击。但是设置$user;查询语句 $query = select * from users where user = $user and password = $pass;可知,用户输入Username:处存在SQL注入,用户名输入admin#得到登陆。图4.2.3为low等级核心代码,图4.2.4为low等级具体实现效果。图 low等级核心代码图 low等级实现攻击效果(2)medium等级:对比low等级加入mysql_real

27、_escape_string函数,该函数会对字符串中的特殊符号进行转义,能够防御基本上的数据库注入。在这个等级中,对输入的参数进行了简单的过滤:对一些预定义字符进行了转义。除此之外加入sleep( 2 ),如果输错了密码,则需要等待2s以后才能再次提交。图4.2.3为medium等级核心代码。(a)(b)图 medium等级核心代码4.4 命令注入攻击的设计与实现4.4.1 命令注入攻击的原理及危害命令注入攻击,在操作管理系统中, & 、& 、|、|等都可以作为一个命令连接符使用,用户可以通过网络浏览器去提交执行命令,而服务器端却没有进行针对执行相关函数做过滤的机制,即非法的攻击

28、者提交通过自己非法构造的命令语句,攻击者可在用户这里上执行一些恶意命令,从而达到攻击的目的。攻击者通过这些恶意构造的命令,非法地获取到重要数据及资源,甚者通过命令注入来直接控制用户的主机和网络。4.4.2 命令注入攻击的设计此功能模块在本系统设计了四个难度等级,不同的等级需要找到该等级的漏洞进行攻击。在页面设计了一个表单用于提交输入的IP地址,用户可在这个界面的输入框中输入构造跟的命令语句来实现攻击。图命令注入攻击界面图4.4.3 命令注入攻击的实现(1)low等级:该等级中对输入命令没有进行任何程度的过滤,只判断是哪种操作系统,然后来执行对应系统的命令, stristr函数的功

29、能是查找字符串中第一次出现的,并返回字符串剩余的部分。如果是windows 的操作系统,就执行命令:ping IP地址,如果是其他的操作系统,则执行:ping c 4 IP地址。在这个等级中,输入通过恶意构造的命令:&net user,就能达到攻击的目的。图 low等级核心代码图 low等级实现效果(2)medium等级:在这个等级增加了过滤机制,使用了str_replace函数将“&”和“;”替换为空。增加了过滤之后,需要改变构造的命令,输入恶意构造的命令:&net user,被过滤掉的是“&”和“;”,“&”并不会被过滤,成功

30、实现攻击。“&”与“&”的区别也有不同,前者的例子是:命令1&命令2,需要命令1成功执行才会执行命令2,否则不会执行命令2;后者的例子是:命令1&命令2,不管前者执不执行,都会执行命令2。图 medium等级核心代码(3)high等级:该等级的过滤机制中,增加了对几种符号的过滤,例如“(”、“)”、“$”、“|”、“| ”,需要注意的是,“| ”中后面带有空格,因此“|”就变成了漏网之鱼,在输入进过恶意构造的命令:|net user,成功实现攻击效果。图 medium等级核心代码(4)impossible等级:该防护等级,增加了stripslash

31、es函数、explode函数、is_numeric函数。其中stripslashes函数会将字符串中的反斜杠删除,并返回已经经过过滤的字符串;explode函数将字符串变为数组,并把数组返回。is_numeric函数判断字符串是否为数字或者数字字符串,如果是就返回true,不是就返回false。此等级经过严格过滤,所以不存在漏洞,成功防御。图 impossible等级核心代码4.5 File Upload攻击的设计与实现4.5.1 File Upload攻击的原理及危害文件上传漏洞通常是因为对所上传的文件过滤不严或未修复的漏洞攻击。攻击者可通过上传点上传一个可执行的文件到服务器,

32、服务器未经任何检验或过滤上传的文件,没有检验文件后缀、类型等,从而造成文件的执行。黑客们上传木马、病毒、恶意脚本或者WebShell等导致用户被攻击。黑客会恶意上传这些有毒文件,以诱骗和钓鱼的形式来引导用户或管理者去下载执行,用户一旦下载或执行,恶意代码的执行从而导致一些权限被攻击者所控制。4.5.2 File Upload攻击的设计文件上传攻击模块只设计了两个难度等级,不同的等级需要找到该等级的漏洞进行攻击。在页面设计了一个上传表单用于上传文件,用户可在上传一些未经过滤的文件来实现攻击。图 File Upload攻击界面图4.5.3 File Upload攻击的实现(1)low

33、等级: 在low等级中有basename(path,suffix)函数,返回路径中的文件名。在这个等级下,服务器对上传文件没有做任何的限制和过滤,全部都成功放行。如果上传成功,则会弹出“路径+成功上传!”,如果上传失败,则会提示“您的图像没有上传”。图 low等级核心代码(2)medium等级:此等级加入了对上传文件的大小和类型做了限制,$uploaded_type限制文件大小为100000字节,并且文件type类型只能是“image/jpeg”或 “image/png” 。否则将不能上传成功。图 medium等级核心代码4.6 CSRF攻击的设计与实现4.6.1

34、CSRF攻击的原理及危害CSRF攻击,是一种通过利用受害者尚未失效的信息去执行恶意操作的攻击方式,是由于服务端没有对http头做严格过滤引起的。绝大多数网站是通过 cookie 来认证身份信息的,所以黑客想要做一个伪造用户的正常操作,会利用到用户自己本机的cookie,让用户在本机发起用户不知道的请求,从而去攻击自己已经登录的系统。非法的攻击者会在用户不知情的情况下,盗用受害者的cookie,利用cookie进行窃取用户资金、冒充用户等一系列非法的操作。图攻击原理图4.6.2 CSRF攻击的设计此攻击模块只设计了两个难度等级,在页面设计了一个提交表单,其中包括一个新密码输入框和确

35、认新密码输入框。此模块会在新建页面中新建一个表单,提交的地址就是该模块页面的地址,可以通过页面是否有显示密码修改成功来判断是否攻击成功。图 CSRF攻击界面图4.6.3 CSRF攻击的实现(1)low等级:该等级中没有实现过滤机制,正常情况下,只要输入的两个密码的值是一样的就可以修改密码。非法的攻击者构建了表单(包括更改密码输入框和确认密码输入框),并将设置好两个表单一样的默认密码值,从而窃取到用户真正密码实现攻击。图 low等级核心代码(2)medium等级:与上一个等级不同的是,加了过滤机制。过滤掉了http头的referer字段,只要referer字段跟本网站

36、的referer字段不一样,就会被过滤掉。由于字段被过滤掉,所以浏览器并不能识别该请求的来源,所以无法实现攻击。在本机上模拟该等级的攻击情况是可以修改密码的,因为referer字段都来源于同一主机,但是在攻击是跨站攻击,在本机模拟达不到效果,只有在不同主机上才能看到攻击效果,因此没有接下里的攻击等级。 图 medium核心代码4.7 SQL注入攻击的设计与实现4.7.1 SQL注入攻击的原理SQL注入攻击,即数据库注入攻击。Web程序中对于所提交的参数未做过滤直接用于SQL语句中执行,如果参数中存在特殊字符,就会破坏了SQL语句原有逻辑使原有语句失效。非法的攻击者通过构造不合法的

37、数据库语句,破坏正常的数据库查询语句,输入到没有经过严格过滤的web表单或文本域,从而达到执行不合法的语句。SQLZ注入攻击能带来十分严重的危害,常见的有以下反面:(1) 获取数据库中用户的用户名和密码。利用其成功进入到系统,从而窃取信息甚至盗窃资金。(2) 入侵数据库对网页页面进行篡改,使网页的重要信息遗失。(3) 获取管理员的权限,非法修改信息,甚至破坏系统,让数据库瘫痪,造成不可逆的危害。4.7.2 SQL注入攻击的设计SQL注入攻击模块设置三个等级,在页面设计了一个提交表单,用于输入用户ID,我们可以在数据库添加几个用户,并补全用户的用户名和密码等信息。攻击者额可以利用这个输入框构造恶

38、意的数据库命令语句来达到查看用户的信息。图 SQL攻击界面图4.7.3 SQL注入攻击的实现(1)low等级:没有对参数id的类型、字符等做任何过滤,是最基本的SQL注入。首先是确定是否有注入,注入是字符还是数字,第一输入1 and 1 =2,查询失败,返回空;输入:1 or 1234=1234,查询成功,返回多个结果,说明存在字符注入。 其次,输判断数据库中的字段数,入:1 or 1=1 ORDER BY 1 #和1 or 1=1 ORDER BY 2 #查询成功,输入1 or 1=1 ORDER BY 1 #查询失败,说明只有数据库中只有两个字段。第三,确定字段的顺序。输入1

39、 UNION SELECT 1,2 #,查询成功,确定了字段的顺序。接下来,获取当前信息数据库,输入1 union select 1,database() #,查询成功,显示了数据库名。接下来,获取数据库的表,输入1union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #,查询成功,显示了数据库中的表名。第五,获取表中的字段名,输入1 union select 1,group_concat(column_name) from information

40、_schema.columns where table_name=users #,查询成功,显示了数据表中所有字段名。最后,下载数据表。输入1or 1=1 union select group_concat(user_id,first_name,last_name),group_concat(password) from users #,查询成功,这样就查到了数据表中所有的用户信息。图 low等级核心代码(2)medium等级:mysql_real_escape_string函数将添加到这个级别的代码中,以此对x00,n,r,”,x1a等特殊符号进行转义,在页面上设计了一个下拉选

41、择框来控制用户输入。但仍然可以通过一些抓包软件去修改参数,然后提交恶意构造的查询参数。图 medium等级核心代码(3)high等级: 这个级别与上一个等级的区别在与于在SQL查询语句中添加了“LIMIT 1”,来控制只输出一个结果。其他注入的过程与与low级别基本一样的方法。图 high等级核心代码4.8 XSS攻击的设计与实现4.8.1 XSS攻击的原理及危害XSS攻击, 攻击者通常向Web页面里植入恶意的html标签或者js代码,不合法的攻击者经过不合法的方式输入代码,一般的用户阅读该界面时,就会执行该代码,以此来攻击用户,使用户遭受攻击。而XSS攻击又分为了

42、三种:Reflected(反射)型、持久型和store(存储)型,本设计将注重讲述的是反射型和存储型攻击。图 XSS(反射型)攻击原理图图 XSS(存储型)攻击原理图当用户点击一个能够获取自身网站cookie的链接之后,攻击者可以通过用户自身的cookie,使用cookie进行盗取用户的账号和密码,进入系统内部盗取重要信息,盗窃资金等非法行为。 4.8.2 XSS(Reflected)攻击的设计XSS反射型攻击设置了四个安全等级,在模块页面下设计有一个输入框表单,可以利用这个输入框构造恶意的脚本代码来实现攻击。图 XSS(Reflected)攻击界面图

43、4.8.3 XSS(Reflected)攻击的实现 (1)low等级:在这个等级中的php代码没有进行过滤,攻击者可以输入js代码进行攻击,例如输入:alert(“已经成功插入恶意的脚本代码”),之后便会在页面中弹出一个提示,内容如下:“已经成功插入而已的脚本代码”。实现的原因主要是该等级下没有对输入的脚本代码进行任何的过滤,网页直接执行这些已经插入的恶意脚本代码。图 low等级核心代码(2)medium等级:这个等级与上一个等级不同的是,利用了str_replace函数对输入内容进行过滤。该函数是对输入的字符串中一些字符进行过滤,如:str_replace( , , $_get

44、 name ),将输入的字符串中的代码替换为空。但这样依然存在漏洞,使用str_repalce函数是很不安全的,因为该函数不会将双写的代码过滤。因此可以输入:scriptalert(“已经成功插入恶意的脚本代码”) 或者将代码大写,该等级不会对双写的脚本代码进行过滤,所以依然可以实现攻击。图 medium等级核心代码(3)high等级中:与上一个等级不同的是,加入了正则表达式函数对输入数据进行过滤。如下代码所示:preg_replace(/(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i,$_GET name );preg_replace函数里面正则表达式将s、c

45、、r、i、p、t几个字符不限次数、不区分大小写进行过滤。所以需要用其他的标签,如: ,成功实现攻击。图 high等级核心代码(4)不可能等级:与上一个等级不同的是,使用了htmlspecialchars函数进行过滤。预定义的字符“”被该函数转化为HTML实体,于是插入的代码不会被页面执行,成功防御。图 impossible等级核心代码4.8.4 XSS(Reflected)的设计XSS存储型攻击模块实现四个不同的等级,在模块页面中设计了一个表单,表单中设置了名字和信息两个输入框。而改模块会连接数据库dvwa, 添加name跟message字段.所提交的信息会存储在数

46、据库的表里。图 XSS(Reflected)界面图4.8.5 XSS(Reflected)的实现 (1)low等级:在这个级别中,对信息输入框进行过滤,但却没有对用户名输入框过滤。利用stripslashes函数对字符串中的反斜杠进行过滤,这样的话无法在信息输入框中输入“”代码,只能在姓名输入框中输入:alert(“已经成功插入恶意的脚本代码”),在页面中实现弹窗效果。在这个过程中,输入的名字和信息都会被数据库所存储。图 low等级核心代码(2)medium等级中:与上一个等级不同的是,运用了addslashes、strip_tags、htmlspecialchar

47、s三个函数对输入信息框的内容进行过滤。addslashes函数是将预定义字符之前添加反斜杠的字符串。strip_tags函数是在字符串中剥离HTML代码标签,htmlspecialchars是将预定义的字符“”等转换为HTML实体。姓名输入框中利用str_replace函数将“”代码替换为空。于是可以在姓名输入框中输入代码:scriptalert(“已经成功插入恶意的脚本代码”) ,在页面中实现弹窗效果,输入的内容都保存在数据库中。图 medium核心代码(3)high等级:除了保留了信息输入框过滤方式,与上一级不同的是,在姓名输入框利用preg_replace函数运用了正则表达

48、式对输入内容过滤。但是依然存在漏洞,在姓名输入框中输入:,页面成功出现弹窗效果,输入的内容成功保存在数据库中。图 high等级核心代码(4)不可能等级:该等级中,对姓名和信息输入框都运用了stripslashes函数和htmlspecialchars函数进行了过滤。这种等级情况下,对输入的代码进行严格的过滤,很难实现攻击。 图 impossible等级核心代码4.9安全等级设置的设计与实现4.9.1 安全等级设置的设计在这个功能模块界面设置了一个下拉选择框表单用于更改安全等级,更改等级后会实时更新具体安全等级在右下角,并显示目前安全等级在此页面里。图安

49、全等级设置界面图4.9.2 安全等级设置的实现 在此模块中,设置了参数“seclev_submit”,如果提交了改变等级的参数,设置了$securiteyLevel,则相应在代码中变更等级 。图 设置安全等级核心代码5结论本系统主要对互联网中几种流行的攻击手段进行研究原理与具体的实现效果,进一步去加深对web安全漏洞的认识的同时,也能有助于发现自己开发时的一些不良习惯。而如今的时代是一个互联网时代,大量的数据在互联网上传输,而web相应开发也蓬勃发展,而网站的内部信息数据显得尤为重要,所以我们需要先懂得一些web攻击的原理与实现手段,才能去制定提供一个不断完善的web漏洞攻击防御

50、系统方案。对于蛮力攻击,它是通过用户名和密码字典来穷举遍历一遍暴力破解,要想实现防御,第一可以限制用户的登录次数,超过即锁定账号或ip;其次,增加人机验证机制,例如验证码、短信码等;最后,必须要在服务器端进行对验证码的检验。命令注入攻击,非法的攻击者通过构造恶意的命令来实现攻击。因此,我们必须严格对数据输入进行过滤,特别是对于一些& 、& 、| 、 | 等命令连接符过滤是不能在符号后面留空格,进一步防御攻击者的攻击。CSRF攻击,是指非法的攻击者通过利用受害者尚未失效的信息(例如cookie)进行盗取登录可以同时通过分析验证HTTP的Referer字段、添加token并验证、在HTTP头中定义

51、属性并验证等防御技术手段方面进行安全防御。文件上传,是对所上传的文件过滤不严导致上传的文件可能携带恶意代码从而达到攻击的目的。我们需要采取的措施首先是对上传文件类型进行验证尤其对于文件后缀、文件类型等,其次对上传文件格式进行严格的过滤,也可以采用隐藏上传文件路径、限制上传路径等多种方式。SQL注入攻击,主要是通过一些未过滤的输入数据,运用字符构造恶意的命令使输出情况呈现异常,从而达到输出私密信息,甚至获取管理员控制权限和数据库读写控制权。我们需要对数据的类型、长度进行严格的规定,过滤掉一些有风险的字符,对特殊字符进行转义。XSS攻击,用户将输入的数据插入到页面中,恶意的攻击者利用漏洞植入了恶意

52、的脚本代码,浏览器会执行代码包括输入的脚本代码。因此,为了能让浏览器不要让输入的恶意数据变成代码,需要对输入的数据进行各种分析和过滤。第一,须金星严格的过滤,验证格式,长度,范围和内容数据。除此之外,还有对html元素标签和预定义字符进行适当的转义编码。参考文献1 诸葛建伟 网络攻防技术与实践 电子工业出版社 20011.62 吴闻构建网络安全体系的必要措施 机械工业出版社 2003.93 陈小兵黑客攻防-实战加密与解密电子工业出版社,2016:82-208.4 张玉清、网络攻击与防御技术M、清华大学出版社,20125 贾铁军、陶卫东.网络安全技术及应用M机械工业出版社,2017.66 Wil

53、liam Stallings.密码编码学与网络安全-原理与实践(第六版)M.电子工业出版社,2015.37 传智博客高教产品研发部. PHP网站开发实例教程M.人民邮电出版社,2015.98 杜晔、张大伟、范艳芳.网络攻防技术教程.2012,89 张博常用黑客攻防M中国铁道出版社 2011.110 陈小兵Web渗透与漏洞挖掘电子工业出版社,2017:41-108.11 赵彬. 黑客攻防-WEB安全实战详解M. 中国铁道出版社, 2014.附录附录1程序核心代码蛮力攻击核心代码Low级别:?phpheader(content-type:text/html;charset=utf-8);if( isset( $_GET Login ) ) / 得到用户名$user = $_GET username ;/ 得到密码$pass = $_GET password ;$pass = md5( $pass );/ 检查数据库$query = SELECT * FROM users WHERE user = $user AND password

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论