标签:匹配 WAF 09 jpg filename Content 绕过 php 上传
上传参数名解析:明确哪些内容可以修改
Content-Disposition:一般可更改
name:表单参数值,不能更改
filename:文件名,可以更改
Content-Type:文件MIME,视情况更改
常见绕过方法:
数据溢出-防匹配(xxx...)
大量垃圾数据缓冲溢出等
符号变异-防匹配(' " ;)
在php中,如果上传的文件名缺少后面的引号,就会被误认为是语言中自带的(变量名),不会报错。而安全狗只匹配成对的引号,所以上传"test.php
或'test.php
都可以绕过安全狗。但是如果只有一个引号在文件名后面,就会被拦截,猜想是安全狗匹配引号后,把引号前的值拿出来做判断,符不符合规则,如果触发规则,那么就被拦截。
"x"x.php
""x.php
"x".p hp
数据截断-防匹配(%00 ; 换行)
"a.jpg;.php"
"a.php%00.jpg"
为什么加上;
可以绕过?
因为安全狗匹配到;
就以为文件名到此结束了,对分号前面的文件名进行匹配,发现文件名格式合法,然后就放行,但是数据包把引号内的内容当成一个完整的文件名,上传到服务器,所以绕过了。
filename="
a
.
p
h
p
"
换行在程序代码中表示该行内容结束,安全狗匹配\n
发现并没有数据(没有触发规则),而数据包却能识别这种写法,因此可以实现绕过。
重复数据-防匹配(参数多次)
filename="a.jpg"
Content-Type: iamge/jpeg
那么就可以多写几个参数进去
filename="a.jpg";filename="a.jpg";filename="a.jpg";filename="a.jpg";......
filename="a.php";
或者这样
filename="Content-Disposition: form-data; name="upload_file"x.php"
Content-Type: iamge/jpeg
上述绕过是采用了白名单绕过,借助原有的数据包自带的正常内容作为干扰条件,来实现绕过,也是重复数据的一种应用 。
其他绕过:
filename="Content-Type: iamge/jpeg; name="upload_file"x.php"
filename="/jpeg;/x.php"
FUZZ WEB字典
防护
采用后端验证,如果采用前端验证,可以通过禁用前端脚本来进行绕过。
后缀检测:基于黑名单和白名单进行过滤
MIME检测:基于上传自带类型检测
内容检测:文件头、完整性检测
自带函数过滤:参考uploadlabs
自定义函数过滤
WAF防护产品
标签:匹配,WAF,09,jpg,filename,Content,绕过,php,上传 来源: https://www.cnblogs.com/liuhuan086/p/14733786.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。