《Web安全程序设计与实践》课件项目6_第1页
《Web安全程序设计与实践》课件项目6_第2页
《Web安全程序设计与实践》课件项目6_第3页
《Web安全程序设计与实践》课件项目6_第4页
《Web安全程序设计与实践》课件项目6_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

项目6Cookie注入攻击【项目描述】本项目对利用Cookie提交数据的SQL注入攻击和防护进行实训。本项目包含三个任务,首先建立一个具有Cookie验证功能的网站,实现将Cookie信息在浏览器端进行保存,服务器端通过浏览器提交的Cookie信息实现用户免登录。接下来利用服务器端读取Cookie信息并查询数据库的功能,实现基于Cookie数据的SQL注入。最后,通过对Cookie注入攻击的分析利用PHP转义函数实现Cookie注入防护。通过本项目实训,可以解释和分析Cookie注入漏洞产生的原理及危害,能够应用转义函数或者参数化查询实现对CookieSQL注入的防护。【知识储备】Cookie的概念Cookie最先是由Netscape(网景)公司提出并引入到Navigator浏览器,之后被万维网(WorldWideWeb,WWW)协会采纳。现在,绝大多数浏览器都支持Cookie,或者至少兼容Cookie技术的使用,而且几乎所有的网站设计者都使用了Cookie技术。按照Netscape官方文档中的定义,Cookie是指在HTTP协议下,服务器或脚本可以维护客户端计算机上信息的一种方式。通俗地说,Cookie是一种能够让Web服务器把少量数据储存到客户端的硬盘或内存里,或是从客户端的硬盘里读取数据的一种技术,它最根本的用途是帮助Web站点保存有关访问者的信息。典型的Cookie应用包括保存用户的登录信息、访问统计、购物车等。Cookie的格式为:(1)每个Cookie都以键/值对的形式,即key=value,(2)键和值都必须是URL编码的,(3)两对Cookie间以分号和空格隔开。Cookie的处理过程为:(1)服务器向客户端发送Cookie,(2)浏览器将Cookie保存,(3)之后的每次HTTP请求浏览器都会将Cookie发送给服务器端。Cookie在生成时会被指定一个Expires值,如果不指定则关闭浏览器后消失。此Expires值就是Cookie的生命周期,超出周期Cookie就会被清除。另外,用户在刷新页面或者打开网站的其它页面时应该重新更新Cookie的到期时间,以避免出现在使用网站的过程中因Cookie到期而突然让用户重新登录的情况。Cookie和Session的区别在项目3介绍了Session也是用于保存用户信息。但是Session与Cookie的区别是什么呢?最主要的区别是Cookie将用户信息保存在客户端浏览器中,而Session保存在服务器上。每个Session对应一个SessionID,由服务器自动分配,写入到用户浏览器的Cookie中。因此,SessionID要使用Cookie保存,如果客户端禁用了Cookie,就要使用其它的方法在浏览器端保存SessionID。Cookie注入攻击原理Cookie注入攻击就是利用Cookie向服务器端提交信息而发起的注入攻击。Cookie注入与传统的SQL注入并无不同,两者都是针对数据库的注入,只是表现形式上不同。Cookie注入攻击利用了Cookie的处理过程的第三个阶段,即将Cookie发送给服务器端时,通过修改Cookie的内容引起SQL注入攻击。CookieSQL注入攻击的危害由于Cookie功能用于读取客户端的信息,是Web站点的常用功能,因此CookieSQL注入攻击较容易发生。Cookie注入与Post型、Get型SQL注入攻击的区别是方式不同,但危害性是一致的。由于Cookie注入攻击不涉及到用户以Post或者Get方式提交的数据,因此更加具有隐蔽性。【任务6-1】建立Cookie验证功能的网站在本任务,创建一个包含Cookie验证功能页面的网站,实现在用户登录后将Cookie信息保存在浏览器端,并且在设置的到期时间内有效。服务器端通过浏览器提交的Cookie信息进行验证,实现在Cookie有效期内的用户免登录功能,即不需要输入账号信息实现登录。最后进行Cookie免登录验证功能测试。6-1-1任务实现在Apache的网站根目录C:\Apache24\htdocs\下新建一个文件夹cookie作为本项目的网站目录。并项目3的con_database.php文件复制到本项目的网站目录。本项目使用项目3的数据库。另外,由于【任务5-2】节将admin用户的密码修改成了admin,重复5-1-2节修改密码的步骤将其重新修改为admin123。接下来,在C:\Apache24\htdocs\cookie\目录下新建一个index.php文件。确保Notepad++的编码菜单中选择的为UTF8编码,保存类型设置为“HyperTextMarkupLanguagefile”6-1-2Cookie验证功能测试打开浏览器,在地址栏输入服务器的地址和相对路径以及文件名,即可访问。如果是本地访问,可以输入http://localhost/cookie/index.php打开页面,如图6-1所示在Username和Password分别输入admin和admin123,点击Submit,登录成功之后的界面如图6-2所示。刷新页面后发现Cookie的到期日期发生变化。关闭并重新打开IE浏览器,访问http://localhost/cookie/index.php页面,页面内容与图6-2相同,不需要输入登录信息,但是Cookie的到期日期发生变化。说明Cookie信息在浏览器关闭后仍然存在。点击“清除Cookie”按钮,发现页面刷新后回到如图6-1所示界面。【任务6-2】Cookie注入攻击测试在本任务,利用浏览器插件实现对Cookie信息的编辑并提交,采用与4-3-1节相同的暴库攻击方法,得到SQL注入暴库攻击结果。最后分析Cookie注入的原理。6-2-1安装浏览器插件Cookie注入攻击需要在浏览器安装Cookie编辑功能的插件,本项目采用Firefox浏览器和CookieManager插件,请自行搜索并安装。6-2-2Cookie注入攻击过程在Firefox浏览器地址栏输入并打开网页http://localhost/cookie/index.php,在Username和Password分别输入admin和admin123,点击Submit提交登录。登录成功后,点击工具栏的CookieManager图标,在其弹出菜单中选择“OpenCookieManagerforthecurrentpage”如图6-6所示。在CookieManager界面,可以看到当前页面的Cookie内容,如图6-7所示。点击Edit按钮,打开Cookie编辑界面。在Value编辑框中,将admin修改为:abc'unionselect1,2,group_concat(schema_name)frominformation_schema.schemata#然后点击Save保存点击浏览器的标签页回到index.php页面,并刷新,发现用户名的值变成了2,YourPassword的值变成了MySQL数据库的内容。如图6-9所示。如果还要进行其它的注入攻击,先点击“清除Cookie”按钮清除当前的Cookie,再登录后编辑Cookie的内容。也可以使用CookieManage选择并移除Cookie。6-2-3测试分析Cookie注入攻击采用的攻击方法与4-3-1节的暴数据库方法相同。information_schema的schemata表提供的是数据库的信息。该注入攻击手段采用了UNION联合查询,由于lab数据库的users表有3列(三个字段),因此UNIONSELECT语句也选择了三个字段,1和2是为了补充字段的数量。由于users的passcode字段是在第三列,因此联合查询的group_concat(schema_name)放在第三个字段才能在passcode的值进行输出。根据index.php页面第67行代码,注入攻击的查询语句变成了:select*fromuserswhereusername='abc'unionselect1,2,group_concat(schema_name)frominformation_schema.schemata#'由于#注释掉了之后的单引号,因此SQL查询语句等价于:select*fromuserswhereusername='abc'unionselect1,2,group_concat(schema_name)frominformation_schema.schemata执行SQL查询时,username='abc'的结果为空,因此联合查询的结果就只有后面的内容。在MySQL进行联合查询的结果如图6-10所示。【任务6-3】Cookie注入攻击防护在本任务,转义或者使用参数化查询实现对CookieSQL注入的防护,并测试防注入效果。通过Cookie注入攻击分析可以发现,引起注入攻击的原因在于将Cookie的值作为SQL变量进行数据库查询时,没有对其进行转义或者使用参数化查询。因此,防护手段就可以对Cookie的值使用转义或者使用参数化查询。打开index.php,将64行修改为:$cookee=mysqli_real_escape_string($con,$_COOKIE['account']);保存后重复6-2-2节的攻击步骤,按照图6-8所示修改并保存Value的内容,然后刷新页面,结果如图6-11所示。从攻击结果可以看出,使用转义函数成功的避免了Cookie注入攻击。也可以使用参数化查询来防护二次注入攻击,请参考之前的项目自行实现。【项目总

温馨提示

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

最新文档

评论

0/150

提交评论