干货 | 最全的文件上传漏洞之WAF拦截绕过总结_文件上传数据包-CSDN博客
WAF绕过
1.WAF绕过解释
waf绕过其实就是将数据包截获到,对里面的内容进行解析,比如对文件的后缀名就判断是否在相应的黑名单中,文件内容中是否存在webshell代码。
总的来说文件上传都是在数据包中进行各种操作来进行绕过。
2.上传参数名解析
Content-Disposition :一般可更改
name:表单参数值,不能更改
filename:文件名,可以更改
Content-Type:文件MIME,视情况更改
3.绕过方式
3.1.数据溢出
5.3.1.1.form-data与name之间
在form-data;与name=“upload_file”; filename=“2.php"之间添加大量的垃圾数据,可以边添加边测试直到上传上去,主要添加的垃圾数据需要在后面添加一个”;"进行结尾。
例如:
form-data;sadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasA; name="upload_file"; filename="2.php"
3.1.2.name与filename之间
当然这里不单单可以插入在form-data;与name=“upload_file”; filename="2.php"之间,也可以在name=“upload_file”; 与filename="2.php"之间。但是数据不能乱插入,比如你插在2.php中,那肯定不行,一般情况下,文件名称长度都可能存在限制,并且太长也上传不上去。
例如:
Content-Disposition: form-data; name="upload_file"; sadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasA; filename="2.php"
3.2.符号变异
3.2.1.filename符号变异
符号变异也就是将单双引号变换使用,或者单双引号缺失一部分进行使用,或者不使用单双引号来进行绕过。目前测试好像是无法通过了。
Content-Disposition: form-data; name="upload_file"; filename="2.php
Content-Disposition: form-data; name="upload_file"; filename=’2.php
Content-Disposition: form-data; name="upload_file"; filename=2.php
3.2.2.form-data符号变异
Content-Disposition:"form-data"; name=upload_file; filename="2.php"
Content-Disposition:’form-data’; name="upload_file"; filename=’2.php’
3.3.数据截断
3.3.1.回车换行
通过换行来实现绕过,但是中间不能有空行。
例如:
Content-Disposition: form-data; name="upload_file"; filename="2.
p
h
p"
3.3.2.分号截断
若WAF匹配文件名到分号截止,则可以绕过。
3.4.字段名变换
3.4.1.大小写变换
对这三个字段进行大小写进行变换,比如将name换成Name、Content-Disposition换成content-disposition等等。
3.4.2.顺序颠倒
针对name和filename这两个字段,我们可以尝试交换name和filename的顺序。(由于有规定Content-Dispositon必须在前面,因此我们不能修改该字段的内容)
3.5.重复数据
通过设置多个参数进行匹配,避免被匹配到。
Content-Disposition: form-data; name="upload_file";filename="2.jpg";filename="2.jpg";filename="2.jpg";filename="2.jpg";……filename="2.php";
原文可以看
文件上传漏洞详解-CSDN博客
的5.WAF绕过