FFMPEG任意文件读取漏洞靶场搭建过程

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 本文讲的是FFMPEG任意文件读取漏洞靶场搭建过程,丑化说在前头,我这人有一癖好,就是研究一些已经过时的东西,发一些过时的文章。文章之前就写好了,只是一直没发出来充数。距离FFMPEG任意文件读取漏洞发布的时间已经过去很久了,记得刚出来那会儿国内几个大型的视频网站都有这个问题。
本文讲的是 FFMPEG任意文件读取漏洞靶场搭建过程

FFMPEG任意文件读取漏洞靶场搭建过程

丑化说在前头,我这人有一癖好,就是研究一些已经过时的东西,发一些过时的文章。文章之前就写好了,只是一直没发出来充数。距离FFMPEG任意文件读取漏洞发布的时间已经过去很久了,记得刚出来那会儿国内几个大型的视频网站都有这个问题。靶机是之前为了一个比赛场景搭建的,作为环境搭建的初探者,主要介绍下自己在搭建这个环节过程中遇到的一些坑。

1.  搭建需求

搭建一个FFMPEG任意文件读取漏洞靶场,可用于漏洞练习或者攻防题目。

2.  Win2003下复现FFMPGE任意文件读取漏洞

最初想法:优先尝试了win下复现FFMPEG任意文件读取漏洞。

FFMPEG任意文件读取漏洞靶场搭建过程

结果在WIN上搭建FFMPEG,出现补丁报错的情况。

FFMPEG任意文件读取漏洞靶场搭建过程

找到解决办法,安装如下补丁:WindowsServer2003-KB914961-SP2-x86-CHS,地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=41

解决后可以正常运行ffmpeg并实现视频、图片等文件的格式转换,但问题由来了。 Windows下无法复现ffmpeg任意文件读取漏洞,原因如下:ffmpeg任意文件读取漏洞payload中需要利用类似linux中的/dev/zero的空文件进行对数据进行读取和不断的写入。Win下不存在这种文件或者功能。尝试修改payload无果,最后没能在win下复现该漏洞。

FFMPEG任意文件读取漏洞靶场搭建过程

3.  Linux下复现FFMPGE任意文件读取漏洞

Linux下安装ffmpeg漏洞版本很容易,也不会出问题。直接执行如下脚本便可安装好。

sudo apt-get   install build-essential git-core checkinstall yasm texi2html libvorbis-dev   libx11-dev libvpx-dev libxfixes-dev zlib1g-dev pkg-config netcat   libncurses5-dev
FFMPEG_VERSION=2.3.3
cd   /usr/local/src
if [ ! -d   "/usr/local/src/ffmpeg-${FFMPEG_VERSION}" ]; then
  sudo wget   "http://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2"
  sudo tar -xjf "ffmpeg-${FFMPEG_VERSION}.tar.bz2"
fi
cd   "ffmpeg-${FFMPEG_VERSION}"
sudo   ./configure --enable-version3 --enable-postproc --enable-libvorbis   --enable-libvpx
sudo make
sudo   checkinstall --pkgname=ffmpeg --pkgversion="5:${FFMPEG_VERSION}"   --backup=no --deldoc=yes --default

FFMPEG任意文件读取漏洞靶场搭建过程

执行poc,生成avi文件:python3 gen_xbin_avi.py file:///etc/passwd 111.avi

POC地址:

https://github.com/neex/ffmpeg-avi-m3u-xbin/blob/master/gen_xbin_avi.py

FFMPEG任意文件读取漏洞靶场搭建过程

本地测试漏洞:转换视频格式ffmpeg -i 111.avi 2.mp4

FFMPEG任意文件读取漏洞靶场搭建过程

播放转换格式后的视频文件,成功看到转换过程中写入的文件。

FFMPEG任意文件读取漏洞靶场搭建过程

4.  Ubuntu下搭建环境的坑

为了用户体验好,决定找一个像模像样的整站,嵌入视频处理功能实现需求。

l  优先想到的是找个开源的在线视频cms进行修改,结果找了很久也没找到这样的站点。

