本质:用户可通过伪造后缀、文件类型等方式上传恶意代码
/
文件,一般来说通过上传
webshell
;
一般出现在,头像上传、用户个人信息、文件处理(交接、存储、管理)、注册、申请;
$_FILE
预定义变量
黑白名单
黑名单:不允许上传文件类型
白名单:仅允许上传的文件类型
绕过
1
、
js
绕过
①修改
js
文件
直接删除
js
触发条件即可
②抓包重放
提交正常数据,再重放数据包
③禁用
js
使用插件禁用
js
,或使用浏览器配置禁用
如何区分前后端校验:
正常上传数据包,有校验提示,但无数据包的传递,此时可判断为
js
校验(部分服务器前后都校验)
2
、
mime type
限制,文件类型限制,直接修改类型即可
图片相关
mime
类型:
image/gif
、
image/png
、
image/jpeg
3
、黑名单限制
①尝试生僻后缀:
.phtml
、
.php1-8
、
html
(仅受中间件配置限制,需要在中间件内添加对应配置才能生效,否则无法解析生僻后缀)
②尝试大小写后缀
③
windows
特性
I
、对大小写不敏感
II
、在生成文件的时候自动会去除空格、
III
、在生成文件的时候自动处理文件名后缀的
.(
点
)
,及点空点组合
IV
、
windows
处理文件的时候
”::$DATA“
会把其之后的数据当作文件流处理,不会检测后缀名,同时保持其之前的文件名
IIV
、利用
php+windows
先上传数据包
此时会生成一个空文件
再次上传第二条数据包修改原有文件
此时会重新将文件内容添加进去,此方法适用于上传时源文件名不被修改的情况
④过滤后缀
尝试使用双写或者
4
、白名单限制
①
00
截断
当操作系统识别字符串读到
\0
字符时,意味者停止,结束,通过这个特性可达到
00
截断的目的,或某些
waf
的绕过
条件:
php
版本:小于
5.3.29
magic_quote_gpc:off
get
请求中在
url
地址栏里增加
%00