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

漏洞分析

  1. 应用程序从GET请求中获取base64Url参数
  2. 对参数进行base64解码后直接用于构建FFmpeg命令
  3. 未对用户输入进行任何过滤或转义
  4. 通过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

漏洞分析

  1. 与CVE-2019-5127类似,但位于不同文件
  2. 同样存在未过滤的base64Url参数
  3. 直接拼接进FFmpeg命令并执行

PoC

GET /YouPHPTube-Encoder/objects/getImageMP4.php?base64Url=YGVjaG8gMTIzIHwgdGVlIC1hIHRoaXNzeXN0ZW1oYXZlYmVlbmV4cGxvaXRlZDEyMzRg&format=jpg

3.3 CVE-2019-5129

漏洞位置/objects/getSpiritsFromVideo.php

漏洞参数base64Url

漏洞分析

  1. 与前两个漏洞原理相同
  2. 不同文件中的相同类型漏洞

PoC

GET /YouPHPTube-Encoder/objects/getSpiritsFromVideo.php?base64Url=YGVjaG8gMTIzIHwgdGVlIC1hIHRoaXNzeXN0ZW1oYXZlYmVlbmV4cGxvaXRlZDEyMzRg&format=jpg

4. 漏洞利用技术

4.1 命令注入原理

所有三个漏洞都利用了以下技术:

  1. 通过GET参数base64Url传递恶意命令
  2. 命令经过base64编码以绕过简单检测
  3. 使用反引号(`)或管道符(|)执行额外命令
  4. 利用FFmpeg命令拼接执行任意系统命令

4.2 攻击向量

攻击者可以:

  1. 完全控制系统
  2. 窃取敏感数据
  3. 建立持久后门
  4. 发起进一步攻击

5. FFmpeg相关背景

FFmpeg功能

  • 音视频录制、转换和流处理
  • 包含先进的编解码库libavcodec
  • 支持多种格式和编解码器

典型使用示例

ffmpeg -i test.asf -y -f image2 -t 0.001 -s 352x240 a.jpg

6. 漏洞修复建议

6.1 临时缓解措施

  1. 禁用或限制对以下文件的访问:

    • /objects/getImage.php
    • /objects/getImageMP4.php
    • /objects/getSpiritsFromVideo.php
  2. 实施Web应用防火墙(WAF)规则,过滤包含命令注入特征的请求

6.2 长期修复方案

  1. 对所有用户输入进行严格过滤和验证
  2. 使用PHP的安全函数处理命令参数:
    $url = escapeshellarg(base64_decode($_GET['base64Url']));
    
  3. 实现最小权限原则,限制Web服务器的执行权限
  4. 更新到最新版本(如果官方发布了修复版本)

7. 安全编码实践

  1. 输入验证

    • 对所有用户输入进行严格验证
    • 使用白名单而非黑名单方法
  2. 命令执行安全

    • 使用escapeshellarg()escapeshellcmd()
    • 避免直接拼接用户输入到系统命令
  3. 错误处理

    • 不显示系统错误信息给用户
    • 记录详细的错误日志供管理员查看

8. 参考资源

  1. FFmpeg官方网站:http://ffmpeg.org/download.html
  2. 思科Talos漏洞报告
  3. CVE详细信息:
    • CVE-2019-5127
    • CVE-2019-5128
    • CVE-2019-5129

9. 总结

YouPHPTube-Encoder 2.3中的这三个漏洞展示了命令注入攻击的典型模式,强调了正确处理用户输入的重要性。开发人员应始终假设所有用户输入都是恶意的,并采取相应的防护措施。系统管理员应定期检查应用程序的安全性,并及时应用安全补丁。

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() 函数执行拼接的命令 漏洞代码关键点 : PoC : 3.2 CVE-2019-5128 漏洞位置 : /objects/getImageMP4.php 漏洞参数 : base64Url 漏洞分析 : 与CVE-2019-5127类似,但位于不同文件 同样存在未过滤的 base64Url 参数 直接拼接进FFmpeg命令并执行 PoC : 3.3 CVE-2019-5129 漏洞位置 : /objects/getSpiritsFromVideo.php 漏洞参数 : base64Url 漏洞分析 : 与前两个漏洞原理相同 不同文件中的相同类型漏洞 PoC : 4. 漏洞利用技术 4.1 命令注入原理 所有三个漏洞都利用了以下技术: 通过GET参数 base64Url 传递恶意命令 命令经过base64编码以绕过简单检测 使用反引号( ` )或管道符(|)执行额外命令 利用FFmpeg命令拼接执行任意系统命令 4.2 攻击向量 攻击者可以: 完全控制系统 窃取敏感数据 建立持久后门 发起进一步攻击 5. FFmpeg相关背景 FFmpeg功能 : 音视频录制、转换和流处理 包含先进的编解码库libavcodec 支持多种格式和编解码器 典型使用示例 : 6. 漏洞修复建议 6.1 临时缓解措施 禁用或限制对以下文件的访问: /objects/getImage.php /objects/getImageMP4.php /objects/getSpiritsFromVideo.php 实施Web应用防火墙(WAF)规则,过滤包含命令注入特征的请求 6.2 长期修复方案 对所有用户输入进行严格过滤和验证 使用PHP的安全函数处理命令参数: 实现最小权限原则,限制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中的这三个漏洞展示了命令注入攻击的典型模式,强调了正确处理用户输入的重要性。开发人员应始终假设所有用户输入都是恶意的,并采取相应的防护措施。系统管理员应定期检查应用程序的安全性,并及时应用安全补丁。