0综合实践项目5 WEB安全攻防技术实践_web安全实践完整版
0综合实践项目5 WEB安全攻防技术实践由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“web安全实践完整版”。
PINGDINGSHAN UNIVERSITY
课程项目报告
题 目: WEB安全攻防技术实践
院(系): 计算机学院(软件学院)专业年级: 软件工程
2014级 姓 名: 第六组
组长:(江浩)学 号:
141530153 指导教师: 杨照峰
副教授
2016年10月16日
WEB安全攻防技术实践
摘 要
在当今社会,信息技术的快速发展,使得以计算机、通信等技术变得日益更新,发展非常快,从而影响了政治经济和生活登各方各面领域的飞速发展,然而,网络是把双刃剑,在给人们生活带来便利的同时,网络的安全问题也日益突出和重要。所以,网络是把双刃剑,在给人们带来便利的同时也给人们带来了危险,危险的例子也屡见不鲜,所以我们应该了解网络安全中面临的危险。我们把文档分为四部分:
第一部分,我们在实验中平台中的网页进行攻击,在攻击过程中,检测出可利用的漏洞,进行攻击。
第二部分,我们在选择实验室平台中的网站进行SQL注入,分别实现手工注入和手工注入,记录全部攻击操作过程,记录攻击结果及现象,形成详细的攻击分析报告。
第三部分,我们进行讨论分析,阐明XSS跨站脚本攻击和SQL注入攻击的原理、表现特征、防御策略方案。
关键词:WEB攻击,SQL注入,网络安全绪论
计算机和信息技术的飞速发展,网络的日益普及,深刻地改变着人们的生活方式、生产方式与管理方式,加快了国家现代化和社会文化的发展。21世纪的竞争是经济全球化和信息化的竞争,“谁掌握信息,谁就掌握了世界”,信息安全不仅关系到公民个人,企业团体的日常生活,更是影响国家安全,社会稳定的至关重要的因素之一。
今年来,我国网络安全事件发生的比例呈上升趋势,调查结果显示绝大多数网民的主机曾经感冒病毒,超过一半的网民经历过账号/个人信息被盗窃、被篡改,部分网民曾被仿冒网站欺骗。在经济利益的驱使下,制造、贩卖病毒木马、进行网络盗窃或诈骗、教授网络攻击技术等形式的网络犯罪活动明显增多,造成了巨大的经济损失和安全威胁,严重影响了我国互联网事业的健康发展。WEB攻击
进入实验虚拟机,打开XMAPP(开始-所有程序-XAMPP-XAMPP Control Panel),开启Apache HTTP服务和MYSQL服务,如下图2-1所示:
图 2-1开启服务
打开dvwa网站,http://localhost/dvwa,进入如下界面,点击Create/Reset Database,创建数据模块。如图2-2所示:
图 2-2打开dvwa 网站 打开存在漏洞的网站,http://localhost/dvwa/vulnerabilities/x_r/登陆账号:admin 登陆密码:paword。安全等级设置为:low。登陆后重新将上述的url地址复制到浏览器的地址栏 进入如下图2-3所示:
图2-3 存在反射型XSS漏洞页面
选择DVWA Security的安全级别,此处选择“low”如图2-4所示:
图2-4 DVWA Security安全级别 查看正常输入输出:在输入框中输入test,点击Submit,可以看到页面上的正常返回结果。说明这个页面的功能是将用户输入的信息直接发送给用户。如图2-5所示:
图2-5 页面正常输入效果
查看PHP源码:点击右下角的View Source,可以看到页面的PHP源码。从源码中可以看出,页面直接将用户输入的信息返回给用户。如图2-6所示:
图 2-6 页面PHP源码 进行攻击测试:在输入框中输入alert(/XSS/),可以看到非正常返回结果页面。同时在IP地址中可以看到输入内容的URL编码。由此说明,Web应用将未经验证的数据通过请求发送给客户端。如图2-
7、2-8所示:
图 5 页面攻击效果
图 2-8 被攻击页面此时的IP 验证此类漏洞的非持久性:重新访问该页面,点击刷新或再次点击右边XSS reflected,可以看见页面恢复正常,由此说明之前输入的信息未保存,是非持久性跨站脚本漏洞如图2-9所示:
图 2-9 重新访问后恢复正常的页面 存储型XSS攻击:
打开存在漏洞的网站http://localhost/dvwa/vulnerabilities/x_s/,如图2-10所示:
图 2-10 存在存储型XSS漏洞的页面
查看正常输入输出:在Name的输入框中输入test,在Meage的输入框中输入This is a test comment.点击Sign Guestbook按钮,可以得到正常的返回结果。说明该网页的功能是用来用户发表署名和评论的如图2-11所示:
图 2-11 正常输入效果 查看PHP源码:点击右下角的View Source,可以看到页面的PHP源码。从源码中可以看出,页面允许用户存储未正确过滤的信息,显示的时候从数据库中读取。如图2-12所示:
图 2-12 页面PHP源码
进行攻击测试:在Name输入框中输入Test,在Meage输入框中输入alert(/XSS/),点击Sign Guestbook,再次访问页面就可以得到弹出的对话框结果如图2-13所示。
图 11 被攻击的页面
验证漏洞的存储性:重新访问该页面,点击刷新或再次点击右边XSS stored,可以看到页面仍弹出之前的对话框。说明之前输入的信息被保存。SQL注入
3.1 SQL手工注入
打开虚拟机,输入用户名和密码,用户为:Adminsitrator。密码为:123456如图3-1所示:
图 3-1 打开浏览器,输入http://localhost:8080/example_code/ 如图3-2所示:
图 3-2 找到“(5)SQl注入攻击(SQL injection,俗称负料隐码)”项,并点击打开。如图3-
3、3-4所示:
图 3-3
图 3-4 攻击实例:绕过账号、密码的检查
先来看看上图,这是一个常见的形式简单的会员登录的画面。会员登录的功能是让来访者输入账号和密码来登录网站,入口网页的程序代码会判断来访者输入的账号和密码是否存在于数据库中。如果输入的数据存在于数据库中,就让这个来访者登录网站,否则就提示信息要求来访者必须先注册。如图3-5所示:
图 3-5 上图的网页是一个简单的会员登录的画面login.php,请试着执行它。login.php文件会读取ch数据库中的member数据表内的记录,如果使用者所输入的账号和密码存在于member数据表内,就会打开首页ex5-1.php。源码为http://localhost:8080/example_code/source/code5/login.php
所谓SQL注入攻击,就是在客户端的网页中输入特定的与SQL语句有关的代码。这段特定的程序代码会改变SQL语句,也就是login.php文件中有一段代码:
$query = “select * from member where username=”'.$_POST[“username”].“' and paword='”.$_POST[“paword”].“'”;这个SQL语句用来把在“账号”和“密码”文本框的输入值,与select语句连接成一个查询语句。
假如在上图的“账号”文本框中输入“daniel”,在“密码”文本框中输入“123456”,那么这个SQL语句会是:
select * from member where usemame='daniel' and paword='123456' 使用mysql_query函数提交这个SQL语句后,如果“daniel“与“123456”的账号/密码值存在于ch数据库中的member数据表内,那么mysql_query函数会返回一个结果集:
$result=mysql_query($query);
如果“daniel”与“123456”的账号/密码值不存在于ch数据库中的member数据表内,那么mysql_query函数会返回FALSE。
如果能够让SQL语句:$query=”select * from member where username=“'.$_POST[”username“].”' and paword='“.$_POST[”paword“].”'“;不检查$_POST[”username“]与$_POST[”paword“]的值,那么就可以绕开会员登录的数据检查而随意录入数据。
在类似这种检查“账号”与“密码”值的入口网页,许多黑客利用暴力破解的方式来尝试账号/密码,或是设法取得他人的cookie来得获得目标的账号/密码。如果使用SQL注入攻击的话,根本就不需要账号/密码就可以直接进入网站。
现在打开“攻击1”,进行输入,“账号”文本框中输入“'OR”='”,“密码”文本框中输入“'OR“='”。
“'OR”='”字符串是由下列字符所组成的: ●
一个单引号: ●
一个空白; ● OR:
●
一个空白: ●
两个单引号; ● =;●
一个单引号。输入情况下图所示。
上图为输入SQL注入攻击的字符串结果如下图所示,无效的账号/密码值也可以用来登录网站。
无效的账号/密码也可以登录现在回头看看login.php文件中所用的SQL语句:
$query = “select * from member where username=”'.$_POST[“username”].“' and paword='”.$_POST[“paword”] , “'”;在“账号”文本框中输入“'OR“='”,在“密码”文本框中输入“'OR”='”,那么这个SQL语句会是:
select * from member where username='' OR ''='' and paword='' OR ''='' 在where子句中,username=''(两个单引号)表示username等于空字符串““”,”=“表示空字符串“''”等于空字符串“''”,所以结果为TRUE,usemame='' OR ''=''的结果为TRUE,因为''=''为TRUE,所以'' OR TRUE的结果为TRUE。同样地,paword=''(两个单引号)表示paword等于空字符串“''”,''=''表示空字符串''等于空字符串'',所以结果为TRUE,paword='' OR ''=''的结果为TRUE,因为''=''为TRUE,所以 '' OR TRUE的结果为TRUE。
所以login.php文件的SQL语句:
select * from member where username='' OR ''='' and paword='' OR ''='' 等同于:
select * from member where TRUE and TRUE 因此这个SQL语句不会验证账号和密码文本框所输入的值,而是直接查询member数据表内的所有记录。
攻击1的防护方法是:字符串变量的过滤方式(使用addslashes函数)。使用addslashes函数来将SQL语句中的单引号、双引号、“”及NULL字符加上反斜线“”。
例如:addslashes(”O'reilly“)会变成:”O'reilly“ 注意,如果在php.ini文件中将magic_quotes_gpc设置为On,那么在GET、POST和COOKIE的数据上会自动执行addslashes函数。如果再调用一次addslashes函数,就会变成加了两次反斜线“”而产生错误。
点击“防护1”,进行输入,“账号”文本框中输入“'OR”='”,“密码”文本框中输入“'OR“='”,网页不会提交。
攻击2实例:删除数据库的所有记录
现在来看下图,这是一个常见的简单形式的留言板。下图的网页是ex5-2.php,执行这个页面,ex5-2.php文件会将留言的数据插入MySQL数据库ch5里面的postmeage数据表中。
执行ex5-2-check.php文件,浏览ch数据库的postmeage数据表内的记录。ex5-2-check.php文件的页面如图所示。在如下图所示的“标题”文本框中,单击第一条超链接。这时会打开ex5-2-show.php文件来显示这一条留言,在ex5-2-show.php文件中有一个“删除”按钮,单击这个【删除】按钮后就会删除目前显示的这一条留言,如下图示。
请注意在ex5-2-show.php的一段这样的程序代码,有一个“删除”按钮的程序代码:
“删除’’按钮的name与id属性值是delete。
在删除目前这一条留言的时候,我们使用postmeage数据表内的id字段来标识。$query = ”delete from postmeage where id=“.$_POST[”id“];$_POST[”id“]的值是由id这个隐藏文本框:” />而来的。
而id隐藏文本框的值,则是从ex5-2-show.php的URL参数id而来。攻击1的防护方法是:字符串变量的过滤方式(使用addslashes函数)。打开“攻击2”,点击超链接按钮进行攻击,删除所有记录,如下图。
同样攻击2的防护也可以使用addslashes函数来将SQL语句中的单引号、双引号、“”及NULL字符加上反斜线“”。例如:打开“防护3”,点击按钮超链接进行防护。
攻击3实例:盗取密码
现在来看下图,这是一个简单的首页的画面。下图的网页是ex5-3.php,请试着执行它。ex5-3.php文件会读取ch5数据库中的member数据表内的记录,然后在“访客:”文字处显示member数据表的username文本框的值。上图是一个简单的首页的画面
ex5-3.php文件需要URL参数id,这个id值是member数据表内的id文本框的值。在“访客:”文字处显示的username值,就是URL参数id所对应的username文本框的值。
这段在ex5-3.php中的程序代码http://localhost:8080/example_code/source/code5/ex5-3.php。如何攻击在ex5-3.php文件中,查询所用的SQL语句是:$query=“select username from member where id=”.$_GET[“id”];黑客利用在$_GET[“id”]变量内加入union select表达式的方式来达到盗取会员密码的目的。
union select表达式用来实现多重查询的功能,在$_GET[“id”]变量内加入union select就会让ex5-3.php文件的SQL语句变成有两个select查询语句。
第1个select查询语句是ex5-3.php原本的: select username from member 第2个select查询语句是黑客加入的: select paword from member 这个select查询语句用来盗取别人的密码。
黑客必须让第1个select查询语句失效,而让第2个select查询语句成功,那么这个SQL语句就会返回paword,而不是username的值。由于ex5-3.php预期SQL语句会返回username,所以在“访客:”文字处显示了这个SQL语句的查询结果。
但是实际上这个SQL语句返回的是paword,所以原本要显示账号的地方就会显示密码的值。因此黑客就可以借着这种SQL注入攻击,来盗取网站会员的密码。
开始攻击这个攻击的程序代码在ex5-3-attack.html文件中:
http://localhost:8080/example_code/source/code5/ex5-3-attack.html。
ex5-3-attack.html文件实际上是执行一个HTTP链接:
http://localhost/example/ex5-3.php?id=“union select paword from member where usemame='daniel'/* ex5-3.php文件的URL参数id的值等于:
”union select paword from member where username='daniel'/* 开头是两个单引号“''”。
将URL参数id的值代入SQL语句:
$query = “select username from member where id=”.$_GET[“id”];结果得到:
select username from member where id=“union
select paword from member where username='daniel' /* 第1个select查询语句是ex5-3.php原本的:
select username from member 但是无法执行。
第2个select查询语句是黑客加入的:
select paword from member where username='daniel' 因此,这个SQL语句会返回paword,而不是username的值。打开“攻击3”,攻击ex5-3.php文件,如下图所示。
单击【攻击ex5-3.php文件】按钮后,就会执行ex5-3.php文件,使用SQL注入攻击来盗取密码,结果如下图所示。在上图的“访客:”文字处,原本是要显示账号:访客: 但是,因为SQL注入攻击的缘故却显示了密码,黑客就因此盗取了网站会员的密码。
防范的方法:
SQL注入攻击(SQL Injection)之所以会发生,是由于SQL语句被篡改的缘故。因此防御的方法,就是检查SQL语句中的变量数据是否是正确的格式。
(1)如果数据确定是整数,就使用intval函数来将数据转换成整数。例如,id值通常是由MySQL数据库产生的整数类型的数字,因此使用intval函数来将id值转换成整数,以避免id值被窜改。
(2)如果数据确定是浮点数,就使用floatval或doubleval函数来将数据转换成浮点数。floatval与doubleval函数的功能与语法相同。
(3)如果数据确定是字符串,就使用addslashes函数来将单引号、双引号、“”、及NULL字符加上反斜线“”。
3.2 SQL工具注入
学生输入账号administrator,密码123456,登录到实验场景中的目标主机。如图所示: 打开IE浏览器,登录www.daodoc.com网站。如图所示:
打开文件夹中的明小子4.0压缩包,点击明小子4.0文件进入后,双击domain4.0.exe。如图所示:
双击domian4.0.exe
点击关闭
在当前路径中输入http://www.daodoc.com,并点击连接。如图所示:
注意 注入点区域,您可以发现SQL注入点。右键“注入点”中的红色网址。
点击检测注入,进入如图所示页面,点击开始检测。
点击“猜解表名”
获得数据库admin,选中admin,点击猜解列名。
勾选上username、paword、id并点击开始检测,等待几分钟,在编号中会出现username、paword、id的信息。如图所示:
点击“管理入口扫描”选项,再点击“检测后台地址”按钮,出现如图所示页面:
右键点击http://www.daodoc.com/logout.asp网址,点击“用IE打开连接”。如图所示:
输入获取的username和paword即可进入到http://www.daodoc.com的管理页面。如图所示:
使用admin账户登陆以后我们具有了管理权限,可对该网站进行操作。如图所示:
17、实验结束,请关闭虚拟机 总结
XXS跨站脚本攻击原理:XSS 属于被动式的攻击。攻击者先构造一个跨站页面,利用script、、等各种方式使得用户浏览这个页面时,触发对被攻击站点的http 请求。此时,如果被攻击者如果已经在被攻击站点登录,就会持有该站点cookie。这样该站点会认为被攻击者发起了一个http 请求。而实际上这个请求是在被攻击者不知情的情况下发起的,由此攻击者在一定程度上达到了冒充被攻击者的目的。精心的构造这个攻击请求,可以达到冒充发文,夺取权限等等多个攻击目的。在常见的攻击实例中,这个请求是通过script 来发起的,因此被称为Cro Site Script。攻击Yahoo Mail 的Yamanner 蠕虫是一个著名的XSS 攻击实例。Yahoo Mail 系统有一个漏洞,当用户在web 上察看信件时,有可能执行到信件内的JavaScript 代码。病毒可以利用这个漏洞使被攻击用户运行病毒的script。同时Yahoo Mail 系统使用了Ajax技术,这样病毒的script可以很容易的向Yahoo Mail 系统发起ajax 请求,从而得到用户的地址簿,并发送病毒给他人。
表现特征:一类是来自内部的攻击,主要指的是利用WEB 程序自身的漏洞,提交特殊的字符串,从而使得跨站页面直接存在于被攻击站点上,这个字符串被称为跨站语句。这一类攻击所利用的漏洞非常类似于SQL Injection 漏洞,都是WEB程序没有对用户输入作充分的检查和过滤。上文的Yamanner就是一例。
另一类则是来来自外部的攻击,主要指的自己构造XSS 跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页。如当我们要渗透一个站点,我们自己构造一个跨站网页放在自己的服务器上,然后通过结合其它技术,如社会工程学等,欺骗目标服务器的管理员打开。这一类攻击的威胁相对较低,至少ajax 要发起跨站调用是非常困难的。
先总结一下常见的攻击手法:
1.依赖跨站漏洞,需要在被攻击网站的页面种入脚本的手法
1.1.Cookie 盗取,通过javascript 获取被攻击网站种下的cookie,并发送给攻击者。
1.1.1.从cookie 中提取密码等隐私
1.1.2.利用cookie 伪造seion,发起重放攻击
1.2.Ajax 信息盗取,通过javascript 发起ajax 请求。1.2.1.从ajex 结果中获取隐私。1.2.2.模拟用户完成多页表单。2.不依赖跨站漏洞的手法,搜狐公司研发中心版权所有,仅供技术交流,转载请保留上述文字
2.1.单向HTTP 动作,通过img.src 等方法发起跨站访问,冒充被攻击者执行特权操作。但是很难拿到服务器的返回值。
2.2.双向HTTP 动作,如果服务器产生一段动态的script,那么可以用script.src 的方法发起跨站访问并拿到服务器的返回。SQL注入攻击原理:SQL注射能使攻击者绕过认证机制,完全控制远程服务器上的数据库。SQL是结构化查询语言的简称,它是访问数据库的事实标准。目前,大多数Web应用都使用SQL数据库来存放应用程序的数据。几乎所有的Web应用在后台 都使用某种SQL数据库。跟大多数语言一样,SQL语法允许数据库命令和用户数据混杂在一起的。如果开发人员不细心的话,用户数据就有可能被解释成命令,这样的话,远程用户就不仅能向Web应用输入数据,而且还可以在数据库上执行任意命令了。
SQL注入式攻击的主要形式有两种。一是直接将代码插入到与SQL命令串联在一起并使得其以执行的用户输入变量。上面笔者举的例子就是采用了这种方法。由于其直接与SQL语句捆绑,故也被称为直接注入式攻击法。二是一种间接的攻击方法,它将恶意代码注入要在表中存储或者作为原书据存储的字符串。在存储的字符串中会连接到一个动态的SQL命令中,以执行一些恶意的SQL代码。注入过程的工作方式是提前终止文本字符串,然后追加一个新的命令。如以直接注入式攻击为例。就是在用户输入变量的时候,先用一个分号结束当前的语句。然后再插入一个恶意SQL语句即可。由于插入的命令可能在执行前追加其他字符串,因此攻击者常常用注释标记“—”来终止注入的字符串。执行时,系统会认为此后语句位注释,故后续的文本将被忽略,不背编译与执行。表现特征:
1、变种极多有经验的攻击者,也就是黑客会手工调整攻击的参数,致使攻击的数据是不可枚举的,这导致传统的特征匹配方法仅能识别到相当少的攻击。或者是最常规的攻击,难以做到防范。
2、攻击简单攻击过程简单,目前互联网上流行的众多SQL注入攻击工具,攻击者借助这些工具可以很快的对目标网站进行攻击或者是破坏,危害大。
3、危害极大由于web语言自身的缺陷,以及具有安全编程的开发人员较少,大多数web应用系统均具有被SQL注入攻击的可能,而攻击者一旦攻击成功,就可以对控制整个web应用系统对数据做任何的修改或者是窃取,破坏力达到了极致。
刀豆文库小编为你整合推荐6篇电子电工技术综合实践心得体会,也许这些就是您需要的文章,但愿刀豆文库能带给您一些学习、工作上的帮助。......
电子电工技术综合实践心得体会我们得到了一些心得体会以后,有这样的时机,要好好记录下来,这样就可以通过不断总结,丰富我们的思想。那么心得体会该怎么写?想必这让大家都很苦恼吧......
1、某班开展 “ 社会中学语文”综合实践活动后,各小组将收集的资料加以筛选,梳理,形成了以下活动成果。甲同学的成果:街头巷尾乱用语言文字现象严重。如一家具专卖店——“南方......
一年级综合实践活动教学工作总结一、工作回顾本学期以来,我担任一年级班综合实践活动教学工作。开学初,我认真研读教材,以努力提高学生收集、整理资料,调查分析,实践动手能力为主......
六年级下册综合实践一、学情分析:综合实践活动课是我国当前课程改革中提出的一种新的课程形态,其内容主要包括信息技术教育、研究性学习、社区服务和社会实践以及劳动与技术教......