l  没办法,上述路线走不通只能自己搭建了,于是基于如下基础漏洞代码,找个cms写个视频的功能。可是,最终发现效果太深(生)硬。一看就知道问题所在了没什么意思。

FFMPEG任意文件读取漏洞靶场搭建过程

l  最后,在wordpress的插件中搜索ffmpeg关键词发现有处理视频的插件。发布文章时可以嵌入视频,于是研究一番真的可以调用ffmpeg处理视频,插件名为:Video Embed & Thumbnail Generator。最后决定用自豪的WordPress搭建这个环境。

那么,先搭建LAMP环境。

Ø  Mysql安装坑

通过sudo apt-get install mysql-server 安装的mysql默认以mysql_safe模式启动,此模式下很难完成mysql提权操作。所以最好是自己下载mysql版本进行编译安装。

Ø  安装&修复PHPmyamdin报错

sudo apt-get install phpmyadmin
sudo cp /usr/share/phpmyadmin /var/www/html -a

通过apt-get安装的phpmyadmin可通过sudo dpkg-reconfigure phpmyadmin解决报错问题。

5.  Wordpress下调用ffmpeg任意文件读取

看来这么多,MD终于可以进入正题了。来吧,相互伤害(装插件)吧。

Wordpress后台安装插件:Video Embed & Thumbnail Generator。安装后看下配置项中bin、ffmpeg的位置是否对应得上。

FFMPEG任意文件读取漏洞靶场搭建过程

FFMPEG任意文件读取漏洞靶场搭建过程

安装后会自动执行测试命令,如果配置没问题会有如下显示:

FFMPEG任意文件读取漏洞靶场搭建过程

安装好后咋们就可以去发布文章了,在添加媒体处,可以上传视频文件:

FFMPEG任意文件读取漏洞靶场搭建过程

FFMPEG任意文件读取漏洞靶场搭建过程

上传后编辑视频文件,可调用ffmpeg插件进行处理视频,包括格式转换,截图等等。

FFMPEG任意文件读取漏洞靶场搭建过程

这里最快的方法就是直接点Generate进行截图:发现在这个过程中已经进行了文件读取:

FFMPEG任意文件读取漏洞靶场搭建过程

所以,这个FFMPEG文件读取漏洞不管是存在于视频文件转换过程中,图片等格式的转换也可能造成任意文件读取。

6.  解决Wordpress配置访问IP问题

本以为大功告成了,结果又遇到了一个坑。wordpress在安装时会向数据库中写明站点URL,在站点迁移或者想同时部署多个靶机时,会出先因为IP地址和URL地址不一致问题,导致无法正常使用。如原始服务器IP为192.168.222.13。当站点被迁移到其他机器,服务器IP变更为192.168.222.133时候,你再访问http://192.168.222.133/便会出现如下情况:站点无法正常显示,而且很慢。

FFMPEG任意文件读取漏洞靶场搭建过程

访问后台地址http://192.168.222.133/wp-admin/,网站会自动跳转到初始配置IP。

http://192.168.222.133/wp-login.php?redirect_to=http%3A%2F%2F192.168.222.13%2Fwp-admin%2F&reauth=1

FFMPEG任意文件读取漏洞靶场搭建过程

这样肯定不行呀,怎么解决楠?

参考了网上提供的方法,不太实用需求,这里也说下吧。对于个人的站点,可通过进入后台修改(此方法不适用于黑盒实验)

WordPress支持自动重定位方法,该方法可自动计算定位并更新定位值。将网站从一台服务器重新定位到另一台服务器上时,该方法能够快速协助网站开始运行。用法如下:

1.、编辑wp-config.php 文件,在“define”语句后添加如下代码:define('RELOCATE',true); 

FFMPEG任意文件读取漏洞靶场搭建过程

2、 在web浏览器中访问wp-login.php页面,进入后台可更改配置IP:

FFMPEG任意文件读取漏洞靶场搭建过程

后来仔细想想,既然配置文件写在数据库中的,那么我完全可以通过动态修改数据库中的数据达到修改IP的目的。过程如下:

