关于PHP CGI Windows平台远程代码执行漏洞(CVE-2024-4577)简要说明

admin 2024年6月7日23:40:30评论56 views字数 1658阅读5分31秒阅读模式

漏洞信息


2024年06月06日DEVCORE组织发布了漏洞通报,称其报送了PHP CGI Windows平台远程代码执行漏洞(CVE-2024-4577。并且PHP官方也在当天发布了修复版本。
漏洞的本质就是基于CVE-2012-1823的基础上结合Windows字符编码的Best Fit特性,对其已发布的补丁进行绕过,从而继续在PHP- CGI环境下进行参数拼接,达到远程代码执行的目的。
该漏洞要求Windows操作系统需为:繁体中文、简体中文、日文,这三个其中之一的语言版本。

漏洞影响版本如下(XAMPP默认安装的配置下可以直接利用):

        PHP 8.3 < 8.3.8              
        PHP 8.2 < 8.2.20              
        PHP 8.1 < 8.1.29

简要说明

CVE-2012-1823

早在2017年PHITHON师傅已经对CVE-2012-1823漏洞进行过分析和文章分享。

简要概括就是,当将PHP的环境设为CGI模式下运行时,请求参数部分就会带入作为php-cgi.exe的参数,因此可以通过-d来设定参数allow_url_includeauto_prepend_file(勾起N年前学文件包含的回忆),将完整的参数信息(需要URL编码)带入到请求参数中,发送请求达到代码执行的目的。    

关于PHP CGI Windows平台远程代码执行漏洞(CVE-2024-4577)简要说明

CVE-2024-4577

补丁分析

根据PHP漏洞修复的Commit提交信息来看,在cgi_main.c文件中,原有的逻辑新增了对Windows环境的单独逻辑判断,并且其中对请求参数使用了WideCharToMultiByte函数,即宽字节的转换。

关于PHP CGI Windows平台远程代码执行漏洞(CVE-2024-4577)简要说明

因此结合已知的漏洞信息,确认此处是编码问题导致的。也就表示我们需要绕过的逻辑是if(*p == '-'),即请求参数第一个字符不能为-

结合补丁信息我们知道在带入参数拼接前,宽字节会被转换。所以,以简体中文的Windows版本(在Windows中使用Page 936表示GBK编码)为例,对应的编码表信息,我们可以在该链接中找到:https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit936.txt    

关于PHP CGI Windows平台远程代码执行漏洞(CVE-2024-4577)简要说明

通过搜索我们得知0x00ad可以被解码为0x002d也就是上文中提到的-符号。

漏洞复现

下载安装XAMPP,配置好Apache的配置文件httpd-xampp.conf,使得其以CGI模式来运行.php文件。

关于PHP CGI Windows平台远程代码执行漏洞(CVE-2024-4577)简要说明

基于CVE-2012-1823将请求参数中的-替换为%ad,带入尝试发现漏洞成功复现,也就验证了我们之前的分析。    

关于PHP CGI Windows平台远程代码执行漏洞(CVE-2024-4577)简要说明

总结

漏洞场景实际有两种,这点在DEVCORE的漏洞通报中也提到了。由于漏洞影响面积较大,因此本文仅做第一点场景的说明。
抛开漏洞场景,这个漏洞启发了我,要熟悉了解各类机制、特性,组合起来就可能导致某些已修复的漏洞被再次利用。

最后引用猪猪侠的话:知识面决定攻击面。

参考链接
DEVCORE组织发布的漏洞通报:https://devco.re/blog/2024/06/06/security-alert-cve-2024-4577-php-cgi-argument-injection-vulnerability/
PHP漏洞修复的Commit提交信息:https://github.com/php/php-src/commit/4dd9a36c16#diff-680b80075cd2f8c1bbeb33b6ef6c41fb1f17ab98f28e5f87d12d82264ca99729R1798

PHP-CGI远程代码执行漏洞(CVE-2012-1823)分析:https://www.leavesongs.com/PENETRATION/php-cgi-cve-2012-1823.html    

原文始发于微信公众号(中孚安全技术研究):关于PHP CGI Windows平台远程代码执行漏洞(CVE-2024-4577)简要说明

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年6月7日23:40:30
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   关于PHP CGI Windows平台远程代码执行漏洞(CVE-2024-4577)简要说明https://cn-sec.com/archives/2829376.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息