ThemeGlow JobBoard Job文件上传漏洞分析(CVE-2024-43243)
字数 1165 2025-08-22 12:23:30

ThemeGlow JobBoard Job文件上传漏洞分析(CVE-2024-43243)

漏洞概述

ThemeGlow JobBoard插件中存在一个文件上传漏洞(CVE-2024-43243),攻击者可以通过构造特殊的文件绕过MIME类型检查,实现任意文件上传,可能导致远程代码执行。

漏洞分析

漏洞触发点

漏洞位于user_profile_image_upload函数中,该函数对上传文件的类型检查存在缺陷:

if( in_array( $new_file_type, get_allowed_mime_types() ) ){
    ......
}

$new_file_type是通过mime_content_type($_FILES['profilepicture']['tmp_name'])获取的,该函数根据文件头部信息判断MIME类型。

调用链分析

  1. paypal-submit.php文件中调用了user_profile_image_upload函数
  2. plugin.php中的jobboard_paypal_form_submit函数导入了paypal-submit.php
  3. 在对象创建时注册了回调函数,该函数在init动作触发时执行
  4. wp-settings.php文件触发了init动作

访问路径

由于wp-settings.php是WordPress的配置文件,访问网站首页即可触发jobboard_paypal_form_submit函数。

漏洞利用条件

  1. 需要POST请求包含参数:

    • iv-submit-listing=register
    • payment_gateway=paypal
    • 有效的_wpnonce参数(通过wp_verify_nonce验证)
    • user_login(值不能重复)
    • iv_member_email(如aaaa)
    • iv_member_password
  2. 上传的文件需要绕过mime_content_type检测

漏洞利用方法

MIME类型绕过技术

mime_content_type函数通过读取文件头部信息判断MIME类型,可以通过以下方法绕过:

  1. 在恶意文件开头添加垃圾数据污染检测
  2. 构造复合文件格式,使文件头部看起来像合法类型

利用步骤

  1. 构造POST请求访问网站首页

  2. 设置必要的参数:

    POST / HTTP/1.1
    Host: target.com
    Content-Type: multipart/form-data
    
    iv-submit-listing=register
    payment_gateway=paypal
    _wpnonce=valid_nonce
    user_login=unique_username
    iv_member_email=test@example.com
    iv_member_password=password
    profilepicture=@malicious.php
    
  3. 上传包含以下内容的PHP文件:

    [垃圾数据]<?php phpinfo(); ?>
    
  4. 访问上传的文件路径执行任意代码

防御措施

  1. 严格限制上传文件类型,不仅检查MIME类型,还应检查文件扩展名
  2. 对上传文件进行重命名,避免直接使用用户提供的文件名
  3. 将上传文件存储在非Web可访问目录
  4. 使用文件内容检测而非仅依赖MIME类型
  5. 实施文件内容扫描和病毒检测

总结

该漏洞利用WordPress插件中不严格的MIME类型检查,通过污染文件头部信息绕过安全限制。攻击者可以上传恶意脚本获取服务器控制权。建议用户及时更新插件或实施上述防御措施。

ThemeGlow JobBoard Job文件上传漏洞分析(CVE-2024-43243) 漏洞概述 ThemeGlow JobBoard插件中存在一个文件上传漏洞(CVE-2024-43243),攻击者可以通过构造特殊的文件绕过MIME类型检查,实现任意文件上传,可能导致远程代码执行。 漏洞分析 漏洞触发点 漏洞位于 user_profile_image_upload 函数中,该函数对上传文件的类型检查存在缺陷: $new_file_type 是通过 mime_content_type($_FILES['profilepicture']['tmp_name']) 获取的,该函数根据文件头部信息判断MIME类型。 调用链分析 paypal-submit.php 文件中调用了 user_profile_image_upload 函数 plugin.php 中的 jobboard_paypal_form_submit 函数导入了 paypal-submit.php 在对象创建时注册了回调函数,该函数在 init 动作触发时执行 wp-settings.php 文件触发了 init 动作 访问路径 由于 wp-settings.php 是WordPress的配置文件,访问网站首页即可触发 jobboard_paypal_form_submit 函数。 漏洞利用条件 需要POST请求包含参数: iv-submit-listing=register payment_gateway=paypal 有效的 _wpnonce 参数(通过 wp_verify_nonce 验证) user_login (值不能重复) iv_member_email (如 aaaa ) iv_member_password 上传的文件需要绕过 mime_content_type 检测 漏洞利用方法 MIME类型绕过技术 mime_content_type 函数通过读取文件头部信息判断MIME类型,可以通过以下方法绕过: 在恶意文件开头添加垃圾数据污染检测 构造复合文件格式,使文件头部看起来像合法类型 利用步骤 构造POST请求访问网站首页 设置必要的参数: 上传包含以下内容的PHP文件: 访问上传的文件路径执行任意代码 防御措施 严格限制上传文件类型,不仅检查MIME类型,还应检查文件扩展名 对上传文件进行重命名,避免直接使用用户提供的文件名 将上传文件存储在非Web可访问目录 使用文件内容检测而非仅依赖MIME类型 实施文件内容扫描和病毒检测 总结 该漏洞利用WordPress插件中不严格的MIME类型检查,通过污染文件头部信息绕过安全限制。攻击者可以上传恶意脚本获取服务器控制权。建议用户及时更新插件或实施上述防御措施。