oculus设备VR漫游

Posted aichitudousien

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oculus设备VR漫游相关的知识,希望对你有一定的参考价值。

@

概述

使用oculus设备开发一个漫游demo,具备在头显中使用遥感控制方向,左手控制器具备传送跳跃功能,导航网格的制作

如有不明白的可以加QQ:2354528292;wx: aichitudousien
更多教学视频请访问:https://space.bilibili.com/236087412
源码获取:https://item.taobao.com/item.htm?spm=a21dvs.23580594.0.0.3c3a645e6Jz6my&ft=t&id=714567597879

[video(video-h3XJokCu-1637385553899)(type-csdn)(url-https://live.csdn.net/v/embed/180813)(image-https://vedu.csdnimg.cn/306421fe16034011bd9c7eb01a521978/snapshots/053aac6d685c4e4d80eab123cdf17ef5-00003.jpg)(title-oculus VR漫游)]

静态资源

<a-assets timeout="40000">
        <!-- 房子 -->
        <a-asset-item
          id="Building"
          src="assets/model/New_Building_final1.glb"
          nav-agent="speed: 1.5; active: true"
        ></a-asset-item>
        <a-asset-item
          id="Building_skeleton"
          src="assets/model/New_Building_final_skeleton1.glb"
          nav-agent="speed: 1.5; active: true"
        ></a-asset-item>
        <!-- 树 -->
        <a-asset-item
          crossorigin="anonymous"
          id="Palm"
          src="assets/model/PalmMinimal.glb"
        ></a-asset-item>
        <!-- 小地图 -->
        <a-asset-item
          crossorigin="anonymous"
          id="Island"
          src="assets/model/Islands.glb"
        ></a-asset-item>
        <img crossorigin="anonymous" id="flare-asset" src="assets/images/adjustflare.jpg" />
        <img crossorigin="anonymous" id="grid" src="assets/images/opaic_grid.png" />
      </a-assets>

海岛

 <a-entity
        id="navmesh-Island"
        gltf-model="url(assets/model/navmeshMegaHelloIsland.gltf)"
        scale=""
        visible="true"
        nav-mesh=""
      ></a-entity>

海洋

      <a-ocean
        position="-28.98488 -1.76439 22.54954"
        scale="3 3 3"
        
        depth="50"
        opacity=".75"
        ocean="density: 45; amplitude: -0.1; speed: 0.75; speedVariance: 0.1"
      ></a-ocean>

控制器

<a-entity
        id="cameraRig"
        movement-controls="constrainToNavMesh: true;"
        navigator="cameraRig: #cameraRig; cameraHead: #head; collisionEntities: .collision; ignoreEntities: .clickable"
        position="0 0 0"
        rotation="0 0 0"
      >
        <a-entity
          id="head"
          camera="active: true"
          position="0 1.6 0"
          look-controls="pointerLockEnabled: true; reverseMouseDrag: true"
        ></a-entity>

        <a-entity
          class="leftController"
          oculus-touch-controls="hand: left"
          teleport-controls="cameraRig: #cameraRig; teleportOrigin: #head; button: trigger; curveShootingSpeed: 18; collisionEntities: #navmesh-Island; landingMaxAngle: 60"
          visible="true"
        >
        </a-entity>

        <a-entity
          class="rightController"
          oculus-touch-controls="hand: right"
          laser-controls
          raycaster="showLine: true; far: 15; interval: 0; objects: .clickable, a-link;"
          line="color: lawngreen; opacity: 0.5"
          visible="true"
        ></a-entity>
      </a-entity>

Oculus CDN服务器的XSS漏洞

前言

我来分享一个Facebook旗下公司Oculus网站存在的类似XSS漏洞,该漏洞最终获得了Facebook官方$1500美金的奖励。

Facebook在2014年3月宣布以20亿美元收购虚拟现实(VR)头戴设备制造商Oculus,Facebook计划将Oculus的VR技术优势扩大至新的垂直领域,如通信、媒体和娱乐、教育及其他领域等。

Oculus发布了定制化开源的开发者项目( Custom Developer Items),这项功能已向社区开发者推送。无论你是开发虚拟现实游戏、社交体验、娱乐还是教育类应用,都可以使用自己最喜欢的游戏引擎或我们的原生 SDK 轻松地在整个 Oculus 平台上进行开发。它覆盖了Oculus Rift + Touch 、Oculus Go 和 Samsung Gear VR + 控制器的VR产品,与主流开源的VR开发工具Unity结合,用户可以定制化地开发属于自己的应用。

漏洞发现及PoC

在Oculus网站的账户管理页面https://dashboard.oculus.com/,注册并登录账户后,有一个服务端功能允许开发者上传应用相关的asset资源文件,且所有asset资源文件都储存在了”oculuscdn.com”网站中。例如,我们用该服务端功能上传一个图片文件时,其发送的POST请求如下:

POST /upload_image/ HTTP/1.1Host: graph.oculus.commultipart/form-data

之后,oculuscdn.com返回的响应如下:

HTTP/1.1 200 OK{“id”: “1234567890012345”,“handle”: “HANDLE_TO_THE_IMAGE”,“uri”: “https://scontent.oculuscdn.com/v/t64.5771-25/12410200_1905973632996555_3168227744525844480_n.png?_nc_cat=0&oh=6163326b2eb5e87c16c6949f1e734611&oe=5AD840C8”}

其中包含了图片的ID号,称呼Handle和具体的访问链接URL。可以看到,我们POST请求主机graph.oculus.com,Response中响应的主机为scontent.oculuscdn.com。这里存在的漏洞就比较简单了,不需要像之前facebook cdn的那样需要进行cname域名替换,这里直接把 /v/ 和HASH串去掉,就能访问到目标图片了。整个测试过程如下:

上传PNG图片,用BurpSuite拦截抓包;

拦截到上传的PNG图片内容,把恶意的带XSS Payload的js外链添加在其末尾;

成功上传后,从响应内容中提取出图片上传后的具体访问URL链接;

然后,把URL中的 “/v/“ 和 HASH串去掉去掉,再把上传图片的后缀格式由.jpg改为.html,就能成功加载之前添加进入的js恶意Payload了。

这里,我用到的带XSS Payload的js外链为:

https://www.amolbaikar.com/wp/js/oculus.js

最终的请求链接如下:

https://scontent.oculuscdn.com/t64.5771-25/12410200_1905973632996555_3168227744525844480_n.html

PoC视频:

漏洞影响

该漏洞允许攻击者在Oculus CDN服务器上执行任意JS文件,好在有沙盒防护机制,其不能读取用户的cookies/session信息,但应用在实际的攻击场景中,该漏洞可以绕过Facebook的链接黑名单系统 Linkshim,也能用其实施钓鱼行为。

漏洞上报进程

2018.3.19: 漏洞初报

2018.3.22: 技术详情提供

2018.3.22: Payload测试

2018.3.23: 漏洞有效性认可

2018.5.25: 漏洞修复

2018.6.1: $1500赏金发放

*参考来源:amolbaikar,clouds编译,转载请注明来自FreeBuf.COM

以上是关于oculus设备VR漫游的主要内容,如果未能解决你的问题,请参考以下文章

如何将oculus rift 虚拟现实VR设备正确的安装

怎么制作vr全景漫游?

Oculus + Node.js + Three.js 打造VR世界

Oculus Rift正式发售,准备好开始迈向VR时代

Oculus Quest2 | Oculus Quest2初体验,Quest2发展历程及参数介绍。

Oculus CDN服务器的XSS漏洞