PHP是Hypertext Preprocessor(超文本预处理器)的缩写,现是一种广泛使用的开源的脚本语言,它特别适合Web开发和嵌入HTML中,使用起来很简单。 CGI,英文叫做公共网关接口,就是Apache在遇到PHP脚本时会将PHP程序提交给CGI应用程序(php-cgi.exe)解释,解释之后的结果返回给Apache,然后再返回给相应的请求用户。
PHP在设计时忽略了Windows中的Best-Fit字符转换特性。当PHP-CGI在Windows平台上运行并使用特定语系(如简体中文936、繁体中文950、日文932等)时,攻击者可以构造特殊查询字符串。URL解码后,这些字符串可能包含特定非ASCII字符,这些字符在Windows系统上会被映射为连字符,从而绕过CVE-2012-1823及CVE-2012-2311补丁,构造cgi模式的命令行参数,执行任意PHP代码
PHP Windows版 8.3.0 <= 影响版本 < 8.3.8 PHP Windows版 8.2.0 <= 影响版本 < 8.2.20 PHP Windows版 8.1.0 <= 影响版本 < 8.1.29 PHP Windows版 影响版本 == 8.0.x PHP Windows版 影响版本 == 7.x PHP Windows版 影响版本 == 5.x XAMPP Windows版 8.2.0 <= 影响版本 <= 8.2.12 XAMPP Windows版 8.1.0 <= 影响版本 <= 8.1.25 XAMPP Windows版 影响版本 == 8.0.x XAMPP Windows版 影响版本 == 7.x XAMPP Windows版 影响版本 == 5.x
python CVE-2024-4577 --target http://192.168.1.1/index.php -c "<?php system('calc')?>"
注释C:\xampp\apache\conf\extra\httpd-xampp.conf
如下配置后重启服务
#
# PHP-CGI setup
#
# <FilesMatch "\.php$">
# SetHandler application/x-httpd-php-cgi
# </FilesMatch>
# <IfModule actions_module>
# Action application/x-httpd-php-cgi "/php-cgi/php-cgi.exe"
# </IfModule>
注释C:/xampp/apache/conf/extra/httpd-xampp.conf
# ScriptAlias /php-cgi/ "C:/xampp/php/"