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

上一篇 / 下一篇  2008-11-12 08:15:27

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

,k2O~l2jA1d0一、关于跨站脚本攻击XSSIXPUB技术博客 YXQ,XI+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&d g/h

IXPUB技术博客J&K$[ u M_ G\#r

XSS不仅常见,而且危害颇深。为了搜集用户信息,攻击者通常会在有漏洞的程序中插入JavaScript、VBScript、ActiveX或Flash以欺骗用户。用户一旦中招,就会导致用户帐户被盗,用户设置被篡改,cookie失窃,等等。IXPUB技术博客e5C2c/E n](@'~d,N

IXPUB技术博客8e4pV8y;xz s2v!m9@3?/W

二、使用XSSDetect检测跨站脚本XSS漏洞IXPUB技术博客Gn6Y!u0^

"VHiV }G g0上面我们对跨站脚本攻击(XSS)漏洞及其危害做了简单介绍。接下来,我们看看如何使用自动化工具来检测跨站点脚本漏洞。IXPUB技术博客/a1A)k'U)Pp

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

7T hZfW0IXPUB技术博客;Pu/`]~E t]pi;P

XSSDetect是精简版的.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+f

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

H s| z^$x0

oz'S`@&c\+d0

z(yG%P ud(~;F`0

IXPUB技术博客+h$Xx4d$AxPhU

System.Web.HttpRequest.get_QueryString

W;mPO0{n,@0

System.Web.HttpResponse.WriteIXPUB技术博客/jRbJ)i'd$^

System.Web.HttpRequest.get_Form.IXPUB技术博客 d8DN H:X1Q&M.E"U

System.IO.TextWriter.Write

*d `"|)H)U9@F0

System.Web.HttpRequest.get_Params

R0\%b)M'd CG5sW0

System.Web.UI.WebControls.Label.set_Text

t|wSA3w[0

System.Web.HttpRequest.get_Cookies

7tWDfaX0

System.Web.UI.WebControls.HyperLink.set_TextIXPUB技术博客5`np([i\r

System.Web.UI.WebControls.TextBox.TextIXPUB技术博客p{ xNQB9M2u

System.Web.UI.WebControls.LinkButton.set_TextIXPUB技术博客WSedE@-J~

IXPUB技术博客 v[x QM2xA%M

IXPUB技术博客)\Z6~RU(?

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

&K{8]m|a)@0//在.aspx页面中的代码IXPUB技术博客g(A9_.d \
<%=Request.QueryString["message"];%>
A&n"B2S%KH1bs"Z)~0IXPUB技术博客o[/DVhw[
//将隐藏字段的值写回该页
HP(J'z/a b v0Response.Write(hidHiddenInput.Value);
WYeM5ch0
-Tl1cB2Ho'kt3co)J D0//设置链接按钮的文本IXPUB技术博客 I_]YSxs
LinkButton1.Text = String.Format(txtInput.Text, "LinkButton1.Text");
zL(E5g/_~-eW&hpl0
nJ,D%t!?;E9_F6u0//HTML表对象IXPUB技术博客|pK'w-iL`
Table1.Caption = String.Format(txtInput.Text, "Table1.Caption");IXPUB技术博客\NM,A&T*vpl
Table1.Rows[0].Cells[0].Text =
)}c ce ] s0String.Format(txtInput.Text, "Table1.Rows[0].Cells[0].Text");
%?B |6XL(f9H.a&o_0IXPUB技术博客4Y2}FS jZ?:W I%s
//Literal对象的文本IXPUB技术博客R;Jl@I}
Literal1.Text = String.Format(txtInput.Text, "Literal.Text");
M\Jt Enf$o;]0
(m*g%e3T BP^)j0//复选框和标签的文字IXPUB技术博客TRVS8k3H)xE
CheckBox1.Text = String.Format(txtInput.Text, "CheckBox1.Text");
jy0ta4MBHG.NW4E0Label1.Text = String.Format(txtInput.Text, "Label1.Text")
c ij E M:h7t0
5u|_%\v0//XSS
W$q%Q*[-k3u\6c#n0string strInput;
/Q@2l5R S_;c9PG5j0protected void Page_Load(object sender, EventArgs e)
,HaFM8L,r'i:`D$w k0{IXPUB技术博客8psJ/~N fn~
strInput = Request.QueryString["message"];
g2{5d.fp@wG+ZJ0this.SetMessage(strInput);IXPUB技术博客7b^6q8o$Fye!uq
}
B6X c-^#r'g\(T0
2Y,G5O S3v*mn0private void SetMessage(string input)
T zQ_ M9p"a }{0{IXPUB技术博客/H0x ih5u/D,o
Label1.Text = input;
5{Iq%W#Z5\#G0}IXPUB技术博客 F J Um&hN@

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

\ q&u7o5bJ'h0
 
图1  XSSDetect的界面

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

Z9k [t-Q$O;Z0三、小结IXPUB技术博客6j!C m$\\5}q7\Y

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

#H3u$B[x#Nx'Ln0

TAG: 脚本 漏洞 XSSDetect 自动检测

 

评分:0

我来说两句

显示全部

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

日历

« 2009-01-07  
    123
45678910
11121314151617
18192021222324
25262728293031

数据统计

  • 访问量: 65804
  • 日志数: 1214
  • 文件数: 1
  • 建立时间: 2007-08-10
  • 更新时间: 2009-01-07

RSS订阅

Open Toolbar