利用XSSDetect自动检测跨站脚本漏洞
,k2O~l2jA1d0一、关于跨站脚本攻击XSSIXPUB技术博客 YXQ,X I+kU2_5as
Ip/Ht0X\{0最开始的时候,跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style. Sheets, CSS)的缩写混淆,所以后来人们便把跨站脚本攻击缩写为XSS以示区别。IXPUB技术博客"|F[t+{&s
6V1_!c7^7Q_B#u0跨站脚本攻击(也称为XSS)能够利用网站的漏洞窃取用户的个人信息。用户在浏览网站、使用即时通讯软件、甚至在阅读电子邮件时,通常会点击其中的链接。攻击者通过在链接中插入恶意代码,就能够盗取用户信息。攻击者通常会用十六进制(或其他编码方式)将链接编码,以免用户怀疑它的合法性。网站在接收到包含恶意代码的请求之后,如果没有对用户的输入进行严格的过滤的话,就会产成一个包含恶意代码的页面,而这个页面看起来就像是那个网站应当生成的合法页面一样。许多流行的留言本和论坛程序允许用户发表包含HTML和javascript的帖子,如果用户A发表了一篇包含恶意脚本的帖子,那么用户B在浏览这篇帖子时,恶意脚本就会执行,从而盗取用户B的会话信息。IXPUB技术博客{*n._5h2{%E&dg/h
IXPUB技术博客J&K$[ uM_G\#rXSS不仅常见,而且危害颇深。为了搜集用户信息,攻击者通常会在有漏洞的程序中插入JavaScript、VBScript、ActiveX或Flash以欺骗用户。用户一旦中招,就会导致用户帐户被盗,用户设置被篡改,cookie失窃,等等。IXPUB技术博客e5C2c/En](@'~d,N
IXPUB技术博客8e4pV8y;xz s2v!m9@3?/W二、使用XSSDetect检测跨站脚本XSS漏洞IXPUB技术博客Gn6Y!u0^
"VHiV } Gg0上面我们对跨站脚本攻击(XSS)漏洞及其危害做了简单介绍。接下来,我们看看如何使用自动化工具来检测跨站点脚本漏洞。IXPUB技术博客/a1A)k'U)Pp
1ZYP YQx;h0作为Web应用程序中最常见的弱点的跨站脚本攻击漏洞,我们发现的越早越好,最好能在开发初期就能将它们消灭在萌芽状态。古人云,工欲善其事,必先利其器。要想发现XSS漏洞的话,使用手工方式当然未尝不可,但是效率太低,我们今天要为大家介绍一款自动化的工具来检测XSS漏洞,这是一款微软公司为开发人员提供针对跨站脚本攻击的静态分析工具:XSSDetect,当然,它对安全渗透测试人员也也很有用。
7ThZfW0IXPUB技术博客;Pu/`]~Et]p i;PXSSDetect是精简版的.NET代码分析工具,原本供微软内部人员寻找应用软件的安全漏洞之用,大概是受开源思想影响,现在已经可以免费下载了。XSSDetect下载地址http://www.microsoft.com/Downloads/details.aspx?FamilyID=19a9e348-bdb9-45b3-a1b7-44ccdcb7cfbe&displaylang=en。
"h)nVC/i/e.l]0IXPUB技术博客F,hb5|1O(\G.b+fXSSDetect实际上是一个Visual Studio插件,它可以识别ASP.NET Web应用程序中的非持久性的XSS漏洞。同时,XSSDetect也是一种静态分析工具,它使用微软的CCI库进行分析。插件FxCop和XSSDetect都使用了CCI程序库,但是XSSDetect要比FxCop插件更大,因为XSSDetect利用过程间数据流分析技术检测XSS安全漏洞。它使用了源(起点,输入的入口点)和汇(终点,输出的方法)的思想来检测可能引起XSS安全漏洞的数据通路。下面列出了一些源和汇:
H s| z^$x0o z'S`@&c\+d0
源 | 汇 |
System.Web.HttpRequest.get_QueryString | System.Web.HttpResponse.Write |
System.Web.HttpRequest.get_Form. | System.IO.TextWriter.Write |
System.Web.HttpRequest.get_Params | System.Web.UI.WebControls.Label.set_Text |
System.Web.HttpRequest.get_Cookies | System.Web.UI.WebControls.HyperLink.set_Text |
System.Web.UI.WebControls.TextBox.Text | System.Web.UI.WebControls.LinkButton.set_Text |
XSSDetect工作时,会为二进制文件建立一个庞大的数据图,并标识这些源和汇的数据通路。只要发现了使用编码库(例如AntiXss库)的数据通路,就将其排除在结果之外。要想查看更多源、汇和编码规则的信息,可以浏览%PROGRAMFILES%\Microsoft\XSSDetect\Config。下面我们来考察一个能够被XSSDetect检测到漏洞的代码。IXPUB技术博客"\%d/wR*i4ikJq
|