CVE-2024-4577 是一个影响以下版本 PHP 服务器的安全漏洞:
此漏洞是一个远程代码执行(RCE)缺陷,当在 Windows 服务器上使用 PHP CGI(通用网关接口)时会发生。问题源于由于某些语言设置中使用“最佳匹配”字符映射,导致 Windows 错误解释某些字符。在这种情况下,PHP CGI 模块将恶意字符解释为 PHP 选项,从而允许攻击者在服务器上执行恶意命令。
初始攻击向量:
要利用该漏洞,请在易受攻击站点的 URL 后附加以下字符串:
?%ADd+allow_url_include%3d1+%ADd+auto_prepend_file%3dphp://input
使用 Burp Suite 拦截该请求并将其发送到 Repeater。
更改请求方法: 将拦截到的请求转换为 POST 方法并执行简单的 PHP 代码,例如:
<?php phpinfo();
如果漏洞存在,输出将显示与 PHP 版本相关的信息。
根据攻击者的目标,可以应用多种方法。我的首选方法是使用 Burp Suite 在 Windows 启动目录中定义一个执行项。我将 reverseshell.ps1 脚本转换为可执行文件(exe)并将其放置在该目录中。
类似地,我将 ransomware.ps1 文件上传到系统,并成功外泄了文档,只留下加密版本。
在开始攻击之前,需要启用 4688 日志。在分析 Windows 机器上的 4688 安全日志时,我发现攻击源自 XAMPP 下的 Apache。当我检查 Access.log 文件时,遇到一个返回 200 状态码的异常请求,这促使我在浏览器中搜索该 URL。我识别出该漏洞并采取了预防措施,例如更新 PHP 版本或禁用 PHP CGI 功能。
由于我创建的勒索软件未经混淆,我的代码在 PowerShell 日志中是可见的。这显示了我如何加密数据。要恢复我的数据,我运行 encoded.ps1 文件。
此模拟突出了与 CVE-2024-4577 相关的潜在风险,并强调了保护 PHP 安装的重要性。保持 PHP 更新并防止错误配置 CGI 设置可以有效减少此类漏洞。