jQuery-File-Upload <= 9.x 远程命令执行漏洞 (ImageMagick/Ghostscript)
字数 1059 2025-08-27 12:33:42

jQuery-File-Upload <= 9.x 远程命令执行漏洞分析

漏洞概述

jQuery-File-Upload 是一个流行的文件上传组件,在版本9.x及以下存在一个严重的远程命令执行漏洞。该漏洞源于组件在处理上传图片时使用了存在安全问题的ImageMagick/Ghostscript库,攻击者可以通过上传恶意构造的图片文件来执行任意系统命令。

漏洞细节

漏洞位置

漏洞位于 /server/php/UploadHandler.php 文件中的 get_image_size 方法。该方法优先使用Imagick来校验上传的图片:

protected function get_image_size($file_path) {
    if ($this->options['image_library']) {
        if (extension_loaded('imagick')) {
            $image = new \Imagick();
            try {
                if (@$image->pingImage($file_path)) {
                    $dimensions = array($image->getImageWidth(), $image->getImageHeight());
                    $image->destroy();
                    return $dimensions;
                }
                return false;
            } catch (\Exception $e) {
                error_log($e->getMessage());
            }
        }
        // 其他代码...
    }
    // 其他代码...
}

漏洞成因

ImageMagick/Ghostscript存在多个已知的安全漏洞:

  1. Ghostscript的-dSAFER沙箱绕过问题
  2. ImageMagick的popen() shell注入漏洞(通过文件名)

当jQuery-File-Upload使用这些库处理上传的图片时,攻击者可以构造特殊的图片文件触发这些漏洞,导致远程命令执行。

漏洞利用

攻击者可以通过以下步骤利用该漏洞:

  1. 构造一个包含恶意代码的图片文件
  2. 通过jQuery-File-Upload组件的上传功能上传该文件
  3. 当服务器使用ImageMagick/Ghostscript处理该图片时,恶意代码将被执行

修复方案

临时修复

/server/php/UploadHandler.php中的默认图片处理库修改为GD库:

// 设置为0使用GD库处理图片
// 设置为1使用imagick(如果已安装,否则回退到GD)
// 设置为2直接使用ImageMagick convert二进制文件
'image_library' => 0

彻底修复

  1. 升级jQuery-File-Upload到最新版本(v9.22.2或更高)
  2. 升级ImageMagick/Ghostscript到已修复相关漏洞的版本
  3. 如果不需要处理图片,完全禁用ImageMagick/Ghostscript相关功能

参考链接

  1. More Ghostscript Issues: Should we disable PS coders in policy.xml by default?
  2. CVE Request - multiple ghostscript -dSAFER sandbox problems
  3. CVE Request: GraphicsMagick and ImageMagick popen() shell vulnerability via filename

测试环境

VulnSpy提供了在线测试环境:
https://www.vulnspy.com/cn-jquery-file-upload-below-v9.x-rce/

jQuery-File-Upload <= 9.x 远程命令执行漏洞分析 漏洞概述 jQuery-File-Upload 是一个流行的文件上传组件,在版本9.x及以下存在一个严重的远程命令执行漏洞。该漏洞源于组件在处理上传图片时使用了存在安全问题的ImageMagick/Ghostscript库,攻击者可以通过上传恶意构造的图片文件来执行任意系统命令。 漏洞细节 漏洞位置 漏洞位于 /server/php/UploadHandler.php 文件中的 get_image_size 方法。该方法优先使用Imagick来校验上传的图片: 漏洞成因 ImageMagick/Ghostscript存在多个已知的安全漏洞: Ghostscript的 -dSAFER 沙箱绕过问题 ImageMagick的 popen() shell注入漏洞(通过文件名) 当jQuery-File-Upload使用这些库处理上传的图片时,攻击者可以构造特殊的图片文件触发这些漏洞,导致远程命令执行。 漏洞利用 攻击者可以通过以下步骤利用该漏洞: 构造一个包含恶意代码的图片文件 通过jQuery-File-Upload组件的上传功能上传该文件 当服务器使用ImageMagick/Ghostscript处理该图片时,恶意代码将被执行 修复方案 临时修复 将 /server/php/UploadHandler.php 中的默认图片处理库修改为GD库: 彻底修复 升级jQuery-File-Upload到最新版本(v9.22.2或更高) 升级ImageMagick/Ghostscript到已修复相关漏洞的版本 如果不需要处理图片,完全禁用ImageMagick/Ghostscript相关功能 参考链接 More Ghostscript Issues: Should we disable PS coders in policy.xml by default? CVE Request - multiple ghostscript -dSAFER sandbox problems CVE Request: GraphicsMagick and ImageMagick popen() shell vulnerability via filename 测试环境 VulnSpy提供了在线测试环境: https://www.vulnspy.com/cn-jquery-file-upload-below-v9.x-rce/