利用XSSDetect自动检测跨站脚本漏洞

日期: 2008-11-10 作者:宇文 来源:TechTarget中国 英文

  跨站脚本攻击XSS是Web安全中最常见的漏洞,本文将向读者介绍一种检测脚本攻击漏洞的自动化工具——XSSDetect。但是在正式介绍该工具之前,我们还是先来认识一下跨站脚本攻击XSS吧。

  一、关于跨站脚本攻击XSS

  最开始的时候,跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,所以后来人们便把跨站脚本攻击缩写为XSS以示区别。

  跨站脚本攻击(也称为XSS)能够利用网站的漏洞窃取用户的个人信息。用户在浏览网站、使用即时通讯软件、甚至在阅读电子邮件时,通常会点击其中的链接。攻击者通过在链接中插入恶意代码,就能够盗取用户信息。攻击者通常会用十六进制(或其他编码方式)将链接编码,以免用户怀疑它的合法性。网站在接收到包含恶意代码的请求之后,如果没有对用户的输入进行严格的过滤的话,就会产成一个包含恶意代码的页面,而这个页面看起来就像是那个网站应当生成的合法页面一样。许多流行的留言本和论坛程序允许用户发表包含HTML和javascript的帖子,如果用户A发表了一篇包含恶意脚本的帖子,那么用户B在浏览这篇帖子时,恶意脚本就会执行,从而盗取用户B的会话信息。

  XSS不仅常见,而且危害颇深。为了搜集用户信息,攻击者通常会在有漏洞的程序中插入JavaScript、VBScript、ActiveX或Flash以欺骗用户。用户一旦中招,就会导致用户帐户被盗,用户设置被篡改,cookie失窃,等等。

  二、使用XSSDetect检测跨站脚本XSS漏洞

  上面我们对跨站脚本攻击(XSS)漏洞及其危害做了简单介绍。接下来,我们看看如何使用自动化工具来检测跨站点脚本漏洞。

  作为Web应用程序中最常见的弱点的跨站脚本攻击漏洞,我们发现的越早越好,最好能在开发初期就能将它们消灭在萌芽状态。古人云,工欲善其事,必先利其器。要想发现XSS漏洞的话,使用手工方式当然未尝不可,但是效率太低,我们今天要为大家介绍一款自动化的工具来检测XSS漏洞,这是一款微软公司为开发人员提供针对跨站脚本攻击的静态分析工具:XSSDetect,当然,它对安全渗透测试人员也也很有用。

  XSSDetect是精简版的.NET代码分析工具,原本供微软内部人员寻找应用软件的安全漏洞之用,大概是受开源思想影响,现在已经可以免费下载了。XSSDetect下载地址http://www.microsoft.com/Downloads/details.aspx?FamilyID=19a9e348-bdb9-45b3-a1b7-44ccdcb7cfbe&displaylang=en

  XSSDetect实际上是一个Visual Studio插件,它可以识别ASP.NET Web应用程序中的非持久性的XSS漏洞。同时,XSSDetect也是一种静态分析工具,它使用微软的CCI库进行分析。插件FxCop和XSSDetect都使用了CCI程序库,但是XSSDetect要比FxCop插件更大,因为XSSDetect利用过程间数据流分析技术检测XSS安全漏洞。它使用了源(起点,输入的入口点)和汇(终点,输出的方法)的思想来检测可能引起XSS安全漏洞的数据通路。下面列出了一些源和汇:

XSSDetect

  XSSDetect工作时,会为二进制文件建立一个庞大的数据图,并标识这些源和汇的数据通路。只要发现了使用编码库(例如AntiXss库)的数据通路,就将其排除在结果之外。要想查看更多源、汇和编码规则的信息,可以浏览%PROGRAMFILES%MicrosoftXSSDetectConfig。下面我们来考察一个能够被XSSDetect检测到漏洞的代码。

//在.aspx页面中的代码//将隐藏字段的值写回该页Response.Write(hidHiddenInput.Value);//设置链接按钮的文本LinkButton1.Text = String.Format(txtInput.Text, “LinkButton1.Text”);//HTML表对象Table1.Caption = String.Format(txtInput.Text, “Table1.Caption”);Table1.Rows[0].Cells[0].Text = String.Format(txtInput.Text, “Table1.Rows[0].Cells[0].Text”);//Literal对象的文本Literal1.Text = String.Format(txtInput.Text, “Literal.Text”);//复选框和标签的文字CheckBox1.Text = String.Format(txtInput.Text, “CheckBox1.Text”);Label1.Text = String.Format(txtInput.Text, “Label1.Text”)//XSSstring strInput;protected void Page_Load(object sender, EventArgs e){strInput = Request.QueryString[“message”];this.SetMessage(strInput);}private void SetMessage(string input) {Label1.Text = input;}
 

  XSSDetect可以检测出ASP.NET代码中XSS安全漏洞的很多变体。XSSDetect目前适用于Visual Studio 2005,将来还可以在Visual Studio 2008上使用。安装后进入工具菜单,选择XSS detect菜单项,这时出现如下所示的窗口。

         XSSDetect的界面

                                 XSSDetect的界面

  我们只要单击绿色的“播放”/“运行”按钮(就是工具栏中左边第一个按钮),它便开始分析。请确保已经安装Visual Studio 2005和所有参考资料,因为XSSDetect将汇编源代码来分析二进制文件。XSSDetect的另一个特性是单击帮助图标即可打开帮助文件,从这里可以了解到更多的信息。

  三、小结

  跨站脚本攻击即XSS是Web安全中最常见的漏洞,本文首先对该漏洞做了简单解释,然后重点向读者介绍一种检测脚本攻击漏洞的自动化工具——XSSDetect。我们不仅介绍了它的基本原理,还以一个代码示例进行了演示。希望本文对您的学习能够有所帮助。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者

宇文
宇文

相关推荐