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

上一篇 / 下一篇  2008-11-18 08:04:03

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

O1v'_Tg/D0一、关于跨站脚本攻击XSSIXPUB技术博客`~w9NTn

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

*zx,La1O7[-@V!{2@0IXPUB技术博客Jl.z?r t)Ost K

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

z(GX ER"o/K:eJ0

'I9H#^*xM^0XSS不仅常见,而且危害颇深。为了搜集用户信息,攻击者通常会在有漏洞的程序中插入JavaScript、VBScript、ActiveX或Flash以欺骗用户。用户一旦中招,就会导致用户帐户被盗,用户设置被篡改,cookie失窃,等等。IXPUB技术博客-o5PA8QES| i

IXPUB技术博客d(zg;ea?FS[7i+Gu

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

"~ Y)s3c+QBB*M0

$}%e(~g"vl p0上面我们对跨站脚本攻击(XSS)漏洞及其危害做了简单介绍。接下来,我们看看如何使用自动化工具来检测跨站点脚本漏洞。IXPUB技术博客A[O#D A*A

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

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

?1wu5V@G{&t0

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

IXPUB技术博客T5H}'| u.T1tz9v h

IXPUB技术博客Q_3z;|n-O

IXPUB技术博客d/W|1oW*H\

System.Web.HttpRequest.get_QueryString

^;o/[JC1~,q2U0

System.Web.HttpResponse.Write

h#RT:g"~+\\h f3k0

System.Web.HttpRequest.get_Form.IXPUB技术博客9yCp%mE{d

System.IO.TextWriter.Write

GD5YD*J\j,YD0

System.Web.HttpRequest.get_Params

F sVM3Z/D7v-Y0

System.Web.UI.WebControls.Label.set_Text

/@ Ik:l yI y$Gb0

System.Web.HttpRequest.get_CookiesIXPUB技术博客8Q ~sS)c/lz

System.Web.UI.WebControls.HyperLink.set_Text

#Q0n2Frr zK~on0

System.Web.UI.WebControls.TextBox.Text

)pA;o in8\/L0

System.Web.UI.WebControls.LinkButton.set_TextIXPUB技术博客#Zm%p(Fc t$h

IXPUB技术博客lQ4O*{XZ?9iyB

IXPUB技术博客bH'zkF%be

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

IXPUB技术博客YU%r%lv:@.sF

//在.aspx页面中的代码IXPUB技术博客+k-Z&g6eQ/y~
<%=Request.QueryString["message"];%>IXPUB技术博客/sDiqB
IXPUB技术博客'U9l#T0zS1oo2kD.@:E%^
//将隐藏字段的值写回该页
!s+cMET0Response.Write(hidHiddenInput.Value);
8LE y Yu)]o1r6`0
-@J!aS5l.BS oR0//设置链接按钮的文本
{1Nt'ZT/G0LinkButton1.Text = String.Format(txtInput.Text, "LinkButton1.Text");IXPUB技术博客AV}t1\m.wc X eb
IXPUB技术博客F?8I1A%g+qc
//HTML表对象IXPUB技术博客Gs0Kk W'C:W3y
Table1.Caption = String.Format(txtInput.Text, "Table1.Caption");
aZr]%B?UD0Table1.Rows[0].Cells[0].Text =
~^} T{!rCn}^0String.Format(txtInput.Text, "Table1.Rows[0].Cells[0].Text");IXPUB技术博客 G;js L?

4{"_-k-A+l,dM0//Literal对象的文本
!s+f!v0FAzPe0Literal1.Text = String.Format(txtInput.Text, "Literal.Text");
-[G+[*DdI0
3?J&L$d x0//复选框和标签的文字IXPUB技术博客 jwu C*e
CheckBox1.Text = String.Format(txtInput.Text, "CheckBox1.Text");IXPUB技术博客tl:Z"R(l bb V V
Label1.Text = String.Format(txtInput.Text, "Label1.Text")IXPUB技术博客 d*A Gyvef+l

}1i FF)U$} S8pL Z p0//XSS
f{2t CP!s3D0E0string strInput;IXPUB技术博客+[1B4n5D/dr
protected void Page_Load(object sender, EventArgs e)IXPUB技术博客$k!@T*j+aQ4YJ C_;ew
{IXPUB技术博客vwnaN-Wh
strInput = Request.QueryString["message"];
"J:\M1{ P0this.SetMessage(strInput);IXPUB技术博客Wr'}L%WzY:Qk N
}IXPUB技术博客Q ^\4uU#W~%x

H W,SXua5l0private void SetMessage(string input)
O I:E^;]nM0{
!pP x rj\Ev"O0Label1.Text = input;IXPUB技术博客V'G$g:Q6BN'} }
}IXPUB技术博客/V)TU;}c?

IXPUB技术博客.sPQM3@:s1b"@$cK

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

3x8r*Nn c4o0
 
图1  XSSDetect的界面
IXPUB技术博客*AU:VD0ajpS$s

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

w*c8~L0|b~0三、小结

I Kkq E Yf%x0

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

EQabU6?,ko0
3

3

TAG: XSSDetect 脚本 漏洞 自动检测

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2009-01-06  
    123
45678910
11121314151617
18192021222324
25262728293031

数据统计

  • 访问量: 65207
  • 日志数: 1209
  • 文件数: 1
  • 建立时间: 2007-08-10
  • 更新时间: 2009-01-06

RSS订阅

Open Toolbar