在首页包含的代码中增加一条语句自动更新数据库中的URL地址,这里我选择了wp-blog-header.php,只要有人访问网站就会执行这条语句,获取服务器IP并修改配置IP的字段。

FFMPEG任意文件读取漏洞靶场搭建过程

$iipp=$_SERVER['SERVER_ADDR'];
$sql1="UPDATE   `wordpress`.`wp_options` SET `option_value` = 'http://".$iipp."'   WHERE `wp_options`.`option_id` = 1;";
$sql2="UPDATE   `wordpress`.`wp_options` SET `option_value` = 'http://".$iipp."'   WHERE `wp_options`.`option_id` = 2;";
mysql_query($sql1);
mysql_query($sql2);

修改后,便能自动修改后台中的URL。

FFMPEG任意文件读取漏洞靶场搭建过程

这样一来就可以随意更改服务器IP了。

7.  来个小姐

搭建靶机是个细活儿,需要多研究漏洞原理并理解相关利用方法。这是一个很简单的环境但牵扯到很多细节的东西。所以还是很佩服那些CTF出题的老师们。




原文发布时间为:2017年9月4日
本文作者:whoamiecho
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
编解码 安全 Shell
CVE-2017-9993ffmpeg 任意文件读取漏洞环境
漏洞描述 2.8.12之前的FFmpeg、3.1.9之前的3.0.x和3.1.x、3.2.6之前的3.2.x和3.3.2之前的3.3.x未正确限制HTTP Live Streaming文件扩展名和解复用器名称,这允许攻击者通过特制的播放列表数据读取任意文件。 环境搭建可以查看我的这篇文章 https://developer.aliyun.com/article/1113693?spm=a2c6h.26396819.creator-center.8.22fb3e18sKKMLR 目录为 /vulhub-master/ffmpeg/phdays 运行命令 ```sh docker-compose
450 0
 CVE-2017-9993ffmpeg 任意文件读取漏洞环境
