YouPHPTube-Encoder 2.3 多个远程代码执行漏洞分析(CVE-2019-5127 / CVE-2019-5128 / CVE-2019-5129)
字数 1567 2025-08-26 22:11:34
YouPHPTube-Encoder 2.3 远程代码执行漏洞分析报告
1. 漏洞概述
YouPHPTube-Encoder 2.3版本中存在三个严重的远程代码执行漏洞(CVE-2019-5127、CVE-2019-5128、CVE-2019-5129),这些漏洞允许攻击者通过精心构造的请求在服务器上执行任意命令,且无需任何身份验证。
2. 受影响组件
- YouPHPTube Encoder:YouPHPTube的视频编码器插件
- 版本:2.3
- 核心功能:使用FFmpeg进行视频处理和编码
3. 漏洞详情
3.1 CVE-2019-5127
漏洞位置:/objects/getImage.php
漏洞参数:base64Url
漏洞分析:
- 应用程序从GET请求中获取
base64Url参数 - 对参数进行base64解码后直接用于构建FFmpeg命令
- 未对用户输入进行任何过滤或转义
- 通过
exec()函数执行拼接的命令
漏洞代码关键点:
$url = base64_decode($_GET['base64Url']);
$exec = "ffmpeg -i {$url} -f image2 -s 400x225 -vframes 1 -y {$destination}";
exec($exec);
PoC:
GET /YouPHPTube-Encoder/objects/getImage.php?base64Url=YGVjaG8gdGVzdCB8IHRlZSAtYSBrdW1hbW9uLmZ1bmA=&format=png
3.2 CVE-2019-5128
漏洞位置:/objects/getImageMP4.php
漏洞参数:base64Url
漏洞分析:
- 与CVE-2019-5127类似,但位于不同文件
- 同样存在未过滤的
base64Url参数 - 直接拼接进FFmpeg命令并执行
PoC:
GET /YouPHPTube-Encoder/objects/getImageMP4.php?base64Url=YGVjaG8gMTIzIHwgdGVlIC1hIHRoaXNzeXN0ZW1oYXZlYmVlbmV4cGxvaXRlZDEyMzRg&format=jpg
3.3 CVE-2019-5129
漏洞位置:/objects/getSpiritsFromVideo.php
漏洞参数:base64Url
漏洞分析:
- 与前两个漏洞原理相同
- 不同文件中的相同类型漏洞
PoC:
GET /YouPHPTube-Encoder/objects/getSpiritsFromVideo.php?base64Url=YGVjaG8gMTIzIHwgdGVlIC1hIHRoaXNzeXN0ZW1oYXZlYmVlbmV4cGxvaXRlZDEyMzRg&format=jpg
4. 漏洞利用技术
4.1 命令注入原理
所有三个漏洞都利用了以下技术:
- 通过GET参数
base64Url传递恶意命令 - 命令经过base64编码以绕过简单检测
- 使用反引号(`)或管道符(|)执行额外命令
- 利用FFmpeg命令拼接执行任意系统命令
4.2 攻击向量
攻击者可以:
- 完全控制系统
- 窃取敏感数据
- 建立持久后门
- 发起进一步攻击
5. FFmpeg相关背景
FFmpeg功能:
- 音视频录制、转换和流处理
- 包含先进的编解码库libavcodec
- 支持多种格式和编解码器
典型使用示例:
ffmpeg -i test.asf -y -f image2 -t 0.001 -s 352x240 a.jpg
6. 漏洞修复建议
6.1 临时缓解措施
-
禁用或限制对以下文件的访问:
/objects/getImage.php/objects/getImageMP4.php/objects/getSpiritsFromVideo.php
-
实施Web应用防火墙(WAF)规则,过滤包含命令注入特征的请求
6.2 长期修复方案
- 对所有用户输入进行严格过滤和验证
- 使用PHP的安全函数处理命令参数:
$url = escapeshellarg(base64_decode($_GET['base64Url'])); - 实现最小权限原则,限制Web服务器的执行权限
- 更新到最新版本(如果官方发布了修复版本)
7. 安全编码实践
-
输入验证:
- 对所有用户输入进行严格验证
- 使用白名单而非黑名单方法
-
命令执行安全:
- 使用
escapeshellarg()或escapeshellcmd() - 避免直接拼接用户输入到系统命令
- 使用
-
错误处理:
- 不显示系统错误信息给用户
- 记录详细的错误日志供管理员查看
8. 参考资源
- FFmpeg官方网站:http://ffmpeg.org/download.html
- 思科Talos漏洞报告
- CVE详细信息:
- CVE-2019-5127
- CVE-2019-5128
- CVE-2019-5129
9. 总结
YouPHPTube-Encoder 2.3中的这三个漏洞展示了命令注入攻击的典型模式,强调了正确处理用户输入的重要性。开发人员应始终假设所有用户输入都是恶意的,并采取相应的防护措施。系统管理员应定期检查应用程序的安全性,并及时应用安全补丁。