第8章:Web攻击及防御技术讲解课件

第第8 8章章 WebWeb攻击及防御技术攻击及防御技术本章内容安排本章内容安排o8.1Web安全概述安全概述o8.2Web服务器指纹识别服务器指纹识别o8.3Web页面盗窃及防御页面盗窃及防御o8.4跨站脚本攻击及防御跨站脚本攻击及防御o8.5SQL注入攻击及防御注入攻击及防御o8.6GoogleHackingo8.7网页验证码网页验证码o8.8防御防御Web攻击攻击o8.9小结小结2024/7/12网络入侵与防范讲义28.1Web安全概述安全概述o在在Internet大众化及大众化及Web技术飞速演变的技术飞速演变的今天,在线安全所面临的挑战日益严峻伴今天,在线安全所面临的挑战日益严峻伴随着在线信息和服务的可用性的提升,以及随着在线信息和服务的可用性的提升,以及基于基于Web的攻击和破坏的增长,安全风险的攻击和破坏的增长,安全风险达到了前所未有的高度达到了前所未有的高度oWeb安全可以从以下三个方面进行考虑:安全可以从以下三个方面进行考虑:nWeb服务器的安全nWeb客户端的安全nWeb通信信道的安全2024/7/12网络入侵与防范讲义3Web服务器的安全服务器的安全o针对针对Web服务器的攻击可以分为两类:服务器的攻击可以分为两类:n一是利用Web服务器的漏洞进行攻击,如IIS缓冲区溢出漏洞利用、目录遍历漏洞利用等;n二是利用网页自身的安全漏洞进行攻击,如SQL注入,跨站脚本攻击等。
2024/7/12网络入侵与防范讲义4Web服务器的安全服务器的安全(2)o针对针对Web服务器具体的安全威胁主要体现在以下几个服务器具体的安全威胁主要体现在以下几个方面:方面:n服务器程序编写不当导致的缓冲区溢出(Buffer Overflow)并由此导致远程代码执行n针对服务器系统的拒绝服务攻击(Denial of Service)n脚本程序编写不当、过滤不严格造成的数据库查询语句注入(SQL Injection),可能引起信息泄漏、文件越权下载、验证绕过、远程代码执行等n乐观相信用户输入、过滤不严导致跨站脚本攻击(Cross Site Script),在欺骗管理员的前提下,通过精心设计的脚本获得服务端Shell2024/7/12网络入侵与防范讲义5Web客户端的安全客户端的安全oWeb应用的迅速普及,客户端交互能力获应用的迅速普及,客户端交互能力获得了极为充分的发挥,客户端的安全也成为得了极为充分的发挥,客户端的安全也成为Web安全的焦点问题安全的焦点问题oJavaApplet、ActiveX、Cookie等技等技术大量被使用,当用户使用浏览器查看、编术大量被使用,当用户使用浏览器查看、编辑网络内容时,采用了这些技术的应用程序辑网络内容时,采用了这些技术的应用程序会自动下载并在客户机上运行,如果这些程会自动下载并在客户机上运行,如果这些程序被恶意使用,可以窃取、改变或删除客户序被恶意使用,可以窃取、改变或删除客户机上的信息。
机上的信息2024/7/12网络入侵与防范讲义6Web客户端的安全客户端的安全(2)o浏览网页所使用的浏览器存在众多已知或者浏览网页所使用的浏览器存在众多已知或者未知的漏洞,攻击者可以写一个利用某个漏未知的漏洞,攻击者可以写一个利用某个漏洞的网页,并挂上木马,当用户访问了这个洞的网页,并挂上木马,当用户访问了这个网页之后,就中了木马这就是网页木马,网页之后,就中了木马这就是网页木马,简称网马简称网马o同时,跨站脚本攻击同时,跨站脚本攻击(XSS)对于客户端的安对于客户端的安全威胁同样无法忽视,利用全威胁同样无法忽视,利用XSS的的Web蠕蠕虫已经在网络中肆虐过虫已经在网络中肆虐过2024/7/12网络入侵与防范讲义7Web通信信道的安全通信信道的安全o和其他的和其他的Internet应用一样,应用一样,Web信道同信道同样面临着网络嗅探样面临着网络嗅探(Sniffer)和以拥塞信道、和以拥塞信道、耗费资源为目的的拒绝服务攻击耗费资源为目的的拒绝服务攻击(DenialofService)的威胁2024/7/12网络入侵与防范讲义88.1Web安全概述安全概述oOWASP的调查结果显示,对的调查结果显示,对Web应用危害较大的安应用危害较大的安全问题分别是:全问题分别是:n未验证参数n访问控制缺陷n账户及会话管理缺陷n跨站脚本攻击n缓冲区溢出n命令注入n错误处理n远程管理nWeb服务器及应用服务器配置不当2024/7/12网络入侵与防范讲义92024/7/12网络入侵与防范讲义108.2Web服务器指纹识别服务器指纹识别o8.2.1指纹识别理论指纹识别理论o8.2.2Web服务器指纹介绍服务器指纹介绍o8.2.3Web服务器服务器Banner信息获取信息获取o8.2.4模糊模糊Web服务器服务器Banner信息信息o8.2.5Web服务器协议行为服务器协议行为o8.2.6Http指纹识别工具指纹识别工具8.2.1指纹识别理论指纹识别理论o指纹的定义是这样的:指纹的定义是这样的:n一是指任何表面上的指尖印象或者是在指尖上蘸上墨水而在纸上留下的墨水印象;n二是指可以用来识别的东西:如特色、痕迹或特性等揭露起源的东西,表示物体或物质的特色的证据。
2024/7/12网络入侵与防范讲义11指纹识别理论指纹识别理论(2)o指纹识别可以分为两步:指纹识别可以分为两步:n第一步是对指纹进行收集和分类;n第二步是将未知的指纹同被储存在数据库中的指纹进行比较,从而找出最符合的2024/7/12网络入侵与防范讲义12指纹识别理论指纹识别理论(3)o当采集指纹的时候,对物体的所有主要特性当采集指纹的时候,对物体的所有主要特性的抓取是必要的采集较多的细节,可以对的抓取是必要的采集较多的细节,可以对指纹识别的第二步产生很大的帮助指纹识别的第二步产生很大的帮助o当比较指纹的时候,很有可能有几个指纹是当比较指纹的时候,很有可能有几个指纹是被不合适匹配的,因为可指纹之间微小的差被不合适匹配的,因为可指纹之间微小的差别很容易使识别产生错误,这也要求指纹识别很容易使识别产生错误,这也要求指纹识别需要很高的技术别需要很高的技术2024/7/12网络入侵与防范讲义132024/7/12网络入侵与防范讲义148.2.2Web服务器指纹介绍服务器指纹介绍oWeb服务器指纹:这个概念应用在服务器指纹:这个概念应用在Web服务服务器上,就是通过对服务器上的器上,就是通过对服务器上的HTTP应用程序应用程序安装和配置等信息进行远程刺探,从而了解远安装和配置等信息进行远程刺探,从而了解远程程Web服务器的配置信息,然后根据不同版服务器的配置信息,然后根据不同版本的本的Web服务器进行有目的的攻击。
服务器进行有目的的攻击o这一步骤是这一步骤是web应用攻击的基础过程应用攻击的基础过程Web服务器指纹介绍服务器指纹介绍(2)oHttp指纹识别的原理大致上也是相同的:记录指纹识别的原理大致上也是相同的:记录不同服务器对不同服务器对Http协议执行中的微小差别进行协议执行中的微小差别进行识别oHttp指纹识别比指纹识别比TCP/IP堆栈指纹识别复杂许堆栈指纹识别复杂许多,理由是定制多,理由是定制Http服务器的配置文件、增加服务器的配置文件、增加插件或组件使得更改插件或组件使得更改Http的响应信息变的很容的响应信息变的很容易,这样使得识别变的困难;然而定制易,这样使得识别变的困难;然而定制TCP/IP堆栈的行为需要对核心层进行修改,堆栈的行为需要对核心层进行修改,所以就容易识别所以就容易识别2024/7/12网络入侵与防范讲义152024/7/12网络入侵与防范讲义168.2.3Web服务器服务器Banner信息获取信息获取oBanner:旗标,或标头这里指获取:旗标,或标头这里指获取web服务器的版本、欢迎语或其它提示信服务器的版本、欢迎语或其它提示信息,以找出可能的有利于攻击的内容。
息,以找出可能的有利于攻击的内容o我们可以通过一个我们可以通过一个TCP客户端比如客户端比如NetCat(NC)或者或者telnet与与web服务器进服务器进行连接,并查看返回的应答信息行连接,并查看返回的应答信息o例如:使用例如:使用telnet连接连接80端口,然后发送端口,然后发送get命令来得到响应信息,比如下页的例子命令来得到响应信息,比如下页的例子2024/7/12网络入侵与防范讲义17telnet到到80端口获得指纹信息端口获得指纹信息oC:80Geto返回结果:返回结果:HTTP/1.1400BadRequestServer:Microsoft-IIS/5.0Date:Fri,05Sep200302:57:39GMTContent-Type:text/htmlContent-Length:87ErrorTheparameterisincorrect.2024/7/12网络入侵与防范讲义18telnet到到80端口获得指纹信息端口获得指纹信息(2)o注意到下划线标记的信息,很清楚的告诉我注意到下划线标记的信息,很清楚的告诉我们运行的们运行的web服务器版本是服务器版本是Microsoft-IIS/5.0。
2024/7/12网络入侵与防范讲义198.2.3Web服务器服务器Banner信息获取信息获取o那么我们能否得到更多的信息呢?不同的那么我们能否得到更多的信息呢?不同的web服务器版本信息有什么不同?服务器版本信息有什么不同?o下面再以下面再以NetCat(“瑞士军刀瑞士军刀”)为例,)为例,探测探测网站的网站的Banner信息,信息,参数为:参数为:Options*http/1.12024/7/12网络入侵与防范讲义20获得获得Apache2.0.x指纹指纹osh-2.05b#80OPTIONS*HTTP/1.1Host:HTTP/1.1200OKDate:Fri,05Sep200302:08:45GMTServer:Apache/2.0.40(RedHatLinux)Allow:GET,HEAD,POST,OPTIONS,TRACEContent-Length:0Content-Type:text/plain;charset=ISO-8859-12024/7/12网络入侵与防范讲义21不同服务器的指纹比较不同服务器的指纹比较o通过通过Apache2.0.x和和IIS5.0指纹的比较,指纹的比较,能够很清楚判断出不同服务器返回的信息能够很清楚判断出不同服务器返回的信息的不同。
的不同o当攻击者获得了这些指纹信息后,就可以当攻击者获得了这些指纹信息后,就可以针对不同的服务器,利用它们的漏洞进行针对不同的服务器,利用它们的漏洞进行有目的的攻击了有目的的攻击了2024/7/12网络入侵与防范讲义228.2.4模糊模糊Web服务器服务器Banner信息信息o为了防范查看为了防范查看Http应答头信息来识别应答头信息来识别Http指纹的行为,可以选择通过下面两种方法来指纹的行为,可以选择通过下面两种方法来更改或者是模糊服务器的更改或者是模糊服务器的Banner信息:信息:n自定义Http应答头信息n增加插件o这样设置可以自动的阻止很多对这样设置可以自动的阻止很多对Http服务服务器的攻击,有时也可以误导攻击者器的攻击,有时也可以误导攻击者2024/7/12网络入侵与防范讲义23自定义自定义HTTP应答头信息应答头信息o要让服务器返回不同的要让服务器返回不同的Banner信息的设置信息的设置是很简单的,象是很简单的,象Apache这样的开放源代码这样的开放源代码的的Http服务器,用户可以在源代码里修改服务器,用户可以在源代码里修改Banner信息,然后重起信息,然后重起Http服务就生效服务就生效了。
了o对于没有公开源代码的对于没有公开源代码的Http服务器比如微服务器比如微软的软的IIS或者是或者是Netscape,可以在存放,可以在存放Banner信息的信息的Dll文件中修改文件中修改2024/7/12网络入侵与防范讲义24自定义自定义HTTP应答头信息应答头信息实例实例o下面就是一个被自定义下面就是一个被自定义Banner信息的信息的Http服务器的例子,服务器的例子,Apache服务器被自定义成了服务器被自定义成了未知服务器:未知服务器:Http/1.1403ForbiddenDate:Mon,08Sep200302:41:27GMTServer:Unknown-Webserver/1.0Connection:closeContent-Type:text/html;charset=iso-8859-12024/7/12网络入侵与防范讲义25使用插件使用插件o另一种模糊另一种模糊Banner信息的方法是使用插件,这些插件信息的方法是使用插件,这些插件可以提供自定义的可以提供自定义的Http应答信息应答信息o比如比如ServerMask这个商业软件就可以提供这样的功这个商业软件就可以提供这样的功能,它是能,它是IIS服务器的一个插件,服务器的一个插件,ServerMask不仅不仅模糊了模糊了Banner信息,而且会对信息,而且会对Http应答头信息里的应答头信息里的项的序列进行重新组合,从而来模仿项的序列进行重新组合,从而来模仿Apache这样的服这样的服务器,它甚至有能力扮演成任何一个务器,它甚至有能力扮演成任何一个Http服务器来处服务器来处理每一个请求。
理每一个请求o这个软件可以在以下地址找到:这个软件可以在以下地址找到:Http:/ nWeb服务器存储并允许把用户的输入显示在返回给终端用户的页面上,而这个回显并没有去除非法字符或者重新进行编码 o实现跨站脚本的攻击至少需要两个条件:实现跨站脚本的攻击至少需要两个条件:n需要存在跨站脚本漏洞的web应用程序;n需要用户点击连接或者是访问某一页面2024/7/12网络入侵与防范讲义708.4.2跨站脚本攻击过程跨站脚本攻击过程o寻找寻找XSS漏洞漏洞o注入恶意代码注入恶意代码o欺骗用户访问欺骗用户访问2024/7/12网络入侵与防范讲义71步骤一:寻找步骤一:寻找XSS漏洞漏洞o我们浏览的网页全部都是基于超文本标记语言我们浏览的网页全部都是基于超文本标记语言(HTML)创建的,如显示一个超链接:)创建的,如显示一个超链接:nbaiduoXSS攻击正是通过向攻击正是通过向HTML代码中注入恶意的脚本代码中注入恶意的脚本实现的,实现的,HTML指定了脚本标记为:指定了脚本标记为:2024/7/12网络入侵与防范讲义72寻找寻找XSS漏洞漏洞(2)o在没有过滤字符的情况下,只需要保持完整无错的在没有过滤字符的情况下,只需要保持完整无错的脚本标记即可触发脚本标记即可触发XSS。
假如我们在某个资料表单假如我们在某个资料表单提交内容,表单提交内容就是某个标记属性所赋的提交内容,表单提交内容就是某个标记属性所赋的值,我们可以构造如下值来闭和标记来构造完整无值,我们可以构造如下值来闭和标记来构造完整无错的脚本标记:错的脚本标记:nalert(XSS);“2024/7/12网络入侵与防范讲义73寻找寻找XSS漏洞漏洞(3)o把这个内容赋值给前面把这个内容赋值给前面标记的标记的href属属性,则结果形成了性,则结果形成了alert(XSS);baidu2024/7/12网络入侵与防范讲义74寻找寻找XSS漏洞漏洞(4)o假如要在网页里显示一张图片,那么就要使假如要在网页里显示一张图片,那么就要使用用标记,示例如下:标记,示例如下:no浏览器的任务就是解释这个浏览器的任务就是解释这个img标记,访问标记,访问src属性所赋的值中的属性所赋的值中的URL地址并输出图片地址并输出图片2024/7/12网络入侵与防范讲义75寻找寻找XSS漏洞漏洞(5)o问题来了!浏览器会不会检测问题来了!浏览器会不会检测src属性所赋属性所赋的值呢?答案是否!的值呢?答案是否!o那么我们就可以在这里大做文章了,接触过那么我们就可以在这里大做文章了,接触过javascript的同学应该知道,的同学应该知道,javascript有一个有一个URL伪协议,可以使用伪协议,可以使用“javascript:”这种协议说明符加上任意的这种协议说明符加上任意的javascript代码,当浏览器装载这样的代码,当浏览器装载这样的URL时,便会执行其中的代码。
时,便会执行其中的代码2024/7/12网络入侵与防范讲义76寻找寻找XSS漏洞漏洞(6)o于是我们就得出了一个经典的于是我们就得出了一个经典的XSS示例:示例:no把这个代码存储为把这个代码存储为1.htm,用,用IE浏览,会浏览,会弹出一个由弹出一个由javascript调用的对话框调用的对话框2024/7/12网络入侵与防范讲义77寻找寻找XSS漏洞漏洞(7)o在寻找在寻找XSS漏洞时,如果能看到源代码,我们主要看漏洞时,如果能看到源代码,我们主要看代码里对用户输入的地方和变量有没有做长度限制和对代码里对用户输入的地方和变量有没有做长度限制和对”、”;”和和”等字符是否做过滤等字符是否做过滤o还需要注意的是对于标签的闭合,有的时候,你输入还需要注意的是对于标签的闭合,有的时候,你输入alert(test),代码是不会被,代码是不会被执行的,因为在源代码里,有其它的标签未闭合,例如执行的,因为在源代码里,有其它的标签未闭合,例如少了一个少了一个o这个时候,你只要闭合一个这个时候,你只要闭合一个,代码就会执,代码就会执行,如你输入:行,如你输入:alert(test),这样就可以弹出一个这样就可以弹出一个test的框。
的框2024/7/12网络入侵与防范讲义78步骤二:注入恶意代码步骤二:注入恶意代码o注入恶意代码的目的是:当被欺骗者访问了注入恶意代码的目的是:当被欺骗者访问了含有这段恶意代码的网页时,能实现你的攻含有这段恶意代码的网页时,能实现你的攻击目的o例如,通过这些恶意代码,将访问者的例如,通过这些恶意代码,将访问者的Cookie信息发到远端攻击者手中,或者是信息发到远端攻击者手中,或者是提升用户的论坛权限、上传任意文件等提升用户的论坛权限、上传任意文件等2024/7/12网络入侵与防范讲义79注入恶意代码注入恶意代码(2)o例如,把例如,把cookie发到远程的发到远程的javascript代码代码可以这样写:可以这样写:njavascript:window.location=http:/ 同意词n.单一的通配符n*通配符,可代表多个字母n 精确查询8.6.2GoogleHacking的实际应用的实际应用o利用利用“indexof”来查找开放目录浏览的站来查找开放目录浏览的站点点n比如,在Google中搜索“intitle:”index of”passwd”,其中一个链接打开之后,显示的内容如下页所示。
npasslist.txt中存放的就是所有的账号和密码,点击即可以打开浏览而admin.mdb也可以下载8.6.2GoogleHacking的实际应用的实际应用8.6.2GoogleHacking的实际应用的实际应用o搜索指定漏洞程序搜索指定漏洞程序n例如ZeroBoard前段时间被发现一个文件代码泄露的漏洞,可以用Google来寻找网上使用这套程序的站点在Google中输入“intext:ZeroBoard filetype:php”或“inurl:outlogin.php?_zb_path=site:.jp”来寻找所需要的页面nphpMyAdmin是一套功能强大的数据库操作软件,一些站点由于配置失误,导致用户可以不使用密码直接对phpMyAdmin进行建立、复制、删除等操作,我们可以用“intitle:phpmyadmin intext:Create new database”来搜索存在这样漏洞的程序网址8.6.2GoogleHacking的实际应用的实际应用o查找有跨站脚本漏洞的站点:查找有跨站脚本漏洞的站点:nallinurl:/scripts/cart32.exenallinurl:/CuteNews/show_archives.phpnallinurl:/phpinfo.phpo查找有查找有SQL注入漏洞的站点:注入漏洞的站点:nallinurl:/privmsg.php8.6.2GoogleHacking的实际应用的实际应用o下面以下面以站点为例,介绍如何利用站点为例,介绍如何利用Google进行一次完整入侵过程。
进行一次完整入侵过程o首先,用首先,用Google查看这个站点的基本情况查看这个站点的基本情况n在Google中输入:site:n从返回的信息中,找到几个相关的域名,假设为http:/、http:/、http:/、http:/o然后,使用然后,使用Ping命令对这几个域名进行测试,查命令对这几个域名进行测试,查看它们是否使用的是同一个服务器看它们是否使用的是同一个服务器8.6.2GoogleHacking的实际应用的实际应用o接下来,在接下来,在Google中输入中输入site:filetype:doc,看看是否有比较有用的,看看是否有比较有用的doc文档文档资料o查找网站的管理后台地址输入:查找网站的管理后台地址输入:nsite: intext:管理nsite: inurl:loginnsite: intitle:管理n假设获得2个管理后台地址:http:/ filetype:aspnsite: filetype:phpnsite: filetype:aspx nsite: filetype:asp n.n假设探测到a2服务器用的是IIS,上面用的是ASP的整站程序,还有一个PHP的论坛,a3服务器也是IIS,使用的是ASPX+ASP。
o既然是论坛,看看有没有公共的既然是论坛,看看有没有公共的FTP帐号之类:帐号之类:nsite: intext:ftp:/*:*8.6.2GoogleHacking的实际应用的实际应用o如果没找到什么有价值的东西,再看看有没有上传的漏洞:如果没找到什么有价值的东西,再看看有没有上传的漏洞:nsite: inurl:file nsite: inurl:load n假设在a2上发现一个上传文件的页面http:/ filetype:asp n得到几个ASP页面的地址,使用软件进行注入n此外,我们还可以使用site: intext:*获取一些邮件地址,以及邮箱主人的名字;n使用 site: intext:电话 来获得一些电话o把搜集到的这些信息做个字典,用暴力软件进行破解,得到几个把搜集到的这些信息做个字典,用暴力软件进行破解,得到几个用户名和密码,即可进行登录了剩下的其它入侵行为,在此不用户名和密码,即可进行登录了剩下的其它入侵行为,在此不再赘述8.7网页验证码攻击网页验证码攻击2024/7/12网络入侵与防范讲义136o8.7.1网页验证码概述网页验证码概述o8.7.2验证码技术验证码技术o8.7.3验证码识别工具演示验证码识别工具演示o8.7.4防范验证码攻击防范验证码攻击8.4.1网页验证码概述网页验证码概述o验证码技术属于人机区分问题,这在英文中验证码技术属于人机区分问题,这在英文中称为称为CAPTCHA,它是是,它是是CompletelyAutomatedPublicTuringTesttoTellComputersandHumansApart(全自动区分计算机和人类的图灵测试全自动区分计算机和人类的图灵测试)的简的简称。
称o验证码技术的主要思想是对验证码字体和背验证码技术的主要思想是对验证码字体和背景进行处理,使得信息提交过程必须通过人景进行处理,使得信息提交过程必须通过人为参与完成为参与完成2024/7/12网络入侵与防范讲义137网页验证码概述网页验证码概述(2)o在现实中,我们接触的最多的人机区分的实在现实中,我们接触的最多的人机区分的实际应用可能就是在网络上到处都可遇到的各际应用可能就是在网络上到处都可遇到的各种验证码种验证码o一般的,验证码是一幅显示几个阿拉伯数字、一般的,验证码是一幅显示几个阿拉伯数字、英文字母或者汉字的静态图片,图片中加入英文字母或者汉字的静态图片,图片中加入一些干扰像素,要求用户识别其中的字符从一些干扰像素,要求用户识别其中的字符从而达到人机区分的安全控制目的而达到人机区分的安全控制目的2024/7/12网络入侵与防范讲义138网页验证码概述网页验证码概述(4)o随着网络论坛以及各类交互式网站的日益火爆,随着网络论坛以及各类交互式网站的日益火爆,网上出现了越来越多自动灌水机、广告机、论网上出现了越来越多自动灌水机、广告机、论坛自动注册机、用户密码破解机等软件坛自动注册机、用户密码破解机等软件。
o这些软件有的是针对某个网站而设计开发的,这些软件有的是针对某个网站而设计开发的,有的则整合数个网站于一体,拥有注册、登陆、有的则整合数个网站于一体,拥有注册、登陆、发帖、回复等网站提供给用户的功能发帖、回复等网站提供给用户的功能o比较优秀的多功能自动软件有非免费的比较优秀的多功能自动软件有非免费的“发帖发帖之神之神II”等代表作等代表作2024/7/12网络入侵与防范讲义139网页验证码概述网页验证码概述(5)o为了确保用户提交的请求是在线进行的正常为了确保用户提交的请求是在线进行的正常操作,越来越多的网站都采用了验证码技术,操作,越来越多的网站都采用了验证码技术,防止用户使用程序自动机进行自动提交注入,防止用户使用程序自动机进行自动提交注入,以保证服务器系统的稳定和用户信息的安全,以保证服务器系统的稳定和用户信息的安全,避免服务器交互处理遭受不必要的攻击避免服务器交互处理遭受不必要的攻击o验证码的作用主要有防止暴力破解,防止恶验证码的作用主要有防止暴力破解,防止恶意灌水,防止自动提交等意灌水,防止自动提交等2024/7/12网络入侵与防范讲义140网页验证码概述网页验证码概述(6)o虽然现在有些技术可以绕过部分的验证码,虽然现在有些技术可以绕过部分的验证码,但使用验证码技术,也还是对攻击有一定的但使用验证码技术,也还是对攻击有一定的制约作用,并且主要的对网站的信息安全还制约作用,并且主要的对网站的信息安全还是起到了显著的保护屏障的作用。
是起到了显著的保护屏障的作用2024/7/12网络入侵与防范讲义1418.4.2验证码技术验证码技术o基于表单自动提交的基于表单自动提交的HTTP攻击攻击o基于验证码的表单提交流程基于验证码的表单提交流程o验证码的有效性验证码的有效性o验证码的类型验证码的类型2024/7/12网络入侵与防范讲义142基于表单自动提交的基于表单自动提交的HTTP攻击攻击o互联网上涉及到用户交互的很多操作(如注互联网上涉及到用户交互的很多操作(如注册、登录、发贴等)都是用提交表单的方式册、登录、发贴等)都是用提交表单的方式实现的o根据根据HTTP协议,攻击者可以编写程序模拟协议,攻击者可以编写程序模拟表单提交的方式,将非正常的数据向网站服表单提交的方式,将非正常的数据向网站服务器自动、快速提交,这就构成了基本的基务器自动、快速提交,这就构成了基本的基于表单自动提交的于表单自动提交的HTTP攻击2024/7/12网络入侵与防范讲义143基于表单自动提交的基于表单自动提交的HTTP攻击攻击(2)o如图所示,其中,虚线表示攻击者的数据自动如图所示,其中,虚线表示攻击者的数据自动提交方式提交方式2024/7/12网络入侵与防范讲义144基于表单自动提交的基于表单自动提交的HTTP攻击攻击(3)o这种简单的这种简单的HTTP攻击可能会导致以下四种攻击可能会导致以下四种安全问题:安全问题:n(1)攻击者可以在短时间内注册大量的Web服务账户。
这不但会占用大量的服务器及数据库资源,攻击者还可能使用这些账户为其他用户制造麻烦,如发送垃圾邮件或通过同时登录多个账户来延缓服务速度等;2024/7/12网络入侵与防范讲义145基于表单自动提交的基于表单自动提交的HTTP攻击攻击(4)n(2)攻击者可以通过反复登录来暴力破解用户密码,导致用户隐私信息的泄漏;n(3)攻击者可以在论坛中迅速发表成千上万的垃圾帖子,严重影响系统性能,甚至导致服务器崩溃;n(4)攻击者可对系统实施SQL注入或其它脚本攻击,从而窃取管理员密码,查看、修改服务器本地文件,对系统安全造成极大威胁2024/7/12网络入侵与防范讲义146基于验证码的表单提交流程基于验证码的表单提交流程o为了防止攻击者利用程序自动注册、登录、发为了防止攻击者利用程序自动注册、登录、发帖,验证码技术日益得到广泛的应用帖,验证码技术日益得到广泛的应用o基于验证码的表单提交流程如图所示基于验证码的表单提交流程如图所示2024/7/12网络入侵与防范讲义147基于验证码的表单提交流程基于验证码的表单提交流程(2)o这种流程多了图片验证码的生成与验证机制这种流程多了图片验证码的生成与验证机制o所谓验证码,所谓验证码,又称又称“附加码附加码”,就是一串随就是一串随机产生的字符串。
服务器端将随机产生的验机产生的字符串服务器端将随机产生的验证码写到内存中,同时以某种形式展现给用证码写到内存中,同时以某种形式展现给用户,用户在提交表单时必须同时填写验证码,户,用户在提交表单时必须同时填写验证码,如果与服务器端保存的字符串相同如果与服务器端保存的字符串相同(即验证即验证成功成功),才能继续操作;否则,用户将无法,才能继续操作;否则,用户将无法使用后续的功能使用后续的功能2024/7/12网络入侵与防范讲义148基于验证码的表单提交流程基于验证码的表单提交流程(3)o由于验证码是随机产生的字符串,每次请求都由于验证码是随机产生的字符串,每次请求都会发生变化,攻击者难于猜测其具体内容且无会发生变化,攻击者难于猜测其具体内容且无法穷举,模拟表单提交时便很难正确填写并通法穷举,模拟表单提交时便很难正确填写并通过验证,这样就实现了阻挡攻击的目的过验证,这样就实现了阻挡攻击的目的2024/7/12网络入侵与防范讲义149验证码的有效性验证码的有效性o验证码流程的有效性基于以下两个很重要的验证码流程的有效性基于以下两个很重要的假设:假设:n假设1:用户可以收到并了解验证码;n假设2:攻击者的自动程序无法了解验证码。
o这二者必须同时成立因为:这二者必须同时成立因为:n如果用户不能了解验证码,那么将无法完成提交动作;n如果可以编写程序自动获取验证码,那么攻击者就能够通过验证过程,实现攻击行为2024/7/12网络入侵与防范讲义150验证码的类型验证码的类型o当前互联网上较为常见的验证码主要有以下几种:当前互联网上较为常见的验证码主要有以下几种:n文本验证码:在网页上以文本形式呈现给用户;n手机验证码:用户在网页上提交自己的手机号码,系统以短信形式将验证码发送到用户手机上;n邮件验证码:用户在网页上提交自己的电子邮箱,系统以e-mail形式将验证码发送到用户的邮箱中;n图片验证码:又称“验证水印”,在网页上以图片形式呈现给用户o尽管验证码对表单提交流程的安全起到了很尽管验证码对表单提交流程的安全起到了很重要的作用,但其自身的安全性却为很多网重要的作用,但其自身的安全性却为很多网站所忽略,以致成为新的安全隐患站所忽略,以致成为新的安全隐患2024/7/12网络入侵与防范讲义151文本验证码文本验证码o由于验证码内容会原原本本地写在用户浏览由于验证码内容会原原本本地写在用户浏览到的网页中,编写程序对到的网页中,编写程序对HTML文件进行一文件进行一定分析后,同样可以获知验证码内容。
定分析后,同样可以获知验证码内容o因此,文本验证码的安全性很差,因此,文本验证码的安全性很差,目前已经目前已经很少有网站采用这种形式很少有网站采用这种形式2024/7/12网络入侵与防范讲义152手机验证码手机验证码o由于需要查看手机才能知道验证码内容,攻击者通由于需要查看手机才能知道验证码内容,攻击者通常没有办法实现自动获取,因此,仅从验证码的角常没有办法实现自动获取,因此,仅从验证码的角度来说,这种方法可以较好地阻挡攻击者度来说,这种方法可以较好地阻挡攻击者o手机验证码的问题主要存在两点:手机验证码的问题主要存在两点:n受移动运营商短信网关的限制,有时会导致用户无法收到短信,从而使假设1不成立;n可能造成对手机的DoS攻击:将指定手机号用于接收验证码,编写程序不断向服务器提交请求,就会使该手机不断收到验证码短信,对用户造成骚扰,甚至导致手机死机等后果2024/7/12网络入侵与防范讲义153邮件验证码邮件验证码o这种形式的验证码仅仅比文本验证码的安全这种形式的验证码仅仅比文本验证码的安全性略高,但仍然不能保证基本的安全性原性略高,但仍然不能保证基本的安全性原因有两点:因有两点:n依赖于邮件服务器,可能在大量邮件中,验证码邮件被淹没,或被防火墙过滤。
n与手机验证码相似,攻击者可以利用这种方式向被攻击者的电子邮箱发起DoS攻击,导致被攻击者的邮箱充满相关垃圾邮件,无法接收新邮件2024/7/12网络入侵与防范讲义154图片验证码图片验证码新浪新浪动网论坛动网论坛腾讯腾讯Discuz论坛论坛2024/7/12网络入侵与防范讲义155图片验证码图片验证码(2)o图像验证码又称图像验证码又称“验证水印验证水印”,在网页上以图片形,在网页上以图片形式呈现其实现是通过算法加入各种难点,生成一式呈现其实现是通过算法加入各种难点,生成一幅需要用户识别的图片幅需要用户识别的图片o经统计,验证码一般有以下的难点:经统计,验证码一般有以下的难点:n噪声n字体n字符出现位置 n字符个数 n英文字母大小写 n字符高宽度 n其它2024/7/12网络入侵与防范讲义156噪声噪声o整体背景干净;或有一些简单的单个或多个整体背景干净;或有一些简单的单个或多个集团噪点集团噪点o整体背景基本干净;噪声为规划或不规则的整体背景基本干净;噪声为规划或不规则的线条,所在位置随机或不随机线条,所在位置随机或不随机o背景经过设计,有多种视觉效果;噪声为点背景经过设计,有多种视觉效果;噪声为点或者线条。
或者线条2024/7/12网络入侵与防范讲义157字体字体o字体端正,有明显横向的间隔字体端正,有明显横向的间隔o字体较端正,大多数有明显横向的间隔字体较端正,大多数有明显横向的间隔o字体宽窄不一字体宽窄不一o字体为各种扭曲、扭转、模糊、缺失、多态字体为各种扭曲、扭转、模糊、缺失、多态等特点,有横向的间隔等特点,有横向的间隔o字体为各种扭曲、扭转、模糊、缺失、多态字体为各种扭曲、扭转、模糊、缺失、多态等特点,字体重叠,或者上下有累叠,或者等特点,字体重叠,或者上下有累叠,或者上下有累叠使得横向无间隔上下有累叠使得横向无间隔2024/7/12网络入侵与防范讲义158自动识别图像验证码自动识别图像验证码o图像验证码的识别技术与图像处理、模式识别、图像验证码的识别技术与图像处理、模式识别、人工智能相关一般通用的算法框架如图所示人工智能相关一般通用的算法框架如图所示2024/7/12网络入侵与防范讲义159自动识别图像验证码自动识别图像验证码(2)o可以把识别的流程分为三个阶段:可以把识别的流程分为三个阶段:n预处理:彩色去噪、二值变换、黑白去噪n字符分割(图片分割)n字符识别:特征表示、建立模板库、识别2024/7/12网络入侵与防范讲义160彩色去噪彩色去噪o彩色去噪算法有多种选择,如彩色图像中值彩色去噪算法有多种选择,如彩色图像中值滤波、粗糙集理论的滤波、矢量滤波等等。
滤波、粗糙集理论的滤波、矢量滤波等等o但注意这些都是普适性的算法,在处理分辨但注意这些都是普适性的算法,在处理分辨率较低的验证码图片时可能会造成不希望的率较低的验证码图片时可能会造成不希望的损失,所以应加入自己的改造措施来避免对损失,所以应加入自己的改造措施来避免对于某些验证码的滤波损失于某些验证码的滤波损失o彩色去噪属于图像处理技术,如果对此感兴彩色去噪属于图像处理技术,如果对此感兴趣,可以自行学习相关技术趣,可以自行学习相关技术2024/7/12网络入侵与防范讲义161二值变换二值变换o二值变换是按照灰度转换公式把彩色二值变换是按照灰度转换公式把彩色bmp图像图像转换成灰度图像转换成灰度图像o二值变换也属于图像处理技术,请自行学习二值变换也属于图像处理技术,请自行学习2024/7/12网络入侵与防范讲义162黑白去噪黑白去噪o黑白去噪算法相对简单,对于某黑色的像素黑白去噪算法相对简单,对于某黑色的像素点,可以视其周围的白色象素点个数来判断点,可以视其周围的白色象素点个数来判断其是否为噪声其是否为噪声2024/7/12网络入侵与防范讲义163字符分割字符分割o如果验证码各字符的坐标位置和字符大小都如果验证码各字符的坐标位置和字符大小都是固定的,那么,只需截取指定起点位置、是固定的,那么,只需截取指定起点位置、指定长宽值的矩形区域与各模板逐个比对,指定长宽值的矩形区域与各模板逐个比对,匹配度最高的数字即为识别结果。
匹配度最高的数字即为识别结果o如果验证码各字符的位置不固定,那么可以如果验证码各字符的位置不固定,那么可以采用滑动窗口的办法:在指定区域内,滑动采用滑动窗口的办法:在指定区域内,滑动截取不同起点位置、指定长宽值的矩形,不截取不同起点位置、指定长宽值的矩形,不断与模板相比对,匹配度最高的数字即为识断与模板相比对,匹配度最高的数字即为识别结果,对应的起点位置则为字符的坐标别结果,对应的起点位置则为字符的坐标2024/7/12网络入侵与防范讲义164字符识别字符识别o识别算法一般依靠模板库建立模板库首先识别算法一般依靠模板库建立模板库首先进行特征提取,然后把该特征作为样本存储进行特征提取,然后把该特征作为样本存储在模板库中,提取的特征可以是在模板库中,提取的特征可以是0和和1字符字符串,也可以是映射直方图等等串,也可以是映射直方图等等o最后利用生成的模板库,进行基于匹配的识最后利用生成的模板库,进行基于匹配的识别过程2024/7/12网络入侵与防范讲义1658.7.3验证码识别工具演示验证码识别工具演示o下载地址:下载地址:http:/该工具可以识别较简该工具可以识别较简单的验证码,识别率单的验证码,识别率并非百分之百!并非百分之百!2024/7/12网络入侵与防范讲义1668.7.4防范验证码攻击防范验证码攻击o对基于验证码的表单提交流程,应该:对基于验证码的表单提交流程,应该:n任何时候,都不应当使用安全性很差的文本验证码;n应尽量不使用手机验证码、邮件验证码,以避免手机/邮件DoS攻击;n建议使用安全性较高的图片验证码。
2024/7/12网络入侵与防范讲义167防范验证码攻击防范验证码攻击(2)o事实上,对图片验证码的识别与光学字符识别事实上,对图片验证码的识别与光学字符识别(opticalcharacterrecognition,OCR)技术在技术在本质上是完全相同的而在本质上是完全相同的而在OCR领域,目前对印刷体领域,目前对印刷体(数字、西文字母,甚至汉字数字、西文字母,甚至汉字)的识别技术已经相当成熟的识别技术已经相当成熟因此,图片验证码面临的安全形势相当严峻因此,图片验证码面临的安全形势相当严峻o考虑到目前考虑到目前OCR技术中尚存在一些不够成熟的领域,技术中尚存在一些不够成熟的领域,如脱机手写体的识别、多语言文字混排的识别、退化严如脱机手写体的识别、多语言文字混排的识别、退化严重的文字识别等,建议在图片验证码的设计中,加强以重的文字识别等,建议在图片验证码的设计中,加强以下几方面的变化:扩展字符集下几方面的变化:扩展字符集(可以考虑用汉字作为字可以考虑用汉字作为字符集符集);随机变化字体和字符大小;随机设定字符的倾;随机变化字体和字符大小;随机设定字符的倾斜程度;随机设置字符坐标位置;增强背景混淆等。
斜程度;随机设置字符坐标位置;增强背景混淆等2024/7/12网络入侵与防范讲义168防范验证码攻击防范验证码攻击(3)o此外,应该着重设计那些程序难以区分的难此外,应该着重设计那些程序难以区分的难点:点:n巧妙的设计背景灰度,使得程序很难对背景与字符有效区分,但人眼却可以轻松分辨出灰度的差异;n避免字符左右规矩的排列,而应有一定的上下累叠,使得横向上没有办法简单的切割;n点状或者团状的噪声容易被程序识别,而特别设计的线条型噪声,自动识别程序就很难有效的去噪2024/7/12网络入侵与防范讲义169防范验证码攻击防范验证码攻击(4)o还可以加入更多的随机性:还可以加入更多的随机性:n字符位置随机出现以防止定制的切割;n字符字体大小的随机性;n字符的形态随机生成以降低匹配效果;nGIF动画图片是一个不错的想法,但完整字符的那幅图出现的时间应随机,避免固定的放在最后2024/7/12网络入侵与防范讲义170防范验证码攻击防范验证码攻击(5)o当然,根据前面讨论的有效性假设,在增强当然,根据前面讨论的有效性假设,在增强图片验证码安全性的同时,还要注意不能使图片验证码安全性的同时,还要注意不能使用户肉眼分辨过于困难。
用户肉眼分辨过于困难2024/7/12网络入侵与防范讲义1712024/7/12网络入侵与防范讲义1728.8防御防御Web攻击攻击o8.8.1Web服务器安全配置服务器安全配置o8.8.2Web浏览者的安全措施浏览者的安全措施o8.8.3Web安全需澄清的五个误解安全需澄清的五个误解2024/7/12网络入侵与防范讲义1738.8.1Web服务器安全配置服务器安全配置oWeb服务器为互联网用户提供服务的同时,服务器为互联网用户提供服务的同时,也是黑客攻击的主要对象和攻入系统主机的也是黑客攻击的主要对象和攻入系统主机的主要通道主要通道o服务器安全配置包括服务器安全配置包括主机系统的安全配置主机系统的安全配置和和Web服务器的安全配置服务器的安全配置两大部分两大部分2024/7/12网络入侵与防范讲义174主机系统安全配置主机系统安全配置o服务器主机系统是服务器的基础,因此显然服务服务器主机系统是服务器的基础,因此显然服务器运行的安全性与其所在的主机系统安全性密切器运行的安全性与其所在的主机系统安全性密切相关有关相关有关o这里的主机系统安全性,指的是应用在主机上且这里的主机系统安全性,指的是应用在主机上且与服务器主要服务业务不相关的配置。
与服务器主要服务业务不相关的配置n简单性 n超级用户权限n本地和远程访问控制n审计和可审计性n恢复2024/7/12网络入侵与防范讲义175简单性简单性o主机系统越简单,其安全性就越好最好把主机系统越简单,其安全性就越好最好把不必要的服务从服务器上卸载掉每个服务不必要的服务从服务器上卸载掉每个服务在提供给用户一个服务窗口的同时,也形成在提供给用户一个服务窗口的同时,也形成了攻击者进入系统的通道了攻击者进入系统的通道o主机系统上的服务越多,攻击者侵入系统的主机系统上的服务越多,攻击者侵入系统的可能性就越大可能性就越大2024/7/12网络入侵与防范讲义176超级用户权限超级用户权限o要注意包含超级用户权限,因为超级用户权要注意包含超级用户权限,因为超级用户权限几乎等同于主机控制权,往往是攻击者最限几乎等同于主机控制权,往往是攻击者最高目标o因此尽量不要用超级用户来维护系统,以减因此尽量不要用超级用户来维护系统,以减少泄漏机会除非非常必要,否则不给予用少泄漏机会除非非常必要,否则不给予用户超级权限非专业的人员往往会因为操作户超级权限非专业的人员往往会因为操作上的疏忽而使用户权限被泄漏上的疏忽而使用户权限被泄漏。
2024/7/12网络入侵与防范讲义177本地和远程访问控制本地和远程访问控制o访问控制是用来指定哪些用户可以访问系统的特定访问控制是用来指定哪些用户可以访问系统的特定数据、目录或功能为了防止攻击者侵入系统,应数据、目录或功能为了防止攻击者侵入系统,应该实现一套有效的身份验证机制,并包含用户的日该实现一套有效的身份验证机制,并包含用户的日志记录o当用户使用服务器提供的服务时,验证其身份,并当用户使用服务器提供的服务时,验证其身份,并记录其行为如果用户出现了破坏安全的行为,这记录其行为如果用户出现了破坏安全的行为,这些记录将是审核的重要依据些记录将是审核的重要依据o因此应该保护这些日志,以防被攻击者破坏借以逃因此应该保护这些日志,以防被攻击者破坏借以逃避追查2024/7/12网络入侵与防范讲义178审计和可审计性审计和可审计性o维护主机安全是管理员的责任,但管理员并维护主机安全是管理员的责任,但管理员并不是完美的因此,对主机系统的安全审核不是完美的因此,对主机系统的安全审核是很重要的是很重要的o这主要指平时对记录进行审计,在系统生成这主要指平时对记录进行审计,在系统生成的大量审计记录中查找可疑的数据,来查找的大量审计记录中查找可疑的数据,来查找攻击者或恶意程序的踪迹。
攻击者或恶意程序的踪迹2024/7/12网络入侵与防范讲义179恢复恢复o尽管管理员进行了大量的安全防范工作,但尽管管理员进行了大量的安全防范工作,但服务器主机被侵入或破坏的威胁始终是存在服务器主机被侵入或破坏的威胁始终是存在的o因此配置实时或增量备份策略就是非常必要因此配置实时或增量备份策略就是非常必要的,在紧急关头这可以使得服务器的关键数的,在紧急关头这可以使得服务器的关键数据得以保存,从而可以迅速恢复服务以减少据得以保存,从而可以迅速恢复服务以减少损失,同时便于事后取证的进行,以追查入损失,同时便于事后取证的进行,以追查入侵者2024/7/12网络入侵与防范讲义180Web服务器安全配置服务器安全配置o基于基于Windows系统系统Web服务器安全配置服务器安全配置o基于基于Unix系统系统Web服务器安全配置服务器安全配置基于基于Windows系统系统Web服务器安全配置服务器安全配置oWindows的的IIS(即即InternetInformationServer)的方便性和易用性,的方便性和易用性,使它成为最受欢迎的使它成为最受欢迎的Web服务器软件之一服务器软件之一但是,但是,IIS的安全性却一直令人担忧。
的安全性却一直令人担忧o下面从下面从IIS的安全安装的安全安装与与IIS的安全配置的安全配置两个两个方面进行讲解方面进行讲解2024/7/12网络入侵与防范讲义181IIS安全安装安全安装o要构建一个安全的要构建一个安全的IIS服务器,必须从安装服务器,必须从安装时就充分考虑安全问题时就充分考虑安全问题n不要将IIS安装在系统分区上n修改IIS的安装默认路径n打上Windows和IIS的最新补丁2024/7/12网络入侵与防范讲义182IIS安全配置安全配置o删除不必要的虚拟目录删除不必要的虚拟目录o删除危险的删除危险的IIS组件组件o为为IIS中的文件分类设置权限中的文件分类设置权限o删除不必要的应用程序映射删除不必要的应用程序映射o保护日志安全保护日志安全2024/7/12网络入侵与防范讲义183IIS安全配置安全配置-删除不必要的虚拟目录删除不必要的虚拟目录oIIS安装完成后在安装完成后在C:Inetpubwwwroot下默认生成了一下默认生成了一些目录,包括些目录,包括IISHelp、IISAdmin、IISSamples、MSADC等,这些目录都等,这些目录都没有什么实际的作用,可直接删除。
没有什么实际的作用,可直接删除2024/7/12网络入侵与防范讲义184IIS安全配置安全配置-删除危险的删除危险的IIS组件组件o默认安装后的有些默认安装后的有些IIS组件可能会造成安全组件可。