|
编解码 安全 索引
FFmpeg任意文件读取漏洞分析
这次的漏洞实际上与之前曝出的一个 CVE 非常之类似,可以说是旧瓶装新酒,老树开新花。 之前漏洞的一篇分析文章: SSRF 和本地文件泄露(CVE-2016-1897/8)http://static.hx99.net/static/drops/papers-15598.html 这个漏洞实际上也是利用了ffmpeg在处理 HLS 播放列表文件的过程中,由于支持非常多的协议,如http、file、concat等等,导致可以构造恶意的url造成 SSRF 攻击和本地文件泄露。
3208 0
|
编解码 安全 索引
FFmpeg任意文件读取漏洞分析
本文讲的是FFmpeg任意文件读取漏洞分析,6月24号的时候hackerone网站上公布了一个ffmpeg的本地文件泄露的漏洞,可以影响ffmpeg很多版本,包括3.2.2、3.2.5、3.1.2、2.6.8等等。
2191 0
|
15天前
|
XML Java Android开发
FFmpeg开发笔记(五十二)移动端的国产视频播放器GSYVideoPlayer
GSYVideoPlayer是一款国产移动端视频播放器,支持弹幕、滤镜、广告等功能,采用IJKPlayer、Media3(EXOPlayer)、MediaPlayer及AliPlayer多种内核。截至2024年8月,其GitHub星标数达2万。集成时需使用新版Android Studio,并按特定步骤配置依赖与权限。提供了NormalGSYVideoPlayer、GSYADVideoPlayer及ListGSYVideoPlayer三种控件,支持HLS、RTMP等多种直播链接。
53 18
FFmpeg开发笔记(五十二)移动端的国产视频播放器GSYVideoPlayer
|
14天前
|
Linux 开发工具 Android开发
FFmpeg开发笔记(五十三)移动端的国产直播录制工具EasyPusher
EasyPusher是一款国产RTSP直播录制推流客户端工具,支持Windows、Linux、Android及iOS等系统。尽管其GitHub仓库(安卓版:https://github.com/EasyDarwin/EasyPusher-Android)已多年未更新,但通过一系列改造,如升级SDK版本、迁移到AndroidX、指定本地NDK版本及更新Gradle版本等,仍可在最新Android Studio上运行。以下是针对Android Studio Dolphin版本的具体改造步骤。
40 3
FFmpeg开发笔记(五十三)移动端的国产直播录制工具EasyPusher
|
29天前
|
编解码 移动开发 安全
FFmpeg开发笔记(五十)聊聊几种流媒体传输技术的前世今生
自互联网普及以来,流媒体技术特别是视频直播技术不断进步,出现了多种传输协议。早期的MMS由微软主导,但随WMV格式衰落而减少使用。RTSP由网景和RealNetworks联合提出,支持多种格式,但在某些现代应用中不再受支持。RTMP由Adobe开发,曾广泛用于网络直播,但因HTML5不支持Flash而受影响。HLS由苹果开发,基于HTTP,适用于点播。SRT和RIST均为较新协议,强调安全与可靠性,尤其SRT在电视直播中应用增多。尽管RTMP仍占一定市场,但SRT等新协议正逐渐兴起。
67 8
FFmpeg开发笔记(五十)聊聊几种流媒体传输技术的前世今生
|
13天前
|
编解码 API 数据安全/隐私保护
FFmpeg开发笔记(五十四)使用EasyPusher实现移动端的RTSP直播
【9月更文挑战第21天】本文介绍了如何使用FFmpeg和EasyPusher实现移动端RTSP直播。首先概述了EasyPusher的功能及其API,接着详细描述了安装FFmpeg、获取EasyPusher库、初始化对象、打开输入流、配置推送参数及读取推送帧的具体步骤,并提醒开发者注意网络环境、编码参数和权限管理等问题,以确保直播质量与稳定性。
|
1月前
|
Web App开发 Java 视频直播
FFmpeg开发笔记(四十九)助您在毕业设计中脱颖而出的几个流行APP
对于软件、计算机等专业的毕业生,毕业设计需实现实用软件或APP。新颖的设计应结合最新技术,如5G时代的音视频技术。示例包括: 1. **短视频分享APP**: 集成FFmpeg实现视频剪辑功能,如添加字幕、转场特效等。 2. **电商购物APP**: 具备直播带货功能,使用RTMP/SRT协议支持流畅直播体验。 3. **同城生活APP**: 引入WebRTC技术实现可信的视频通话功能。这些应用不仅实用,还能展示开发者紧跟技术潮流的能力。
69 4
FFmpeg开发笔记(四十九)助您在毕业设计中脱颖而出的几个流行APP
|
2月前
|
JavaScript 前端开发 Java
FFmpeg开发笔记(四十七)寒冬下安卓程序员的几个技术转型发展方向
IT寒冬使APP开发门槛提升,安卓程序员需转型。选项包括:深化Android开发,跟进Google新技术如Kotlin、Jetpack、Flutter及Compose;研究Android底层框架,掌握AOSP;转型Java后端开发,学习Spring Boot等框架;拓展大前端技能,掌握JavaScript、Node.js、Vue.js及特定框架如微信小程序、HarmonyOS;或转向C/C++底层开发,通过音视频项目如FFmpeg积累经验。每条路径都有相应的书籍和技术栈推荐,助你顺利过渡。
45 3
FFmpeg开发笔记(四十七)寒冬下安卓程序员的几个技术转型发展方向
|
2月前
|
Web App开发 Android开发
FFmpeg开发笔记(四十六)利用SRT协议构建手机APP的直播Demo
实时数据传输在互联网中至关重要,不仅支持即时通讯如QQ、微信的文字与图片传输,还包括音视频通信。一对一通信常采用WebRTC技术,如《Android Studio开发实战》中的App集成示例;而一对多的在线直播则需部署独立的流媒体服务器,使用如SRT等协议。SRT因其优越的直播质量正逐渐成为主流。本文档概述了SRT协议的使用,包括通过OBS Studio和SRT Streamer进行SRT直播推流的方法,并展示了推流与拉流的成功实例。更多细节参见《FFmpeg开发实战》一书。
43 1
FFmpeg开发笔记(四十六)利用SRT协议构建手机APP的直播Demo
下一篇
无影云桌面