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

下载本文档

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

文档简介

项目12验证码【项目描述】本项目对Web登录密码在线暴力攻击和验证码防护功能进行实训。本项目包含两个任务,首先使用Hydra对Web登录密码进行在线暴力攻击测试,然后实现基于验证码方式的用户登录验证功能,以防止在线破解工具对Web系统用户账号的自动化破解。通过本项目,可以解释和分析密码在线暴力攻击的原理和危害,能够应用验证码进行用户登录验证。【知识储备】Web登录账号和密码暴力破解原理暴力破解的原理就是使用用户定义的用户账号字典和密码字典,一个一个去枚举,尝试是否能够登录。从理论上来说,只要字典足够庞大、时间也足够,枚举就能够成功。Web登录在线破解工具的原理就是使用软件模拟HTTP登录访问的过程,从字典文件中获取账号和密码进行逐个枚举,并检查Web服务器的返回信息。如果匹配错误的返回信息,说明本次枚举使用的账号密码不成功,否则,说明账号密码则是正确的。如果在已知账号的情况下,破解速度会大大增加。比如,很多网站的默认管理员账号都是admin或者administrater,在这种情况下,只需要指定账号,挂密码字典破解即可,因此在同样的时间内破解成功率会大大增加。验证码的作用由于计算机的自动化特征,利用计算机程序可以高效率的进行在线密码破解、批量注册、刷票等活动。验证码(CAPTCHA)是“CompletelyAutomatedPublicTuringtesttotellComputersandHumansApart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。验证码的作用是用于防止恶意破解密码、刷票、论坛自动刷广告、恶意搜索等。比如,暴力密码破解工具Hydra、攻击web应用程序的集成平台BurpSuite等都可以自动化的针对Web系统的账号进行口令破解。数据库搜索会消耗大量的服务器资源,对网站的搜索功能进行恶意滥用可以导致网站出现拒绝服务。使用验证码则可以在很大程度上避免出现利用计算机进行自动化的攻击。验证码只是为了解决机器问题才诞生的,在设计和验证码演化的过程中,必须同时考虑安全性和体验。验证码的关键点在于:生成的问题能够由人来解答,并且机器难于解答。验证码的工作过程验证码的工作过程一般如下所示,其中启动Session的作用一是防止没有启动会话的终端进行暴力破解,二是可以将验证码等信息保存在Session中以备验证:客户端打开含有验证码的网页;服务端启动会话(Session),同时生成一个随机验证码,并把验证码、当前时间等信息保存在该Session中以备验证;验证码绘图并在客户端显示;客户端提交验证码;服务端验证Session是否存在、验证码是否正确,以及时间是否超时等;服务器端返回验证结果,销毁当前Session。如果验证失败,需要刷新验证码。使用验证码需要注意以下几个问题验证码需要在服务器端生成,而绝不能在客户端用JavaScript代码生成,或者由服务器端生成后发送到客户端使用JavaScript验证。验证码需要设置恰当的生存期,以避免验证码被复用。同样的原因,验证码使用结束后需要销毁验证码Session。验证码不能太简单,否则容易被光学字符识别技术(OpticalCharacterRecognition,OCR)、机器学习技术等识别。最后,需要对验证码进行严密的测试,以避免逻辑错误、验证其正确性、实效性、具有恰当生存期,且自动识别率低。验证码面临的挑战目前,简单的图形验证码已经无法满足验证需要,在当前不断发展的OCR技术、机器学习识别技术面前越来越容易失守。比如使用开源的Tesseract识别数字和英文字符,识别率可以达到90%。2017年,谷歌的语音验证码系统reCaptcha被马里兰大学的四位研究人员设计的unCaptcha的工具破解,准确率高达85%。另外,有些验证码系统设计的识别过于困难,也给正常使用带来了困扰,以至于谷歌在reCaptchav3版本放弃了图片验证码。验证码需要在破解难度和用户体验之间寻求一个平衡点。【任务12-1】Web登录密码破解测试在本任务,使用开源的密码破解工具Hydra进行Web登录密码破解测试,测试对象为项目11的登录功能页面。Hydra是著名黑客组织THC发布的一款暴力密码破解工具,可以在线破解多种密码。其下载地址为https:///maaaaz/thc-hydra-windows12-1-1准备工作解压Hydra压缩包并测试是否可以正确运行获得Hydra的运行参数准备用户字典和密码字典12-1-2测试实施Hydra使用的是命令行方式进行密码暴力破解。因此,测试过程需要构造命令行的参数。本测试的完整命令为:hydra-Laccounts.txt-Ppasswds.txt-vV-t1-fhttp-post-form"/csrf/check_login_mysqli.php:username=^USER^&passwd=^PASS^&Submit=Submit:alert"从破解过程可发现,Hydra成功破解得到账号为admin,密码为admin12312-1-3测试分析以上Web登录密码的在线暴力破解过程和结果表明,如果对登录过程不进行人机识别验证,则存在巨大的风险。本测试主要用于演示并说明在线暴力破解的危害,因此使用的字典文件都比较简单。有很多专业的字典如彩虹表(rainbowtable),则可以用于暴力破解账号和密码较为复杂的网站。如果在登录表单中增加一个字符验证码,则Hydra之类的在线破解工具则丧失了用武之地。因为Hydra不能正确的提交字符验证码,也就无法通过Web服务器的检验。【任务12-2】建立验证码登录验证的网站在本任务,在项目11的基础上,建立一个包含验证码的功能的网站,并进行测试。12-2-1准备工作在Apache的网站根目录C:\Apache24\htdocs\下新建一个文件夹vericode作为本项目的网站目录,本项目使用的数据库不需要另外建立。将项目11的csrf目录下所有网页复制到C:\Apache24\htdocs\vericode目录下。这样,本网站具备了SQL注入攻击防护、Session欺骗防护、XSS跨站攻击防护和CSRF跨站攻击防护的功能12-2-2任务实现创建生成验证码的网页在登录网页加入验证码功能验证码检查验证码核对12-2-3验证码的功能测试验证码大家都使用过,因此在这里就不再对其使用进行过多的涉及。验证码功能的检测主要包括:有效性、实效性和避免重复使用。有效性是指正确的验证码可以通过检验、错误的不能通过检验;实效性是指超过规定时间验证码将不能继续使用;避免重复使用是指上一次出现的验证码,这次不能继续使用。使用了验证码的登录界面如图12-5所示。请自行验证验证码的有效性、实效性和避免重复使用的要求是否得到满足。12-2-4测试分析从以上验证码的使用过程可以发现,由于验证码难以被程序自动识别,因此使用验证码可以有效的防止自动化账号破解工具的攻击。但是,现在的OCR技术水平已经发展到一个较高的层次,简单的验证码根本无法对抗OCR正确的将图像翻译成文字。例如,多款12306铁路购票的抢票软件,就是使用了OCR技术识别验证码,从而绕过车票查询验证码的限制。由于短信验证码使用了不同的渠道,因此OCR识别技术失去了用武之地。但其缺点是,一方面短信验证码需要收费,另一方面,如果对网站的短信验证码接口发送手机号码进行重放攻击,会导致大量发送恶意短信。本项目实现的验证码功能比较简单,无法应对OCR技术、机器学习识别技术,要做好验证码设计技术是一件不太容易的事情。现在比较领先的验证码技术,包括阿里云采用的图片滑动验证、谷歌采用的reCAPTCHA等。Web程序设计人员需要掌握的是如何在Web项目中集成验证码功能。【项目总结】从Web登录密码破解的测试过程发现,没有人机验证机制的登录是非常不安全的。

温馨提示

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

评论

0/150

提交评论