Share
## https://sploitus.com/exploit?id=9BBCF546-E805-5C57-93B0-9AF2DED1F491
# PHP-CGI Windows平台远程代码执行漏洞(CVE-2024-4577)


### 简介
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')?>"`

![alt text](successful-1.png)

#### 修复

注释`C:\xampp\apache\conf\extra\httpd-xampp.conf`如下配置后重启服务
```txt
#
# 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`

```txt
# ScriptAlias /php-cgi/ "C:/xampp/php/"
```