WPE|52wpe|我爱WPE

 找回密码
 注册会员
搜索
  • 1980查看
  • 0回复

[经验分享] 存储型XSS

主题

好友

2712

积分

禁止访问

发表于 2010-2-2 20:39:21 |显示全部楼层
如果把浏览器看作WEB2.0后时代的操作系统,那么客户端脚本就相当于传统的应用程序,而XSS的攻击方式其实就相当于在被攻击者的系统上执行了一个木马程序。但这种“木马”有个很大的缺点,就是无法像传统木马那样在操作系统中安家,以后还能自动执行。

前几个月发现了一种有趣的XSS漏洞,这种漏洞攻击一次后XSS代码就会被存储下来,以后每次访问被XSS的网站这个“木马”都会再自动执行。我在网上没有找到相关的资料,这里姑且称之为“存储型XSS”(如果有朋友之前看到过类似的文档,欢迎指教)。

原理其实也很简单,流程如下:

XSS代码被提交给网站-->网站把XSS代码SetCookie给浏览器-->浏览器再次请求网站时提交包含XSS代码的Cookie-->网站从Cookie中取出包含XSS代码的某变量并将该变量作为页面内容的一部分返回给客户端-->客户端执行XSS代码

XSS代码除了存储在客户端的Cookie中,也可能存储在服务器端,不过这种情形应该比较少。

比较常见的例子是提供多种语言支持的网站。用户在网站上设定要使用的语言,然后这个语言变量会被存储在Cookie或服务器端数据库。如在一些网页中可以看到类似这样的函数:

function getLocal() {
    var local;
    local = 'zh_CN';
    return local;
}

其中的local变量可能就是从客户端提交的Cookie或服务器数据库中取出的。客户端请求如下URL:

http://tk.xfocus.org/setlocale.php?locale=zh_CN';return local;}alert("XSS");function dummy(){a='

“zh_CN';return local;}alert("XSS");function dummy(){a='”就会被作为语言信息存储下来。浏览器再去请求网站页面时,上面的函数就会变成这样:

function getLocal() {
    var local;
    local = 'zh_CN';return local;}alert("XSS");function dummy(){a='';
    return local;
}

由于语言信息是需要全局使用的,所以一般网站的每个页面都会包含上面的代码。这样,“木马”就长存于“操作系统”中了。以后被攻击者每次访问该网站的每一个页面,都会执行这些XSS代码。

快速发帖

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

手机版|Archiver|WPE|52wpe|我爱WPE ( 闽ICP备15009081号 )

GMT+8, 2024-5-2 14:26 , Processed in 0.063894 second(s), 16 queries .

返回顶部