论坛: 菜鸟乐园 标题: 跨站脚本执行漏洞(续) 复制本贴地址    
作者: group [group]    论坛用户   登录
跨站脚本执行漏洞(续)

by analysist http://www.nsfocus.com

声明:本文出于教育目的,请不要利用本文的内容进行任何破坏,否则后果请自负!

上次的《跨站脚本执行漏洞》相信大家都看过了,应该对于这种攻击有个大概了解了吧?同时,大家也应该能看到跨站脚本执行漏洞的广泛性,无论是搜狐,新浪,或者是263,都存在着大量这样的漏洞。

这篇文章主要是对上次文章的补充,内容不多,但是应该能够说明问题,消除一些人对跨站脚本执行漏洞的误解。好了,现在就开始!

【只能执行JavaScript?】
也许是由于上次的文章只是拿JavaScript作为例子,所以给大家造成了一种误解,以为跨站脚本执行漏洞只能执行JavaScript,实际上任意客户端脚本都是可以利用的。

这次我们就以ActiveX为例说明一下。如果你访问下面的链接: http://person.3721.com/search_list.htm?name=<script>var+fso,f;fso=new+ActiveXObject("Scripting.FileSystemObject");f=fso.CreateTextFile("c:\\c4st.txt")</script>

或者是下面的链接: http://page.search.sohu.com/cgi-bin/pagesearch.cgi?tn=sohu&si=gi&word=<script>var+fso,f;fso=new+ActiveXObject("Scripting.FileSystemObject");f=fso.CreateTextFile("c:\\c4st.txt")</script>&ct=0&cl=2&lm=0

或者只是在IE地址栏简单的输入下面的内容:
<script>var+fso,f;fso=new+ActiveXObject("Scripting.FileSystemObject");f=fso.CreateTextFile("c:\\c4st.txt")</script>

然后回车,等一会,看到了什么?

 

哈哈。。。好象我们提供的ActiveX代码就要执行了。当然这还需要用户的配合,用鼠标轻轻点击“是”,看看你的C盘根目录,是不是建立了一个新文件“c4st.txt”?同理,我们也可以用来读写,修改甚至删除硬盘上的任意文件。

除此之外,我们提供的ActiveX代码是否能够执行,还和你的IE安全设置相关(这里不考虑利用IE的漏洞绕过安全设置)。我们上面的实验是基于以下的安全设置的:

 

不过,这种情况并不少见,比如播放Flash下载shockwave插件时,也是要弹出一个类似的警告框的,而很多情况下我们都是选择“是”,因此还是很有利用价值的。

这里还需要介绍一下网络实名的概念,下面的内容摘自http://www.3721.com,更多信息可访问网站。

[什么是网络实名]
网络实名是新一代的网络访问技术。它帮助客户用现实世界中企业、产品、商标等的名字,通过浏 览器、搜索引擎、各地信息港等各种途径都能简单快速地找到企业、产品信息,无须使用复杂的域 名、网址,也不必在搜索引擎成千上万的结果中反复查找。

[网络实名的功能]
1.代替网址,在地址栏输入网络实名便可准确直达企业网站;
2.在中国各大门户网站的搜索引擎中脱颖而出;
3.中国电信各地近200家信息港、热线网站都采用了实名技术,在搜索框中查找企业、产品时, 拥有实名的企业将被方便地找到。

目前支持网络实名的搜索引擎包括新浪、搜狐、网易、263、FM365、163电子邮局、Tom、21CN、lycos中国和中国电信近200家信息港等

奇怪的是,我在开启和关闭网络实名的情况下都得到相同的结果,谁能为我解释一下?我对这些真的不是很明白!:(

还有,要想利用跨站脚本执行漏洞执行ActiveX,除了上面所讲的问题外,由于ActiveX代码本身一般比较长,而且需要包含空格,所以可利用的机会就相对来说少一些。

如果利用得好,这并不比缓冲区溢出危害小,而且这种攻击很具艺术性,恐怕只有尝试过的人才能感觉得到。

【如何突破PHP的保护模式?】
不要误会,这里所谓保护模式指PHP自动为“’”“””和“\”进行转义(当然这依赖于php.ini的配置)。这种保护模式往往为跨站脚本执行漏洞攻击带来了很多的麻烦,因为没有这几个特殊的字符,我们能做的实在太少了。例如我想将页面重定向到我的主页,脚本部分为window.location.href=”http://v7.51.net”,而如果没有“””和“””的话,脚本是不能成功运行的。

有没有想过突破这种保护模式,振兴跨站脚本执行漏洞攻击?相信大家都会这么想!:)下面我就演示几种方法:

1. 自己制造条件
我们以http://fetag.dhs.org为例,希望CoolFire不要介意!:P 

我们可以构造下面的链接弹出“123”: http://fetag.dhs.org?INC=<script>alert(123)</script>

但是却无法通过下面的链接弹出“abc”: http://fetag.dhs.org?INC=<script>alert(abc)</script> http://fetag.dhs.org?INC=<script>alert(‘abc’)</script> http://fetag.dhs.org?INC=<script>alert(“abc”)</script>

怎么办?一般人遇到这个问题可能就会放弃,但是其实还是有办法的,你得深刻理解跨站脚本执行漏洞的含义,还得对JavaScript这种面向对象的脚本语言有一定理解。

试试下面的链接? http://fetag.dhs.org/?INC=<form name=abc><input type=text name=xyz value=abc><script>alert(document.abc.xyz.value)</script>

看到了吧?!:)

这种攻击适合于对用户提交数据长度没有限制或限制长度比较长的情况。

2. 利用已有条件
也就是说我们自己不构造数据,而是利用页面上已有的元素,但是要求你要利用的元素在页面所处的位置在你的脚本代码之前。

例如: http://fetag.dhs.org/?INC=<script>alert(document.forms[0].elements[0].value)</script>

不要觉得没有什么用,在多步提交的CGI脚本中,利用起来可是很不错的!~

当然也可以对已有数据进行一些必要的处理,这全看实际需要了。

这种攻击适用于对用户提交数据长度进行限制的情况。

3. 综合利用
自己构造一部分,利用一部分,不用我说了吧?

现在是不是感觉对付PHP的跨站脚本执行漏洞容易多了?:)

【没有放到网站上就是安全的吗?】
这是有个BBS站长跟我说的,他觉得脚本没放到网站上就没有安全问题,我只能给他说你对跨站脚本执行漏洞不了解。你不会也问我这个问题吧?看看以前的文章先!

好了,这次就这么些内容,标题比较别扭,没办法,我表达能力差,高考语文只得了99分!:( 另外,谁造谣说我在珠海?



地主 发表时间: 03/25 05:38

回复: danjames [danjames]   论坛用户   登录
http://fetag.dhs.org---------CoolFire的站点是这个?

B1层 发表时间: 03/25 08:53

论坛: 菜鸟乐园

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号