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类型。
调用链分析
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=registerpayment_gateway=paypal- 有效的
_wpnonce参数(通过wp_verify_nonce验证) user_login(值不能重复)iv_member_email(如aaaa)iv_member_password
-
上传的文件需要绕过
mime_content_type检测
漏洞利用方法
MIME类型绕过技术
mime_content_type函数通过读取文件头部信息判断MIME类型,可以通过以下方法绕过:
- 在恶意文件开头添加垃圾数据污染检测
- 构造复合文件格式,使文件头部看起来像合法类型
利用步骤
-
构造POST请求访问网站首页
-
设置必要的参数:
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 -
上传包含以下内容的PHP文件:
[垃圾数据]<?php phpinfo(); ?> -
访问上传的文件路径执行任意代码
防御措施
- 严格限制上传文件类型,不仅检查MIME类型,还应检查文件扩展名
- 对上传文件进行重命名,避免直接使用用户提供的文件名
- 将上传文件存储在非Web可访问目录
- 使用文件内容检测而非仅依赖MIME类型
- 实施文件内容扫描和病毒检测
总结
该漏洞利用WordPress插件中不严格的MIME类型检查,通过污染文件头部信息绕过安全限制。攻击者可以上传恶意脚本获取服务器控制权。建议用户及时更新插件或实施上述防御措施。