CVE-2025-12974CVE-2025-12974是WordPress中极为流行的Gravity Forms插件的一个高危安全漏洞。该漏洞存在于插件的遗留分块上传机制中,由于缺少适当的文件类型验证,攻击者可以上传可执行的.phar文件到服务器。漏洞的根本原因在于插件的扩展名黑名单机制未能将.phar文件纳入禁止上传的列表,而.phar文件在某些服务器配置下可以被PHP解析执行,从而导致远程代码执行(RCE)。由于该漏洞利用无需认证,且攻击复杂度较低(AV:N/AC:H),对互联网上的WordPress网站构成严重威胁。攻击者需要能够发现或枚举上传路径才能完成利用,但如果Web服务器配置为通过文件处理器映射等方式将.phar文件作为PHP处理,攻击者即可在服务器上执行任意代码,完全控制受影响的系统。
该漏洞的核心问题在于Gravity Forms插件的分块上传功能(legacy chunked upload mechanism)中的文件验证机制不完善。在文件上传处理流程中,插件虽然维护了一个禁止上传的扩展名黑名单,但该黑名单并未包含.phar文件格式。攻击者可以利用分块上传机制绕过常规的文件上传检查,将.php或.phar等可执行文件上传至服务器。具体来说,问题出现在includes/upload.php文件的第97行附近,代码在处理分块上传时未能正确验证文件扩展名。攻击者构造恶意请求,将包含恶意代码的.phar文件作为上传内容,服务器在接收并存储该文件后,如果Web服务器配置将.phar文件通过PHP文件处理器处理(如AddType application/x-httpd-php .phar或类似配置),则访问该.phar文件将触发PHP代码执行,从而在服务器端执行任意命令。