美文网首页
FFmpeg本地任意文件读取漏洞 / FFmpeg Local

FFmpeg本地任意文件读取漏洞 / FFmpeg Local

作者: Evil_cosey | 来源:发表于2018-10-27 16:47 被阅读0次

    FFmpeg本地任意文件读取漏洞

    漏洞原理

    FFmpeg 进行视频转码的时候,使用了 concat 协议中的 ‘ | ’ 语法,如下图官方文档所示:


    FFmpeg offical document.png

    所以针对这一点,我们利用 file 协议构造本地文件路径指令,并将其加于concat 协议中,使得 FFmpeg 在处理视频流时候执行指令,将指令指向的内容直接加载到视频中,然后通过查看视频即可获得文件内容。

    漏洞复现

    1. 利用 poc 先构造一个含有文件路径的视频 security.avi。
      这里使用的文件路径为:file:///etc/passwd
      构造命令为:python3 gen_xbin_avi.py file:///etc/passwd security.avi
    2. 按照公开的漏洞通知,需要将构造好的视频上传到有关视频解析的网站去。
      这里我们不搭建流转码服务器,直接本地使用 FFmpeg 进行转码。
      使用的 FFmpeg 版本为:3.2.2
      转码命令为:ffmpeg -i security.avi output.mp4
    3. 得到视频 output.mp4,打开后发现确实获取得到了本地/etc/passwd 的内容。
    FFmpeg result.png

    修复方案

    1. 升级版本至 FFmpeg 3.3.2 版本(目前最新) 。
    2. 禁用 file://等协议类型。

    参考

    neex大神的poc
    Local File Disclosure via ffmpeg
    FFmpeg各版本的安装
    FFmpeg安装中各种问题的解决方案
    FFmpeg中的SSRF问题

    申明:

    本文内容参考网上知识,自己从中实践感悟而来,希望能对大家有所帮助。
    (菜鸡作者木有直接给poc的能力也很绝望啊)
    如果牵扯版权问题请及时联系,愿意更改删减~~

    相关文章

      网友评论

          本文标题:FFmpeg本地任意文件读取漏洞 / FFmpeg Local

          本文链接:https://www.haomeiwen.com/subject/rzudtqtx.html